Cómo pasar de un DBA a un desarrollador

¿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

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.?

Pasé de ser desarrollador de software a desarrollador DBA / SQL (solo SQL Server, por cierto) hace cinco años y ahora estoy haciendo la transición de regreso. Esto es lo que estoy encontrando.

Ambos requieren mucho conocimiento pero el conocimiento es diferente. Un DBMS tiene un conjunto de características limitado y, como DBA, necesita conocer ese conjunto de características por completo, pero no necesita saber mucho fuera de ese conjunto de características. Por lo tanto, desarrolla un conocimiento profundo de los planes de ejecución, índices, copias de seguridad, etc. El trabajo de TQL es en su mayoría muy procesal y, excepto para los desencadenantes no controlados por eventos.

Además, la tecnología cambia relativamente lentamente. Claro, cada lanzamiento agrega nuevas características, pero una vez que aprende su plataforma, puede salirse con la suya y no aprender demasiado cada año.

Con el desarrollo de software, es diferente. Cada año trae nuevos marcos y nuevas herramientas y nuevos patrones de diseño. Siempre hay, siempre, siempre algo más que aprender. Y no importa cuánto estudies, puedes saberlo todo

Mi sugerencia sería elegir un área, ya sea desarrollo móvil, desarrollo web o desarrollo de interfaz de usuario, y un idioma (java o c # o javascript) y aprender esa cosa lo más profundamente posible. Comprenda que, incluso como desarrollador experimentado, siempre habrá más cosas que usted no sabe que sí sabe.

Por cierto, hay muchos recursos para aprender que son baratos o gratuitos.

Gratis incluiría

Canal 9

Punto de tutorial

edX

También puede obtener algunos cursos baratos de

Cursos en línea: en cualquier momento y en cualquier lugar | Udemy

Solo asegúrate de esperar hasta que los cursos estén a la venta


Al reflexionar un poco sobre la pregunta, me doy cuenta de que podría estar leyendo demasiado en la dirección equivocada.

Así que agregaré esto … Muchas compañías tienen desarrolladores de bases de datos dedicados que no son DBA. Por lo tanto, es posible que desee avanzar en esa dirección, ya que ya tiene la experiencia de la base de datos. Puede ser un buen papel, pero no es el que muchas personas parecen desear, por lo que es posible que tenga más suerte moviéndose en esa dirección.

More Interesting

Tengo interés en escribir y quiero seguir una carrera en él, no quiero continuar en TI, ¿cómo puedo ganarme la vida?

¿Cuánto tiempo hasta que los desarrolladores de Ruby sean tan baratos como los desarrolladores de PHP? ya está sucediendo? ¿debería aprenderlo o solo me quedan un par de años y estoy mejor con SSJS?

¿Cómo se puede obtener una pasantía en NIT?

¿Hay algún alcance en la mecatrónica?

Adolescentes y Adolescentes: ¿Qué debo comenzar a hacer a una edad temprana si quiero ser editor de libros algún día?

¿Por qué mi solución al Proyecto Euler # 7: 10001st prime muestra WA en dos casos de prueba?

Quiero convertirme en un gran piloto, un hombre de 30 años que vive de cheque en cheque para TI ahora, ¿alguien puede decirme cómo puedo lograr mi objetivo?

Me entrevisté con una empresa hace 2 semanas y estoy esperando su respuesta. ¿Debo presentar una solicitud para otros puestos relevantes en la misma empresa?

¿Cuál es el marco de tiempo básico para esperar que un trabajo responda?

¿Es este un mal currículum para una empresa como Google, Microsoft, Linkedin o Facebook?

Cómo contactar a un profesor para una pasantía de verano

Como ingeniero recién graduado, ¿cuántas horas tiene que trabajar en una empresa de TI? ¿Cuáles son las condiciones de trabajo?

¿Es seguro estudiar CA sin bcom?

¿Cuán honesto debería ser uno al escribir una evaluación de desempeño para un colega?

Cómo ingresar a una de las compañías de electrónica siendo un recién graduado de una universidad de bajo nivel