Muchas organizaciones, como las agencias gubernamentales, usan el título de “Ingeniero de software” para la asignación de recursos humanos y razones de escala salarial. Creo que el término “ingeniero de software” se usa tanto que realmente no hay diferencia en términos realistas entre un desarrollador de software, un ingeniero de software e incluso un programador. En teoría tienen diferentes significados.
Esto es lo que he entendido que son a lo largo de los años. Por otra parte, solo estoy sacando esto de la parte superior de mi cabeza. Lo digo porque realmente no quiero comenzar un gran debate sobre cuál debería ser cada título. Esto es solo mi entendimiento, por defectuoso que pueda ser.
Desarrollador de software
- ¿Cómo puede un ingeniero de software priorizar mejor el bajo estrés y el equilibrio trabajo / familia al seleccionar trabajos?
- ¿Cómo es ser ingeniero de software en una empresa 'genial'?
- Soy un chico de 25 años que trabaja como ingeniero de software. ¿Cómo puedo quitarme el culo y comenzar a tomar medidas en lugar de simplemente planear cosas?
- ¿Existe un alcance decente para ir al sitio para un ingeniero de software integrado?
- Si el trabajo de un ingeniero de software senior es de $ 150k / año, ¿cuánto debería ser si se traduce a la tarifa por hora de un contratista en W-2?
Un desarrollador de software es cualquiera involucrado en el proceso de desarrollo de software (es decir, programadores, desarrolladores líderes, evaluadores, expertos en la materia, analistas, control de calidad, etc.). Los desarrolladores de software abarcan todas las diferentes áreas del desarrollo de software. Incluso con ese título, el desarrollador de software se asocia más comúnmente con un programador / codificador y se usa indistintamente con un ingeniero de software.
Ingeniero de software
Un ingeniero de software es alguien que hace una contribución significativa al diseño y desarrollo de un producto de software mientras utiliza prácticas de ingeniería y participa en una metodología bien establecida del ciclo de desarrollo de software.
Por lo general, alguien con al menos una licenciatura en Ciencias de la Computación y una sólida comprensión de la misma, posee este título. Este es alguien que generalmente tiene una sólida formación en todo lo relacionado con CS y programación. No es necesario un título si aprendió la teoría de CS por su cuenta, pero de cualquier manera debe saberlo.
El ingeniero de software generalmente está influenciado por el título y muchas organizaciones tienen requisitos de credencial sólidos para este título. Por ejemplo, se le puede exigir un mínimo de una licenciatura en informática. SIG o TI. En ciertos estados, es posible que se le solicite tener una licencia de educación física para mantener a este ingeniero en su título.
Todavía hay debate sobre este título.
Programador
Este es alguien que escribe código en un lenguaje de programación de computadora. Un ingeniero de software siempre es un programador, pero no al revés. Un programador suele ser un desarrollador. Muchos programadores pueden producir software, pero es posible que no tengan la experiencia sólida o el deseo de producirlo utilizando las mejores prácticas. Un programador es cualquiera que puede escribir código, incluso si todo lo que sabe es un idioma y 0 teoría.
Puedes ser un programador horrible y producir software que funcione lo suficientemente bien.
¿Importa el título?
¿Dónde importaría cuál es tu título? Esa es una buena pregunta y relevante.
No es tanto que los títulos importen, pero la composición de cada título sí importa y aquí está el por qué.
¿Qué tipo de trabajo requiere ingeniería?
Si está creando y diseñando software que podría causar lesiones o la muerte, definitivamente debe ser un ingeniero de software. Será mejor que pueda comprender los principios de ingeniería. Cosas como la heurística, la tolerancia a fallas, los mecanismos de seguridad, etc., son muy importantes con los sistemas en tiempo real.
Si está construyendo sistemas de procesamiento pesados como Google y Amazon’s of the world o está escribiendo código que raspa el metal para su optimización en un sistema propietario como los Oracles of the world, probablemente también debería ser un ingeniero. Los sistemas como este tienen métricas de rendimiento garantizadas y pueden provocar grandes pérdidas financieras o una impedancia significativa para las operaciones de una organización.
Si está creando un software de procesamiento hardcore, debe ser un ingeniero. Tendrá que profundizar en toda esa teoría de CS para optimizar el producto.
¿Qué tipo de trabajo no requiere un ingeniero?
Si solo estás lanzando código. Eso significa escribir cualquier cosa desde la página web de la hermandad de mujeres de su madre hasta el código de front-end o incluso back-end para un producto comercial, ser programador sería suficiente, aunque cuanto más fuerte sea un programador, mejor será el producto. Esa es una declaración general, porque puede haber productos comerciales importantes que pueden tener requisitos muy complejos y estrictos.
En la última década más o menos, los programadores que se enorgullecen de su oficio han recurrido a llamarse a sí mismos artesanos, donde hacen el viaje de aprendiz a maestro artesano. La idea es que el software es más un oficio que una disciplina de ingeniería.
Línea de fondo
Dicho todo esto, la mayoría de las personas que codifican se ven envueltas en una gran pila intercambiable de codificadores, piratas informáticos (como en hackathon no como pirata informático), programadores, ingenieros de software, desarrolladores de software. El desarrollador y el programador son una ruta más segura para un título, pero si realmente es un ingeniero, adquiera el título de “Ingeniero de software”.
Para empeorar las cosas, todo esto causa aún más confusión para la gestión de recursos humanos y simplemente siguen su ejemplo con su comprensión de estas cosas. Como resultado, se convierte en un frenesí de autoalimentación donde la confusión crea aún más confusión. Así que ahí es donde comienzas a ver publicaciones para ingenieros de software, desarrolladores e incluso jornaleros y no hay una distinción clara.
PD
Érase una vez, el software que realizó su función principal fue lo suficientemente bueno. Ahorró tiempo y redujo el trabajo manual y fue bueno. Avance rápido muchas décadas después y esa eficiencia ha llevado a una gran dependencia del software para muchas otras cosas. Eso significa que hay mucho más en juego con respecto a la protección de todos esos datos. Las violaciones de datos pueden ser perjudiciales por muchas razones. Eso significa que con cualquiera de los roles anteriores, la seguridad del software es un gran problema, independientemente de si usted es un ingeniero de software, un desarrollador de software, un programador o cualquier otra cosa que decida llamarse a sí mismo.