¿Qué tiene un ingeniero de software senior que no tiene un ingeniero de nivel junior o intermedio?

Los ingenieros superiores exitosos tienen experiencia en:

  • Elección de marcos, bibliotecas para usar.
  • Elegir qué aprender.
  • Conocer la diferencia entre tendencia e ingeniería.
  • Proporcionar estimaciones.
  • Código de refactorización para mantenimiento y reutilización.
  • Evitar el exceso de ingeniería.
  • Evitar la subestimación.
  • Solución de problemas y depuración.
  • Buen diseño que ahorra tiempo de retrabajo.
  • Negociar requisitos en lugar de decir que sí.
  • Colocación de restricciones en el equipo de negocios.
  • Estar de acuerdo con tareas de ingeniería difíciles cuando hay mucho en juego.
  • Construyendo una carrera.
  • Elegir seguir siendo ingeniero.
  • Manejo de la política en el trabajo.
  • Manejar ágilmente como un ritual y no dejar que intervenga en la forma en que trabajamos.

Experimente los fracasos que han cometido y sepa cómo aplicar ese conocimiento. Los desarrolladores junior aplican el conocimiento sin experiencia creyendo que el fracaso no puede sucederles.

Los desarrolladores senior, especialmente los buenos, saben dónde están los límites, tienen una mejor apreciación y capacidad para gestionar y tolerar los riesgos, generalmente son más conscientes de los problemas no técnicos, como las necesidades comerciales y las razones de por qué las cosas se hacen de la manera en que lo hacen, imponga buenas prácticas de desarrollo, como el control de fuente y las pruebas unitarias, a niveles casi despiadados, etc.

Los desarrolladores senior también pueden decir varias palabras que los juniors parecen carecer de vocabularios. Uno de estos “No sé”. Otro es “No, eso no es posible”. Un tercero es “Eso es mi culpa”. Y los adultos mayores nunca dan una estimación para una tarea de “Claro, eso se puede hacer en dos semanas”.

Muchos desarrolladores junior creen que el algoritmo, patrón, marco o producto popular del día es la bala mágica, que resolverá todos los problemas.
Por lo general, la solución de ingeniero junior se ajusta a cierta metodología o herramienta popular y no al problema que se está resolviendo.

El ingeniero superior analiza el problema en su conjunto, encuentra el núcleo del problema, encuentra los modelos y abstracciones correctos para resolverlo, luego se utilizan las herramientas adecuadas.

Un ingeniero más experimentado tiene un par de rasgos que los separan de un ingeniero más joven:

1) Experiencia. Saben qué soluciones funcionan y cuáles pueden ser frágiles.
2) juicio. Saben cuándo pueden hacer algo rápidamente y cuándo uno debe tomarse el tiempo para asegurarse de que todo esté correcto.
3) Proceso. Conocen el valor de un buen proceso, pruebas y personas con otras habilidades como PM, diseñadores, etc.

La confianza, es una característica resultante que viene después de la experiencia, el fracaso, el éxito, la comprensión de la falibilidad y el pago superior.

Saben cuándo trabajar, cuánto trabajar, con quién hablar, cuándo hay que hacer algo.
Tienen su parte de proyectos fallidos y con la retrospección saben que no son a prueba de errores.
Tienen sus éxitos y pueden hablar sobre ello.

La experiencia y el juicio que conlleva.

El ingeniero de software sénior puede hacer un trabajo que se le asigne sin supervisión o con supervisión mínima.