Cuál es la diferencia entre un ingeniero de software y un ingeniero de software senior?

Alcance y autonomía. Los ingenieros sénior no suelen ser líderes, y rara vez dirigen grupos de más de unas pocas personas con la baja sobrecarga que ello implica.

La ingeniería de software es un oficio con progresión de aprendiz, a oficial, y luego a maestro artesano, con tal vez un 25% de ingenieros que avanzan más allá de ese punto. Los ascensos van a la zaga, y los ingenieros reciben el título y el aumento de sueldo una vez que alcanzan el siguiente nivel.

Los aprendices aprenden los entresijos del desarrollo de software comercial: el trabajo en equipo, la evolución del código existente y el proceso de software formal. Con una orientación directa y una estrecha supervisión, se encargan de problemas de alcance limitado: correcciones de errores, pequeñas características, tareas de 1 a 5 días, según la respuesta de Nicolas Spiegelberg a ¿Cuáles son los diferentes niveles de ingenieros de software en Facebook? Amazon SDE1, Microsoft SDE1 nivel 59/60, Google Software Engineer II nivel T3, Facebook interno nivel E3. La mayoría de las empresas pequeñas los llaman "ingenieros de software"

Los recién graduados comienzan como aprendices.

Muchas empresas pequeñas evitan contratar aprendices porque hay demasiadas cosas que no pueden hacer y su limitada experiencia hace que las predicciones de rendimiento sean menos precisas que las de los nuevos contratados más experimentados. En 20 años mis únicas sorpresas vinieron de un par de aprendices que eran inteligentes y sabían lo que debían por haber obtenido sus títulos de CS, pero no pudieron hacer la transición a trabajar como ingenieros. Hice que mi último ingeniero junior añadiera soporte de particiones usando libgparted a libntfs3g después de darle el caso de prueba, describiendo cómo sus estructuras de datos necesitaban cambiar, y señalando las funciones específicas.

Los ingenieros competentes son promovidos a journeyman en dos años. No hacer esa transición conduce a ser gestionado hacia fuera, tal vez en otras funciones como ingeniero de ventas o la parada de soporte técnico final antes de que los problemas se envían a los ingenieros de software de producto.

Los journeymen han aprendido a trabajar en el software existente en un entorno comercial, y completar las tareas intermedias con una supervisión limitada - características de tamaño medio, pequeños programas, proyectos de 1-4 semanas por Nicolás. Mientras investigan los problemas que se les asignan y diseñan soluciones, otra persona se encarga de las APIs entre los componentes y les da el visto bueno antes de su implementación. Siguen el proceso dictado por otras personas. Amazon SDE2, Microsoft SDE2 nivel 61/62, Google Software Engineer III nivel T4, Facebook E4. Algunas empresas pequeñas los titulan "Ingeniero de Software" como aprendices, algunas son generosas y les otorgan un título de Ingeniero de Software Senior aunque todavía no lo sean.

Me gusta contratar a journeymen para su segundo trabajo porque hay muchas tareas que son un ligero estiramiento para ellos lo que es atractivo que conduce a un buen rendimiento, con el entrenamiento se pueden hacer cosas más grandes haciéndolos crecer hasta convertirse en ingenieros senior durante un par de años, son abundantes, y son probablemente menos costosos que los aprendices porque su salario ligeramente más alto se compensa con una menor sobrecarga de gestión y la reducción de las probabilidades de despido. Si no tuviera poco personal en mi última startup, habría asignado una restauración de copias de seguridad de subárboles de sistemas de archivos NTFS de Windows en imágenes de disco servidas por Apache httpd, lo que implicaría cambios en el código de cruce de directorios de WebDAV y averiguar cómo funcionaba la "brigada de cubos" limitadora de copias de Apache.

Atascarse en el puesto de aprendiz debido a las necesidades del negocio o a la habilidad es un gran problema. Las grandes empresas gestionan la salida de los oficiales que permanecen demasiado tiempo en ese nivel. Las decisiones de no contratar debido a la "falta de trayectoria" son comunes, porque los empleadores quieren gente que progrese a ingeniero senior.

La promoción a ingeniero senior es posible 2-3 años después de hacer journeyman (4-5 en total), pero depende de la disponibilidad de proyectos. Eso no es muy senior, ya que la ingeniería de software requiere unos 10 años de la experiencia adecuada para llegar a ser competente, más otros 5-10 años para conseguir un manejo en la ejecución de proyectos complejos.

Los ingenieros de software senior son maestros artesanos. Pueden manejar de forma independiente todos los aspectos de los problemas moderadamente complejos con Nicolas sugiriendo una duración del proyecto de 3 a 6 meses. Eso significa proceso, arquitectura, diseño, implementación, prueba e ingeniería de mantenimiento. Pueden ser mentores de ingenieros junior y pueden dirigir pequeños proyectos en los que participen unas 4 personas. Pueden tener o no libertad de acción en el proceso de software. No suelen trabajar directamente con otras unidades de negocio, como la de marketing. Su trabajo suele ser táctico, y la dirección estratégica se determina en rangos superiores. Amazon SDE3, Microsoft Senior SDE nivel 63/64, Google Senior Engineer nivel T5, Facebook E5. Los títulos de las pequeñas empresas varían de ingeniero senior a ingeniero de plantilla.

Me gusta tener ingenieros senior en los que puedo delegar subsistemas, como la interfaz SCSI o la pertenencia a grupos y el almacenamiento de metadatos en un dispositivo de almacenamiento en bloque escalable. Hice que un ingeniero sénior creara un sistema de archivos estructurado en forma de registro con un registro separado para el desplazamiento de archivos de árbol B+ a la asignación de bloques para que pudiera leerse al inicio con IO secuencial.

Master craftsman/Senior Engineer es la promoción final para la mayoría de los ingenieros. Esto está bien - muchos ingenieros no quieren trabajar más allá de ese nivel y / o disfrutar de sus funciones como ingenieros superiores hasta que se retiren. El puesto puede pagar entre 200 y 400.000 dólares en las grandes empresas públicas, lo que se sitúa en el 5% de los ingresos de los hogares de EE.UU., lo que suele implicar dos asalariados. Trabajar como ingeniero senior en pequeñas empresas fuera de los mercados caros todavía puede pagar más de los 130K dólares necesarios para llegar al 10% de los hogares más altos.

Al ir más allá de Ingeniero Senior la mayor parte de tu valor proviene del impacto en el negocio y tu capacidad para multiplicar la producción de otros ingenieros. A menudo decides qué construir y cómo hacerlo. En mi primer puesto de ingeniero principal dirigí un equipo de 12 personas y sólo pasé 1/3 de mi tiempo escribiendo software. Recientemente, he creado el diferenciador clave del mercado que hizo que mi empresa pasara de 0 a un flujo de caja positivo con más de 10 millones de dólares de ingresos anuales, he conseguido que el proceso de ingeniería se encamine a enviar la primera o segunda versión candidata después de que el vicepresidente de ingeniería abandonara los calendarios debido a la necesidad de intentos de dos dígitos, y he iniciado proyectos de forma proactiva para que tuviéramos correcciones antes de que las cosas impidieran el negocio.

Los títulos más allá de Ingeniero Senior varían, y al igual que los rangos ejecutivos son a menudo relativos a la empresa en su conjunto. Un ingeniero distinguido en Google que tiene un impacto significativo en casi 100 mil millones de dólares al año en ingresos es muy diferente a uno en una startup que gana 10 millones de dólares al año. Un Ingeniero Principal en Google suele liderar un equipo de 50 personas como un Director, mientras que uno en una empresa pequeña puede manejar sólo 10 como el Director o VP de ingeniería de software.

Pueden o no venir con deberes de gestión, con algunas empresas manteniendo la gestión de personas y el liderazgo técnico completamente separados. Una vez que usted es responsable de la interfaz con otras unidades de negocio, la programación, y tiene mucha influencia en la contratación y el despido oficialmente la gestión no añade mucho a sus deberes - la negociación de la compensación con las nuevas contrataciones, las revisiones de rendimiento, despedir personalmente a la gente, y tal vez el presupuesto.

Los títulos y los límites de pago van con las posiciones no con las personas. Un antiguo Ingeniero Principal puede ser contratado como Ingeniero Senior cuando las plazas de liderazgo están llenas y eso es lo que permite el presupuesto.

Algunas empresas grandes y pequeñas sufren de inflación de títulos, donde los Ingenieros Senior obtienen títulos más elevados (como Ingeniero Principal), y la gente más allá de eso títulos que no tienen sentido fuera de esa empresa (como Miembro Consultor Senior del Personal Técnico).

A la inversa, algunas empresas como Facebook evitan los títulos públicos para los ingenieros donde el objetivo es que las ideas sean consideradas por sus méritos y no por el rango de la persona que las propone. Eso no funciona cuando algunos ingenieros son promovidos a Director aunque siguen siendo líderes técnicos prácticos, mientras que compañeros con un impacto similar siguen siendo "Ingenieros". Internamente siguen teniendo bandas de compensación.