¿Entonces quieres ser desarrollador?
He trabajado con varios DBA a lo largo de los años que querían hacer esta transición. Para el caso, he trabajado con QA, Product Managers y System Admins buscando la misma transición. Yo mismo estuve una vez en este lugar. Siempre es difícil que la gente te vea como otra cosa, cuando tu historia dice lo contrario. Incluso más de 20 años después, algunas personas todavía me ven como un técnico de soporte técnico, pensando que mi mayor habilidad es la capacidad de salvarlos del virus que instalaron sin darse cuenta.
Las secuencias de comandos no hacen un desarrollador
- ¿Cómo se comienza una carrera después de SER civil?
- Siento que mi jefe solo me está usando para hacer crecer su carrera. ¿Qué tengo que hacer?
- ¿Serán útiles las habilidades de Amazon Web Services en el futuro? ¿Qué tipos de trabajos hay disponibles?
- Cómo convertirse en periodista (político / defensa) en India
- ¿Todavía te toma cuatro años de universidad obtener tu licenciatura en enfermería si ya tienes tu título de asociado en enfermería? Quiero ser una enfermera practicante neonatal. Necesito saber qué grados necesito para convertirme en una Enfermera Neonatal.
Sin embargo, la verdad en la mayoría de los casos ha sido que no estaban listos para hacer la transición. Habían aprendido a codificar hasta cierto punto en el proceso de gestión de servidores y datos. Habían escrito muchos guiones para automatizar tareas y habían escrito procedimientos almacenados para administrar datos. En algunos casos, esta tarea es aún más complicada de lo que un desarrollador de aplicaciones podría tener que hacer. Sin embargo, estas tareas no lo preparan para compilar y aplicar.
Mientras trabajaba como gerente para un equipo que escribía Perl, uno de los mayores desafíos que enfrentamos fue separar los DBA y los administradores del sistema de los desarrolladores reales. Perl es un lenguaje común de elección con DBA y administradores del sistema para escribir scripts de automatización del sistema. Cuando llegaron a una entrevista, se hizo evidente muy rápidamente que si bien pudieron haber escrito miles de líneas de código, no tenían el conocimiento necesario para contribuir en un equipo de desarrollo. Nunca antes habían creado una aplicación.
Escribe una solicitud
Entonces, para comenzar su transición, escriba una aplicación. El único desarrollador que conocí que realizó con éxito la transición de DBA a desarrollador hizo exactamente eso. En el proceso de su aprendizaje, así como en la automatización de su trabajo, eventualmente construyó una aplicación de pila completa que simplificó la administración de una gran granja de servidores. La aplicación gestionaba tareas desde la creación de imágenes de nuevos servidores y la asignación de recursos hasta la gestión de inventario. Incluía algo de monitoreo, pero se integraba principalmente con las herramientas existentes.
Esta no era solo una gran colección de scripts, que automatizaba todas estas tareas. Era una aplicación de pila completa con una interfaz web y una integración de base de datos. Usó un marco MVC común. No reinventó la rueda, sino que utilizó las herramientas existentes cuando fue posible, pero proporcionó una interfaz común para administrar esas herramientas. Finalmente, esta no era una aplicación demasiado compleja, sino lo suficiente como para demostrar que podía construir aplicaciones de pila completa.
Estudiar informática
Muchos desarrolladores autodidactas sufren de una brecha de conocimiento. Es posible que sepan codificar, y pueden ser muy buenos para solucionar problemas y depurar código. Sin embargo, se retienen sin ningún conocimiento de los principios de la Ciencia de la Computación. Esto se vuelve más claro cuando entras en una discusión con alguien que tiene conocimientos de informática. Sin este lenguaje común, se hace muy difícil discutir conceptos avanzados en diseño de software.
Un ejemplo de esto fue un desarrollador que quería presentar un error con Intel porque su procesador estaba “roto”. El código era “perfecto” que había verificado y verificado dos veces. Eventualmente, hizo lo que cualquier buen codificador haría y simplificó hasta que tuvo un código muy pequeño que demostró el problema repetidamente. Y tenía razón en que el código no estaba devolviendo los resultados que cualquier persona normal esperaría. La división de dos números estaba devolviendo una respuesta matemáticamente incorrecta. El resultado de coma flotante fue inexacto y “fue claramente una falla en el procesador Intel”. No había estudiado Ciencias de la Computación, por lo que no sabía que los números de coma flotante en informática son, por diseño, inexactos. Este desarrollador había sido el único responsable del código que administraba nuestro sistema de facturación. Ya no era un misterio por qué nuestras finanzas no se acumulaban correctamente. Pronto fue reemplazado.
La informática es una categoría amplia de temas, pero para empezar, aquí hay algunas áreas que debe estudiar.
- Patrones de diseño
- Ser capaz de discutir e implementar Singleton, Factory, Object Pool, Decorator, Iterator, Template Method, Private Class Data
- Matemáticas discretas
- Conocer la teoría de conjuntos, la lógica, la probabilidad, la teoría de números, la teoría de grafos
- Complejidad del programa
- Ser capaz de discutir la complejidad algorítmica en notación Big O
- Programación orientada a objetos
- Conozca los principios, fortalezas y debilidades de este paradigma.
- Programacion Funcional
- Conozca los principios, fortalezas y debilidades de este paradigma.
- Modelado de datos, ORM y desajuste de impedancia relacional de objetos
- Este debería ser tu fuerte como ex DBA, pero debes entenderlo bien desde la perspectiva del desarrollo de software.
- Estructuras de datos avanzadas, contenedores: fortalezas y debilidades
- No hay una gran estructura de datos a pesar de lo que PHP te haría creer.
- Escalar, Lista, Lista vinculada, Diccionario / Mapa, Varias estructuras de árbol
- Debe saber por qué, cuándo y cuándo no usar cada tipo de Colección en la biblioteca estándar de Java
- Algoritmos
- Clasificación, transversal del árbol, algoritmos gráficos
- Fundamentos del sistema operativo
- Pila, montón, llamadas al sistema, interrupciones, caché, disco IO, red IO
- Autómatas, gramáticas, expresiones regulares y computabilidad
- Estos forman la base de la informática.
- Expresiones regulares no es exactamente lo que piensas.
Será fundamental para su capacidad de entrevistar, y más tarde su capacidad para trabajar con otros desarrolladores que tenga una comprensión firme de los conceptos anteriores. Ninguno de los cuales habrá llegado naturalmente a ser autodidacta, o incluso en su campo de entrenamiento de software. Varias universidades importantes, como Stanford, ofrecen cursos gratuitos en línea sobre los temas anteriores.
https://www.class-central.com/pr…
Si bien es posible que no necesite y use todo lo anterior para asegurar su primer trabajo, con el conocimiento anterior en su haber, sin duda será un desarrollador de software, y será claro para las personas con las que se entreviste, ese es el caso. Las preguntas sobre estos temas predominan en el proceso de la entrevista, y eludir incluso uno o dos lo relanzará como DBA o no programador. Además, estos temas sin duda mejorarán su capacidad de trabajar con otros desarrolladores en el trabajo.
Eliminar su currículum
El currículum que utilizó para asegurar sus puestos de DBA, el que le garantiza que podría asegurar otro puesto mañana si fuera necesario, no tiene ningún valor en su esfuerzo por asegurar un empleo como desarrollador. En verdad, es perjudicial para ese esfuerzo. Un currículum en blanco le dará una mejor oportunidad de asegurar su posición de desarrollo que un currículum de DBA.
Necesita escribir un currículum de desarrollador de software. Esto será muy difícil al principio, ya que no tiene puestos de trabajo como desarrollador de software. Es muy parecido a tu primer currículum fuera de la universidad, antes de tener experiencia en DBA. Tiene experiencia en algunos conceptos de desarrollo, por lo que necesita encontrar formas de resaltar esa experiencia. Será razonable incluir algunos de sus esfuerzos para automatizar las tareas de DBM, pero no debería dominar el nuevo currículum. El nuevo currículum debe ser altamente la aplicación que ha escrito y los esfuerzos que ha realizado para convertirse en un programador de nivel de entrada.
Verdad dura y fría
Puede ser un DBA principal o principal de primer nivel, de hecho, puede ser un excelente codificador. Sus años de experiencia como DBA han aumentado su salario. Pero tal como está, usted es un programador junior en el mejor de los casos, por ahora. Es probable que deba reducir su salario para realizar la transición. Sin embargo, esto está bien, porque una vez que realice la transición, su compensación aumentará rápidamente a medida que se convierta en un desarrollador probado.
Deja tu empresa actual
Es desafortunado que aquellos que te conocen mejor no puedan verte para el desarrollador en el que te has convertido, pero esa es la realidad. Para ellos eres y siempre serás, el DBA. Para realmente hacer el cambio, deberá trabajar con un nuevo grupo de personas que no lo conocen como el DBA. Más allá de la incapacidad de sus colegas actuales para verlo a través de esta transición, si permanece con la misma compañía, será continuamente retirado para ayudarlo a resolver problemas en su rol anterior. Esto será perjudicial para su crecimiento como desarrollador, y también reforzará su imagen de DBA.
TL; DR / Conclusión
Siempre es desafiante hacer un cambio en las carreras. A menudo, la transición requerirá un paso (o muchos) hacia atrás, antes de que pueda avanzar en su nueva profesión. No hay un verdadero atajo para convertirse en un desarrollador de software, aprender a codificar en un idioma es solo una parte del viaje. Tendrás que hacer un sacrificio, pero el resultado será un cambio gratificante.
Consulte esta respuesta para obtener algunos recursos excelentes sobre cómo aprender a codificar y por qué es posible que desee evitar PHP.
Todos me dicen que deje de usar PHP. ¿De qué otra manera puedo construir un sistema de inicio de sesión, área de miembros, etc.?