× 2do Teorema del Cálculo Mental: En todos los cálculos, el valor que se creía más correcto es el causante de todos los errores.

04/07/2016 La diferencia entre un programador y un ingeniero de software

Una pregunta muy común que recibo de los lectores es diferenciar un Programador y un Ingeniero de Software. Para muchas personas, compañías y organizaciones no existe tal diferencia, pero en mi opinión, si existe y es la siguiente:
La Ingeniería de Software es una disciplina que lidia con el diseño, desarrollo, operación y mantenimiento de software. La gran diferencia entre un Ingeniero de software y un Programador, es que el Programador generalmente solamente se preocupa por depurar errores, implementar nuevas funcionalidades, y darle mantenimiento general a la aplicación. El programador realmente no tienen noción de presupuesto, planeación o requerimientos del proyecto.
Cuando un Programador (o Ingeniero) sin experiencia en las áreas descritas anteriormente decide tomar el rol de Ingeniero de Software; generalmente los proyectos se entregar tarde, no cumple con todo los requerimientos o se excede el presupuesto inicial del proyecto y el proyecto entra en una crisis del software.
El trabajo de Ingeniero de Software es precisamente el de evitar la crisis del software.
Por ejemplo:

  • Se encarga de recolectar los requerimientos.
  • Analizar los requerimientos.
  • Crear la especificación de la aplicación.
  • Validar los requerimientos.

  • El proceso anterior se le conoce como Ingeniería de Requerimientos:
    El resultado de la Ingeniería de Requerimientos es un conjunto de modelos de comportamiento, modelos contextuales y modelos de procesos de negocio que el Ingeniero de Software analiza para entender el problema, diseñar una solución y crear un plan de trabajo/calendario de hitos.
    Los Ingenieros de Software típicamente tienen un plan que les permite controlar y monitorear el progreso del proyecto. Esto permite a Ingenieros de Software entregar proyectos a tiempo, con el presupuesto inicialmente acordado y que cumple los requerimientos iniciales.
    Es hasta el final de la "cadena" donde entra el papel del programador: la implementación del proyecto (programar).
    El gran problema de la Ingeniería de software es que dado a que es un campo que relativamente apenas emerge (o al menos no tiene cientos de años de existencia como, por ejemplo, administración de negocios) muchos programadores se auto denominan "Ingenieros de Software" cuando realmente son solamente programadores.

    ¿Qué carrera es mejor?

    Ninguna de las dos! Ambas carreras son igualmente interesantes y se enfocan en diferentes áreas del desarrollo de Software.
    Como Ingeniero de Software vas a pasar la mayor parte de tu día de trabajo en junta con equipos de marketing y negocios. Posteriormente, vas a pasar otra buena parte de tu día administrando proyectos, diseñando diagramas, haciendo gráficas de Gantt, etc.
    El Ingeniero de software tiene que ser una persona multi disciplinaria que sirve como "interprete" entre los empleados técnicos y los no técnicos en una compañía.
    Por otra parte, el programador invierte la mayor parte del día, válgase la redundancia, programando. Así que si prefieres estar la mayor parte del día programando, experimentando lenguajes, aprendiendo nuevas tecnologías, entre otras cosas; Entonces la carrera de programador es mucho mejor opción para ti.
    Sin embargo, el mundo real es muy diferente al mundo académico. Es muy probable que, independientemente de la carrera que escojas, inicies trabajando como programador y eventualmente transiciones como Ingeniero de Software.