Niels Bohr dijo una vez: “ Un experto es un hombre que ha cometido todos los errores que se pueden cometer, en un campo estrecho. ”
El crecimiento profesional en ingeniería de software (y muchas otras áreas) está determinado por la profundidad del conocimiento y la amplitud de la experiencia. Un proyecto puede escalar tanto horizontal como verticalmente, lo que requiere un conjunto diferente de habilidades y experiencia en aplicaciones prácticas que siguen ambos patrones.
En la práctica, un desarrollador senior puede resolver casi cualquier tipo de problema con menos supervisión. Pueden evaluar los riesgos, hacer las preguntas de seguimiento correctas, determinar el flujo de trabajo correcto, analizar los posibles cuellos de botella y ofrecer una solución estable (generalmente bien documentada y probada).
Un desarrollador junior puede resolver un conjunto limitado de problemas con un subconjunto más pequeño de soluciones alternativas .
- Todos mis maestros no hacen nada, todo lo que hacen es sentarse en su escritorio y no decir nada, incluso si les preguntas qué hay que hacer. Además, no hay libros de texto ni nada en estas clases de secundaria, así que no aprendo nada todos los días. ¿Qué debo hacer?
- ¿Qué sucede en una graduación típica de secundaria (no fui a la mía)?
- En los Estados Unidos, ¿puede un estudiante de secundaria asistir a una escuela que se encuentra en otro estado? ¿Deben ser conducidos por los padres / conducir a la escuela, o puede un autobús llevarlos?
- ¿Cómo son tratados los niños prodigios por sus compañeros de clase en la escuela secundaria y la universidad?
- ¿Cómo debo responder la pregunta ‘¿Por qué le gustaría asistir a * nombre de la escuela *’ en una solicitud de escuela secundaria?
Por ejemplo, una organización puede necesitar un motor de blogs simple (solo por el argumento).
El junior probablemente esté familiarizado con un lenguaje de programación, marco o plataforma. Lo elegirán de inmediato e implementarán una solución semi-estable que resuelve la mayoría de los problemas en ciertos casos de uso.
Un desarrollador senior adoptará un enfoque más prolífico . Analizarán los objetivos comerciales y los desafíos técnicos (cantidad esperada de tráfico, roles y capacidades de los usuarios, diferentes casos de uso y diagramas de flujo proporcionados por el equipo de PM).
Elegirán un cierto marco que se adapte a las limitaciones comerciales y presupuestarias. Además, el ingeniero superior propondrá varias formas diferentes de implementar eso con sus ventajas y desventajas. El equipo de gestión puede revisar las opciones y elegir la que corresponda mejor a las necesidades del cliente.
Esto puede incluir un esquema MySQL estándar, una base de datos NoSQL para almacenar ciertas actividades, una aplicación SPA que interactúa con el motor a través de una API REST o lo que el ingeniero considere que es la mejor opción posible.
Este es un ejemplo limitado, por supuesto, pero muestra el enfoque diferente dada la comprensión y experiencia más amplia y profunda del desarrollador senior. Además, el ingeniero superior normalmente ha experimentado con todos los enfoques y sabe lo que realmente sale mal en la mayoría de los casos.
Los problemas teóricos en un libro son diferentes de lo que sucede en la acción. Y si el desarrollador senior ya ha pasado varios años dentro de la organización, ya puede evaluar el conjunto de habilidades de los otros miembros del equipo, sus fortalezas y debilidades, el flujo de trabajo estándar que lleva a cabo la administración y lo que resultaría en la mejor solución dentro de los límites requisitos