Otros han cubierto esto en gran medida. Pero aquí están mis 2cents:
Los SysAdmins (DevOps, Ops, OpsEng, SRE, etc.) pueden o no hacer más que un Programador (Ingeniero de software, Ingeniero, Desarrollador, Codificador, etc.). Depende de muchos factores: tiempo, ubicación, empresa, habilidades personales, experiencia, oportunidad, etc.
Pero yendo con la cadencia de la pregunta, es decir. lo que justifica que a un SysAdmin se le pague más por un ingeniero de software, suponiendo años de experiencia similares, etc.
Tiempo de actividad
Los administradores de sistemas, desde el primer momento en que uno asume ese papel hasta su último aliento, se trata de tiempo de actividad. Vivimos y respiramos el tiempo de actividad. Valoramos la estabilidad. Para SysAdmins, asegurarse de que la “producción” se mantenga y funcione bien, es el trabajo número uno. Todo lo que pueda afectar esto es algo que necesita ser gestionado, modificado, examinado, probado y filtrado antes de que llegue a producción.
Esto significa soporte on-call 24/7 de una plataforma. Esto significa monitoreo y un nivel de atención casi paranoico prestado a una configuración que podría ser tan pequeña como unas pocas docenas de cajas hasta literalmente decenas de miles de cajas.
Estabilidad
Esto afecta directamente el tiempo de actividad. Y así, la estabilidad de la plataforma, la pila completa de aplicaciones, es algo que le importa a SysAdmin. En una empresa pequeña, SysAdmin es su administrador de correo electrónico, administrador de red, administrador de servidor, administrador de aprovisionamiento, administrador de seguridad, etc. Por lo tanto, SysAdmin necesita saber todo lo posible sobre la pila. En muchos casos, esto significa que el SysAdmin realmente aprende el código que se está implementando para que puedan depurarlo y presentar un informe a los desarrolladores para corregir el error en cuestión.
Y cuando ese error no se puede solucionar … o se le da prioridad, recae en el SysAdmin para crear soluciones alternativas para garantizar que la plataforma, si es inestable, permanezca activa.
En llamada
DIOS MIO. En llamada. Solía reír cuando veía dramas de televisión sobre doctores a los que llamaban: en medio de la noche, mientras cenábamos, en una película, en medio de un momento amoroso … todo eso se pone de lado cuando ese localizador comienza a alertar o tu el teléfono explota con mensajes de texto … para ser seguido unos minutos más tarde con llamadas de su gerente o director. No es alguien que necesita cirugía cardíaca … no, es el negocio perder dinero por minutos.
On Call significa que SIEMPRE tiene su computadora portátil con usted. Siempre tienes tu teléfono / buscapersonas / segundo teléfono contigo. Significa que durante el tiempo que está de guardia, su vida no es suya.
En bastantes compañías, mientras que SysAdmins estaban de guardia, los desarrolladores que escribieron el código no. Entonces, los administradores de sistemas se convierten en los primeros en responder, los coordinadores de incidentes, los que tienen a alguien respirando desde atrás preguntándose cuánto tiempo más antes de que se apague el fuego.
He trabajado días completos, solo para estar en la oficina durante otras 8-10 horas porque algo estaba en llamas.
Lo que OnCall significa es que el equilibrio de su vida laboral se ve muy afectado. ¿Tienes que ir a la graduación de tu hijo? Mejor traiga su equipo de punto de acceso inalámbrico. ¿Ir al cine? Mantenga su equipo con usted y su teléfono / buscapersonas en silencio. ¿Vas a hacer un largo viaje por carretera? Es mejor programarlo cuando no esté de guardia, porque es posible que … solo deba ir al centro de datos para arreglar algo que falló y necesita un intercambio.
Visibilidad generalmente negativa
Por lo tanto, los SysAdmins trabajan duro para asegurarse de que todo funcione correctamente, se mantenga despierto y sacrifique el tiempo de sueño / personal para asegurarse de que todo funcione las 24 horas, todos los días. Pero, en general, el equipo de Operaciones / Soporte de producción / SysAdmin obtiene una muy mala reputación / rap:
- Los administradores de sistemas se quejan de que algo es un mal diseño … ¿por qué no hablaron antes? (No importa si no se dieron a conocer o se les invitó a las reuniones de diseño y los problemas de diseño se descubrieron durante la reunión de revisión de aprobación de producción final … etc.)
- Debido a lo anterior, los SysAdmins están “bloqueando” la productividad y lo que “The Business” quiere.
- ¿Por qué el equipo de operaciones no puede “simplemente” darnos lo que pedimos? (O algo que requiere abrir el acceso, instalar muchos paquetes de última generación, o un diseño con múltiples puntos únicos de falla …)
- ¿Por qué se cayó el sitio de producción? ¡¿Pensamos que se suponía que Ops debía atrapar esto ?! (Después de que las personas que querían la implementación obtuvieron una excepción al escalar por encima de la administración del equipo de Ops y expulsaron el código no deseado a la producción).
- ¿Por qué tarda tanto la restauración? (Después de que alguien decidió ejecutar un SQL manual en la base de datos de producción, ya sea sin aprobación, o lo tipeó sin tomar precauciones antes de tiempo … o porque cuando surgió la idea de la replicación de la base de datos / repuesto en caliente, fue derribada por el costo de tener otro servidor que no está haciendo nada útil … etc. etc.)
- ¡El equipo de Ops / SysAdmin es muy grosero! (Ok, hay muchos equipos rudos por ahí. Pero para ser justos, tome los otros puntos negativos anteriores y aplíquelos a un individuo / equipo durante unos años, y se desarrolla una cierta brusquedad. Buen soporte de gestión de protocolos entre equipos y realmente tener equipos trabajando juntos es una excelente manera de resolver esto).
- Lo investigamos nosotros mismos en nuestras máquinas virtuales, ¿por qué Ops no solo puede enrutar el tráfico a nuestra instancia de VM y comenzar a monitorearlo? (Muy, muy mal … y, sin embargo, sucede con demasiada frecuencia … Otra buena variación de esto es la caja de producción debajo del escritorio de alguien … * facepalms *)
Ops tiene mala reputación / reputación porque los administradores de sistemas de un equipo de operaciones terminan siendo los que dicen: “No, no puedes hacer eso”. O “No, la restauración aún no se ha completado, tendrá que esperar”.
Entonces … ¿Por qué se les paga más a veces?
Una buena persona / equipo de SysAdmin / Ops / DevOps / SRE, etc. es tan importante como un buen ingeniero de software Sr./Lead/Architect. Para que un entorno funcione sin problemas, se implemente rápidamente y se mantenga estable, necesita un buen código sólido y probado y una buena plataforma sólida y probada.
En mi opinión, ambos son igualmente importantes y deben compensarse bien por el arduo trabajo que realizan. He tenido la increíble fortuna de haber conocido, trabajado y observado que los ingenieros de software superiores manejan los problemas cotidianos que afectan el lado del desarrollo de software de la empresa. Mantener los repositorios sanos / limpios / limpios. Asegurarse de que las personas no se escabullen en bibliotecas deshonestas, cosas de vanguardia, escribir código horrible que rompa las cosas. (Esto también se aplica a los SysAdmins … nada como un fragmento de código con guiones para arruinar el día de todos … especialmente si se expulsa a varios cientos / miles de cajas).
Un buen ingeniero de software experimentado y sólido, al igual que un buen SysAdmin sólido se hace cargo y se responsabiliza de su trabajo / entorno. Incluso si alguien más lo arruina, se asegurarán de que sea bueno como nuevo y harán cambios en la política / protocolo / acceso para asegurarse de que lo que se rompió no lo vuelva a romper. Al menos, no de la misma manera. Cuando ambos están de guardia, ambos se vuelven más conscientes del dolor causado por las cosas que se rompen y las cosas se arreglan.
Al final del día, la pregunta no debería ser realmente, “¿por qué se le pagaría más a un administrador del sistema que a un programador”, porque esa es una pregunta que arroja una luz muy negativa y supone que uno tiene más valor que el otro. Ambos son críticamente importantes para un entorno de trabajo.
La pregunta que debe hacerse es: “¿Qué hacen los ingenieros que reciben un alto salario y se diferencian del ingeniero promedio?” Cuando digo “Ingeniero”, me refiero tanto a los ingenieros de software como a los ingenieros de sistemas.
- El ingeniero altamente pagado es MUY proactivo. Están buscando activamente mejorar su comprensión del sistema en el que están apoyando / trabajando. Señalan activamente y buscan soluciones a los problemas que descubren.
- El ingeniero altamente pagado está EN LLAMADA. Se apropian de los cambios que realizan en la producción. Ya sea una inserción de código, actualización de paquete, parche de sistema operativo, actualización de sistema operativo o cualquier tipo de implementación. Intentan cubrir tantas bases como pueden y se aseguran de que se minimice cualquier impacto. Estar en llamada asegura que se mantengan informados sobre el impacto de su trabajo.
- El ingeniero altamente pagado es colaborativo entre equipos. Trabajarás con diferentes equipos en diferentes niveles. Ser capaz de comunicarse y trabajar de manera efectiva independientemente de la plataforma / lenguaje de programación / conjunto de herramientas / etc. es muy importante. Comprender lo que otro equipo necesita / quiere y poder comunicar lo que su equipo necesita y quiere asegura que no haya mensajes mixtos.
- El ingeniero altamente remunerado apoya el crecimiento del equipo. Intercambias conocimientos y experiencias con los miembros de tu equipo. Se apoyan mutuamente y trabajan para evitar el agotamiento de otro miembro. Si hay una deficiencia en alguna parte, trabajas para mejorarla. Y en el mismo sentido, si encuentra que hay un elemento disruptivo dentro del equipo, trabaja para resolver esas interrupciones.
- El ingeniero altamente remunerado cuenta con el apoyo de un gerente fuerte y efectivo. Porque no importa qué tan buen ingeniero seas, si tienes un administrador malo, tu futuro es limitado. Con un buen gerente, sus esfuerzos deben ser recompensados y tanto usted como su gerente pueden trabajar para dar forma al crecimiento del equipo.
Hay más elementos, pero la lista continúa.
Al comienzo de mi carrera, me encontré estresando sobre por qué los “desarrolladores” siempre están tirando cosas por la pared a la producción. No fue hasta que trabajé incrustado con ingenieros de software que me di cuenta de que hay un terreno común, pero es solo que un equipo tiene prioridades diferentes frente a otro equipo. Y la mejor manera de garantizar que un entorno maneje bien los cambios, las liberaciones de código, etc. es que todos los equipos se comuniquen bien para que todos los involucrados comprendan la solicitud, la justificación, los riesgos y las expectativas de apoyo.
Y a las personas que pueden trabajar bien de esa manera generalmente se les paga bien, independientemente de si son “SysAdmins” o “Programadores”.