¿Qué significa cada uno de estos términos: desarrollador de software, programador e ingeniero?

La programación es la acción que realizan tanto un desarrollador como un ingeniero de software.
La diferencia está en cómo lo abordan. La respuesta de Josiah Bruner es genial. Una cosa que me gustaría agregar es que existen metodologías de la industria que las empresas siguen en las que el programador podría encontrarse automáticamente en una función u otra, las dos principales son Agile y Waterfall. Dependiendo de qué tipo de programa / sistema necesita ser trabajado, se prefiere un método de desarrollo sobre otro, y esto moldea al programador para que actúe como desarrollador o ingeniero.
En un proceso de desarrollo ágil, planifica poco e itera muchos. Te mueves rápido, cometes errores, los reparas más tarde. Esto pone al programador en la mentalidad de “desarrollo” y requiere un conjunto diferente de disciplinas de ellos. Cómo estimar tareas para carreras cortas. Cómo ejecutar una solución y equilibrar la calidad sobre la cantidad, alineándose más con la cantidad, sabiendo que pueden volver y limpiarla más tarde (aunque a veces esto es un sueño imposible). Cómo saber cuándo desechar un código y simplemente refactorizar todo para obtener un mejor rendimiento. Cómo escribir código para empezar es fácilmente modificable.
En un proceso de desarrollo en cascada, iteras poco, planificas muchos. Esto pone al programador en la mentalidad de “ingeniería” y les exige que puedan planificar las cosas en el futuro. Aliarse con la calidad sobre la cantidad todo el tiempo porque generalmente es necesario. Debes planificar primero, programar después. Un solo cambio puede requerir días de la primera actualización de cualquier documentación de planificación que condujo a que ocurriera ese error en la implementación para que en el futuro no vuelva a suceder. Está más preocupado por lo que dice el documento de requisitos, y debate e diseña el documento de requisitos (al igual que escribir leyes en realidad, desea el toque justo de flexibilidad y precisión o de lo contrario la ejecución de esa ley / requisito será demasiado rígida o demasiado flojo para la interpretación de formas que no quieres)
He trabajado en la industria de la aviación, donde el problema de mayor prioridad, que atraería a equipos de ingenieros, para resolver sería un “parpadeo” de un solo cuadro en la pantalla de instrumentación de la cabina (cuadros de la pantalla, es decir, uno de los 40 o 60 cuadros que se muestran cada segundo en la pantalla LCD). Se requieren cientos de miles de dólares para resolver ese problema y millones de dólares para evitar que ocurra en el futuro porque la vida de las personas está en juego, de una manera muy importante. Piense en la debacle de vuelo de Malasia que ocurrió hace unos años. Perfil muy alto, y como ingeniero se requiere que evites errores como ese, no hay tiempo ni espacio para la iteración.

“Desarrollador de software” es más o menos igual a “Programador”, aunque en general “Programador” es un poco más informal. Al menos en mi área, los “programadores” tienden a ser “desarrolladores” muy jóvenes / a tiempo parcial, mientras que los “Desarrolladores de software” son programadores que trabajan profesionalmente con más experiencia. Sin embargo, los términos se pueden usar indistintamente y nadie discutirá.

Sin embargo, los ingenieros de software son diferentes, aunque a muchos no les gusta admitirlo. La ingeniería de software real es un trabajo de ingeniería completo y debe realizar todos los procedimientos estándar para obtener el título. Por ejemplo, en muchos estados (EE. UU.), Debe obtener una licenciatura en ingeniería o pasar una prueba de “ingeniería” para llamarse a sí mismo un “ingeniero” de cualquier tipo. Los ingenieros de software generalmente trabajan en aplicaciones, herramientas, sistemas, etc. grandes y complicados que requieren un conocimiento intensivo de muchas cosas diferentes. Se espera que equilibren la innovación, la factibilidad, el costo y la gestión del tiempo para completar sus proyectos, lo que no se puede decir de todos los “Desarrolladores de software” o “Programadores”.

Forma alternativa de pensar (es decir, un ejemplo)
Aquí hay una forma muy básica de diferenciar. Considere dos acciones principales de estas personas: escribir código y pensar / planificar. Yo diría que cada título en general (Nuevamente, esta es mi observación y no se puede decir de todos), pasa diferentes cantidades de tiempo en cada acción.

Código / ratios de planificación:

  • Programador de software: salida de código muy alta, baja planificación.
  • Desarrollador de software: salida de código medio, planificación media.
  • Ingeniero de software: salida de código más baja, planificación mucho más alta.

¿Por qué? Bueno, considere sus obligaciones.

Responsabilidades generales:

  • Programador de software: hacen lo que dice su título, “Programa”. Escriben código para realizar una tarea determinada sin tener que planificar o diseñar software.
  • Desarrollador de software: los desarrolladores de software son una especie de software estándar y completo. Planifican y diseñan software, pero también lo implementan rápidamente, aunque generalmente trabajan en cosas “más fáciles”. Por ejemplo, sitios web, aplicaciones de clientes, pequeñas utilidades, etc.
  • Ingeniero de software: los ingenieros de software tienen que resolver problemas muy grandes, lo que significa que no puedes sentarte en tu escritorio un día y comenzar a escupir código sin diseñar cuidadosamente cada aspecto de tu solución. Por supuesto, gran parte de este diseño de alto nivel a veces es realizado por un “Arquitecto de software”, pero los ingenieros aún lo hacen mucho.

Este es mi entendimiento, pero la gente puede estar en desacuerdo, particularmente en lo que respecta a “Programador” / “Desarrollador de software”. Las compañías y ciertas personas pueden preferir intercambiar o ignorar algunos de los títulos, y eso está bien. Dicho esto, creo firmemente en que los “Ingenieros de software” se distinguen de los roles más casuales de “Programador” o “Desarrollador”, y encuentro bastante desafortunado que los ingenieros de software se burlen de sus títulos por electricidad / mecánica / etc ingenieros en estos días.

More Interesting

¿Cómo es asistir a la maestría de Cargenie Mellon en ingeniería de software o al certificado en ingeniería de software?

¿Cómo debe comportarse un desarrollador en estas condiciones?

Soy un desarrollador de copiar y pegar, ¿cómo me convierto en un verdadero desarrollador de software?

¿Cómo se gana la vida siendo un ingeniero de software independiente?

Cómo comenzar a convertirse en un desarrollador de aplicaciones o software exitoso

¿Por qué todavía trabajas como desarrollador de software si puedes hacer mucho más intercambiando bitcoins y criptomonedas?

¿En qué equipo de Amazon debería elegir trabajar como desarrollador de software?

¿Vale la pena suscribirse a IEEE Journal (s) para un desarrollador de software?

Cómo escribir código profesional

¿Cuál es un buen consejo para un desarrollador de software que está a punto de ser etiquetado como un "trabajador" y le gustaría recuperar su pasión y comprometerse con algo?

Cómo convertirse en un buen profesional del software dado que soy un buen programador

¿Qué temas debo saber para una entrevista de desarrollador de software?

¿Por qué los desarrolladores externos desarrollan programas, etc., utilizando la API Blockcypher?

Actualmente estoy trabajando como desarrollador de software y mi edad es 24. Quiero ser parte de ISRO, ¿es posible? Si es así, ¿cómo puedo postular? ¿Qué tipo de publicación puede obtener un desarrollador de software en ISRO?

¿Cómo se desarrolla el software de refuerzo de sonido?