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.

  • Eduardo_Andres

    Gracias amigo, me respondiste una gran ingcógnita, solo que aca en Chile se denomina Ingeniería en Informática

    • Interesante :) probablemente en México se denomina de la misma forma, pero hasta hoy me vengo enterando. Gracias por aclararlo!

      • Rene Israel Ibarra

        ciencias de la computacio lo que tu estudiastes que vendria siendo aqui en mexico? actualmente estudio ing en sistemas pero tambien la oportunidad de llevar otra carrera como ing de software o ing telematica a distancia saludos

        • Hola René, tengo entendido que Ciencias de la computación también es una carrera en México. Al menos, en mi alma mater, la UANL, la carrera de ciencias en la computación, solamente estaba disponible en la facultad de física y matemáticas; mientras que la Ingeniería de Software y de Sistemas, solo se encontraba disponible en la Facultad de Ingeniería.

          Dicho eso, las ciencias de la computación son muy diferentes a las ingenierias en informática/software/sistemas. Están mas enfocadas en la investigación y desarrollo de nuevos algoritmos, arquitecturas, etc... mientras que las ingenierias tienden a ser mas prácticas y orientadas a la industria.

  • AlexisRuiz1989

    Muy interesante!

  • joseph

    Lo ultimo me parecio muy certero, "empezar como programador para posteriormente ser ingeniero de software", ya que hay personas que se dicen llamar ing de software y no saben interpretar entr cliente y programador porque sencillamnete no han programado!

    Saludos,

    • Alejandro Nava

      Exacto, no saben diferenciar entre, cliente, usuario, programador y probador.

  • Mary Elizabeth RM

    Eso es realmente cierto, hoy por hoy al menos en mi carrera (Ingeniería en computación) cada alumno elige hacia dónde se va a orientar, así como lo plantea pienso que es mejor empezar desde la programación para posteriormente dar ese salto a la ingeniería de software, ademas que no estaría de más el profundizar conocimientos para poder dar el salto en firme y en la medida de lo posible evitar los errores que menciona.
    Saludos

  • Juan Carlos Aillón

    Interesante el artículo, solo por un pequeño detalle: El programador interviene en la etapa de desarrollo no en la de implementación...

  • nor

    Soy programador y aplico no solo los requerimientos de software, creo que desde el momento en que has dicho que eres ingeniero me di cuenta que el tema es subjetivo. Estoy en la implementación también y entre muchas cosas más, sabes, pienso que cuando realmente hace las cosas como se deben aprender tantas cosas se vuelve una rutina y es hasta de sentido común ver algo nuevo, con eso quiero decir que realmente conozco muchos ingenieros que son una pena, el mundo necesita ingenieros! pero no personas con carton sin ser realmente ingenieros.

    • No entiendo porque el tema es subjetivo solo porque mi título es Ingeniero de Software. También fui programador en su momento, y definitivamente había una enorme diferencia entre lo que hacía antes y lo que hago ahora.

      Naturalmente los títulos y las posiciones, varían de compañía a compañía, quizá tu realmente tienes el rol de un Ingeniero, pero en tu compañía un programador y un Ingeniero es lo mismo y estoy totalmente de acuerdo contigo, que hay personas cuyos títulos dicen "Ingenieros" cuando ni programar saben.

      Como mencione en el artículo, un título no es mejor que el otro, simplemente son diferentes. Hay Programadores Senior que saben mas de programación y desarrollo que los Ingenieros, pero la falta de habilidades interpersonales son los que no los hacen las personas adecuadas para ser un canal de comunicación entre diversas disciplinas.

      • nor

        Tengo un mal y son las respuestas impulsivas(creo que entenderás), ahora con la cabeza más fría, si tienes razón en lo de la comunicación.

  • Carlos Jaramillo O.

    "Es muy probable que, independientemente de la carrera que escojas, inicies trabajando como programador y eventualmente transiciones como Ingeniero de Software." True History! xD Saludos desde chile, un agrado leer tu pagina.

  • Elio Valenzuela

    Interesante articulo.!
    Estoy por iniciar la carrera de Ing. en Desarrollo de software, y la verdad que me haz sacado de algunas dudas. Por cierto, crees que sea necesario que compre una Mac, para usarla mientras curso la carrera?

  • Kedinn Turpo

    Bueno yo soy ingeniero, programador y diseñado ps no dependo de nadie :D aprendo para crear y no para comer

  • Cristian Rengifo

    Excelente punto, Aunque mi cargo es Ingeniero de Software, nunca considere una diferencia entre Ingeniero de Software y Programador

  • eclipsa

    el mundo no necesita ingenieros, necesita a gente con ingenio!

    • Muy cierto :)

    • Ferney Pérez

      Mejor de ambos ¿no?

  • Victor Orellana Meza

    Hoy en día con el avance en el campo del desarrollo de Software, hay diferencias muy marcadas entre un programador y un Ing. de Software.

    Teniendo en cuenta el ciclo de vida del Software. Un programador participa mayormente de manera específica en la etapa de implementación, la cual es la parte más trabajosa y tediosa si es que no te gusta, lo cual es la mayoría de gente. De todas maneras un programador puede involucrarse en otras etapas.

    Un Ing. de Software tiene como objetivo producir un Software de calidad utilizando técnicas y recursos de la manera más factible y que esto se mantenga en el tiempo teniendo un "conocimiento integral del negocio o sistema" pudiendo participar en cualquier etapa de vida del Software y hacerlo aplicando tanto teoría como práctica utilizando técnicas y/o procedimientos ya definidos.

    Por Ej. en el etapa de Diseño un Ing. de Software tiene que tener la suficiente visión para definir tanto la arquitectura física y lógica del sistema teniendo en cuenta la factibilidad técnica y económica para lo cual debe tener conocimientos como SOA, computación distribuida, SOAP, REST, Web Service, entre otros.

  • Ness Ojeda

    Buenas, estoy comenzando mi carrera como Ing en informática, y me siento mas atraido por la ing de software que por programar. tengo unas dudas:
    ¿Puedo llegar a trabajar como ing de sotfware sin saber programar bien?
    ¿Que puntos son esenciales estudiar?

    • Hola :) gracias por tu comentario! Con respecto a tus preguntas:

      1. Si. Todos los que empiezan a trabajar como Ing. de Software no saben programar bien ;) (falta de experiencia) así que en tu primer trabajo como Ing. de Software/Programador ve con una mente abierta para aprender.

      2. Hice un vídeo al respecto en donde precisamente explico los puntos esenciales que todo programador/ing. de software (especialmente ing. de software) deben dominar:

  • Carina Gonzalez

    Hola, que tal? Recien empecé con el uso de computadoras Mac. Se me dio la oportunidad y compre una macbook air la semana pasada. Estaba bastante perdida al principio pero a medida que voy usandola mas me voy enamorando. Mi idea es volver a programar. y creo que esta notebook podra ayudarme. Yo soy Analista de Sistemas y Diseñadora Web pero por el trabajo que realizo, no volvi a programar despues de recibirme de la universidad. Trabajo como profesora de computacion. Se que para iniciar esta barbara, pero espero que a medida que vuelva "al ruedo", me comprare otra con mas ram y mejor procesador. Que em recomiendan, por donde volver a comenzar programando? Gracias!

    • Carina, gracias por escribir. Basado en lo que mencionas con tu experiencia con diseño web te recomiendo que empieces con JavaScript. Ya ni siquiera es necesario que sepas un lenguaje de backend como PHP, Ruby o Python para que puedas hacer páginas dinámicas ya que puedes utilizar JavaScript con Node.js para hacer sistemas.

      Si vas a empezar con JavaScript, te recomiendo que te actualices en los siguientes temas:
      - es6 que es la versión más reciente de JavaScript
      - Babel (un transpilador de Javascript que te permite escribir en JavaScript moderno, y genera JavaScript compatible con navegadores antiguos)
      - React (Te recomendaría Angular 2, pero Angular 2 ya no usa JavaScript, utiliza TypeScript)
      - Node.js

  • Ivo Arturo Mijichich Jessen

    hola, no soy ingeniero, no sé si podrías hacer un video sobre el manejo de la consola cmd, el correcto uso para eliminar virus, archivos, etc.

  • Héctor Estigarribia

    el certificado de seguridad de esta página ha vencido, sigue activo este blog?

    • Hola Hector, disculpa la tardanza en contestar. En efecto el certificado expiró, y anduve algo ocupado para renovarlo. Dejé pasar mucho tiempo, pero ya quedó solucionado ese problema :) junto con una migración de servidor que ya la había pospuesto por mucho tiempo.

  • Andy Vasquez

    Que placentero es leer información tan relevante. Muchas gracias por estos aportes tan valiosos.

  • Isabel Cisneros

    ¿En que lugares esta la carrera de programacion, no la he visto, en México hay?
    ¿Un ingeniero de software programa?

    • Hola Isabel, gracias por escribir!

      No sé si exista la carrera de "programación" como tal. Las universidades generalmente las manejan como Ingeniería en Sistemas o Ingeniería de Software. Otra ruta común para trabajar como programadores sería la licenciatura en ciencias de la computación (que en lo personal es la que yo recomiendo)

      Cualquier universidad respetable de México ofrece alguna de las tres, depende de tu ubicación geográfica. Lo ideal es que las estudiaras en las mejores universidades del país como la UNAM, IPN, Universidad de Guadalajara, Universidad de Puebla, Autónoma de Nuevo León, ITESM, etc...

      • Isabel Cisneros

        Muchas gracias por la información :)

  • Stark D. Uchiha

    amm solo por curiocidad , podrias decirme cuanto tiempo te costo tener el nivel de conocimientos que posees ahora? :)

  • Alan Abel Tejeda Valenzuela

    Muchísimas gracias por el aporte, recién me decidí a investigar sobre este tema ya que me parece una gran opción para desarrollarme profesionalmente, y me doy cuenta que estoy en pañales en esto, pero gracias a este post te lo mayor claridad sobre cuál es el camino que debo escoger, mil gracias

A %d blogueros les gusta esto: