Todo buen ingeniero de software tiene que pasar por algunas etapas con la posibilidad de no avanzar, no necesariamente una mala elección.
Descifrador
Un programador es alguien que ha adquirido fluidez con un lenguaje de programación o de secuencias de comandos capaz de comportarse de forma dinámica. Digo dinámico porque introduce las complejidades que son necesarias para abordar muchos problemas del mundo real. Así que HTML no te calificará para esta etapa. También quiero prefijar que fluidez, para mí, no es la memorización de toda la sintaxis disponible o incluso la cobertura de un porcentaje de la sintaxis disponible, sino el punto en el que “piensa” en el idioma al definir su solución.
Desarrollador
- Todos los días llego a casa del colegio sin saber qué hacer. Por lo general navego por la web o miro Netflix. No siento que eso sea muy bueno para hacer. ¿Qué puedo hacer que sea beneficioso o productivo?
- ¿Cuáles son las cosas que definitivamente deberías experimentar en tu vida universitaria? De lo contrario, te perderás la diversión y la vitalidad.
- ¿Debo ir a Matemáticas + Bio después del 10? ¿Cuales son los beneficios?
- ¿El porcentaje realmente importa cuando se coloca?
- ¿Cuál es tu mejor consejo para los estudiantes de secundaria?
En esta etapa, domina al menos un idioma (y sí, solo se necesita uno) y puede crear software con un equipo o solo. Está familiarizado con las buenas prácticas en lo que respecta a escribir software (es decir, usar el control de código fuente y cumplir con los estándares de codificación). En esta etapa, puede ser un buen jugador en casi cualquier equipo, tal vez incluso el mejor “lanzador” con muchos equipos posiblemente considerando a esta persona un rol de nivel Sr.
Ingeniero de software
La ingeniería de software es la ingeniería de software utilizando principios de ingeniería. Así que esto viene con la expectativa de no solo ser capaz de contribuir bien a un equipo, sino también de definir cómo se debe crear el software para garantizar una alta calidad. También espero que alguien en este nivel también entienda los patrones de diseño y haya memorizado unos cuantos populares. Saben cómo no solo contribuir a un equipo, sino que, naturalmente, lo hacen dentro de los “patrones” establecidos, el estilo de codificación y las prácticas del equipo (suponiendo que sean buenas prácticas).
Algunas personas pueden superar todas estas etapas en un plazo de 5 años, yo diría que el promedio es de 8, y muchas personas se quedan “estancadas” por elección o “entorno” en la posición de Codificador o Desarrollador. Mucha gente confunde al desarrollador y al ingeniero de software por ser lo mismo, pero las expectativas y las capacidades entre los dos roles son bastante amplias. También estoy seguro de que algunas personas calificarían estos roles como Jr, Mid y Sr, pero personalmente creo que esto elimina muchas de las expectativas de los mismos roles. Facilita que las personas intenten y justifiquen su posición mediante la comparación en lugar de la competencia, que en el mundo del software es el rey.