¿Cuál es la diferencia entre un desarrollador, programador e ingeniero de software?

Como título de trabajo, “programador”, “desarrollador de software” e “ingeniero de software” pueden significar lo que una determinada empresa quiere que signifiquen. Algunos lugares llaman a las personas que crean software “ingenieros”, otros los llaman “desarrolladores” y otros los llaman “programadores”.

Como anécdota, he notado un patrón con estos títulos, sin embargo, las compañías tienden a usar diferentes títulos dependiendo de cuán altamente consideren el software y la tecnología como una ventaja competitiva . En general, diría que la mayoría de las principales empresas de tecnología que creen que el software es su producto principal llaman a esas personas ingenieros de software . Los lugares en los que he trabajado que valoran el software, pero lo tratan como una función de apoyo para otra profesión (banqueros, científicos, etc.) tienden a llamar a esas personas desarrolladores de software . Las empresas que ven el software y un mal necesario los llaman programadores . Una vez más, esa es mi observación personal, sin datos concretos, así que tómalo con un grano de sal.

Por lo tanto, no hay una diferencia fundamental entre ninguno de esos puestos, a menos que estemos hablando de una compañía específica que usa más de un título (no conozco ninguna de esas compañías). Sin embargo, hay una diferencia entre programación , desarrollo de software e ingeniería de software , lo que podría explicar por qué algunas compañías prefieren un título sobre el otro.

La programación es la tarea de traducir los requisitos legibles por humanos en código de máquina. Es el acto físico de escribir el código fuente lo que permite que el software realice su función prevista. En ese sentido, es la tarea de nivel más bajo en el proceso de desarrollo de software.

El desarrollo de software es el proceso por el cual se crea el software; desde la recopilación de requisitos, la creación de tareas, la planificación de sprint, la programación , las pruebas unitarias, las pruebas de integración, las pruebas de usabilidad / aceptación, etc. Abarca el extremo a extremo de concebir un sistema de software mediante la entrega como producto.

La ingeniería de software es el tipo de trabajo más amplio de los tres. Es la aplicación de la teoría de la informática y las matemáticas a la invención, diseño, investigación, desarrollo , mantenimiento, mejora e innovación de software [1]. Significa preocuparse menos por el software en sí y más por el problema que se está resolviendo. A veces, un buen ingeniero de software puede resolver el problema sin necesidad de escribir nuevas líneas de código. A veces, resolver el problema significa coordinar el desarrollo de múltiples sistemas de software que interactúan de manera compleja. Y a veces la ingeniería de software significa eliminar código, despreciar los servicios y diseñar el próximo sistema para que tome su lugar.

Pero sea cual sea el cargo que le otorguen, siempre piense en usted como ingeniero de software.

Notas al pie

[1] Ingeniería – Wikipedia

Un programador programa.

Un desarrollador de software desarrolla software.

Un ingeniero de software diseña sistemas de software.

Eso puede sonar como vacío, pero son 3 sombreros diferentes que la misma gente usa a menudo en diferentes momentos. La ingeniería requiere una comprensión de alto y bajo nivel del sistema que está haciendo para refinar los principios y requisitos de diseño. El desarrollo trabaja para entregar un producto de software, a veces esto puede no requerir una programación real y puede ser una simple cuestión de implementación. Un programador escribe código.

Soy ingeniero de software cuando inspecciono un documento de requisitos y diseño una arquitectura o algoritmo que escalará y funcionará en el espacio del problema. Soy un desarrollador de software cuando aprovisiono una VM, implemento mis programas y desarrollo software en cualquier capacidad, ya sea distribuida o en un solo programa. Soy programador cuando comienzo a crear programas para satisfacer los requisitos que establecí como ingeniero de software.

Los ingenieros / desarrolladores / programadores expertos serán los 3 de estas cosas en diferentes momentos del día o de la semana. Los Ingenieros / Desarrolladores / Programadores menos calificados solo pueden entregar 1 o 2 de estas capacidades a lo largo de su carrera. Estas definiciones implican que un programador es un desarrollador, pero no todos los desarrolladores son programadores (a menudo el caso en DevOps).

Algunos podrían argumentar que el nombre viene por una razón, pero algunos podrían argumentar que es solo un nombre para hacerlo genial o para diferir entre las cosas.

Sin embargo, a lo largo de mi carrera en el desarrollo de software, tengo mi propia interpretación, pero es una interpretación general y podría ser irrelevante para su caso.

  • Programador: es solo un gran espectro para las personas que escriben código para cualquier proyecto no trivial, ya sea profesionalmente, voluntario para la fuente opem o haciendo freelance. Se incluye una amplia gama de programadores, puede ser un programador científico, un programador web, de cualquier cosa que desee.
  • Ingeniero de software: está reduciendo el alcance de las personas en general que codifican a las personas que lo que le importa es el sistema de software. Mientras que en el programador, las personas que escriben código pueden tener más interés en el área física o más científica. El ingeniero de software se ocupa del sistema de software y su problema mientras mantiene el sistema softeare a escala. Aquí él / ella no es necesariamente un desarrollador, él / ella podría ser un tipo de infraestructura, un tipo de prueba o cualquier cosa.
  • Desarrollador de Softeare: es un ingeniero de software responsable de desarrollar las características y funcionalidades del sofrware y no la implementación o infraestructura en sí.

Aquí hay muchas opiniones, pero en toda la industria no hay definiciones formales o distinciones entre roles.

En la costa oeste de EE. UU., Las empresas son más propensas a utilizar el título de “ingeniero de software”. Las empresas con sede en el este, en mi limitada experiencia, tienden a favorecer el título de “desarrollador de software”, porque he oído que no No crea en llamar a los ingenieros de los trabajadores cuando no hayan recibido la acreditación de una organización profesional de ingeniería.

Verá otros títulos como simplemente “programador” o “ingeniero web” u otros, pero son todos iguales: el título de trabajo oficial de una empresa en particular para las personas que crean software.

La calidad de los desarrolladores entre empresas es un tema completamente diferente, pero en lo que a mí respecta, si aplica el proceso de diseño de ingeniería mientras desarrolla software y cumple con los estándares modernos, los títulos son solo palabras de moda para llamar la atención del reclutador.

Depende si quieres impresionar o no

Si estás con tus amigos, sí, solo eres un programador y te pagan para sentarte frente a una pantalla y presionar teclas.

Si tienes una cita, entonces, eres un ingeniero de software.

Realmente no podemos ser llamados ingenieros porque, a diferencia de los ingenieros civiles, por ejemplo, si cometemos un error, nadie muere, solo arreglamos el error y lo redistribuimos

Viejo chiste: ¿cuál es la diferencia entre un violín y un violín? Un violín cuesta más de $ 100.

Las diferencias en las capacidades entre las personas con esos títulos son mucho mayores que las diferencias entre los miembros promedio de esos grupos.

Programador: alguien que escribe código

Desarrollador de software: alguien que agrega funcionalidad a un programa

Ingeniero de software: alguien que diseña y crea un programa desde cero

No sé si lo hiciste a propósito, pero hiciste la pregunta de menos a la mayoría de las habilidades / conocimientos

Cuando tu madre te pregunta qué haces, puedes decirle que eres un programador de computadoras.

Cuando sus colegas le pregunten qué hace, puede decirles que es un desarrollador de software.

Cuando actualiza su currículum, puede decir que es ingeniero de software.

Nunca me he encontrado con una empresa que tuviera diferentes posiciones para programador, desarrollador e ingeniero.

Ingeniero de software es un término más amplio, puede ser un probador o un ingeniero de prueba también. Pero programador y desarrollador son más o menos los mismos términos.