Ingeniería/Licenciatura en Sistemas de Información vs Desarrollador vs Programador
En mi opinión, considero que debido a una variedad de factores que analizaremos mas adelante, es muy difusa o hasta desconocida las competencias de un profesional formado en sistemas de información frente a las de un programador o desarrollador de software. Algo que ha llevado incluso a pensar que es lo mismo, asignando responsabilidades a un programador que están fuera de su alcance, o restringiendo el accionar de un profesional en sistemas a sólo programar o asumiendo que un desarrollador es un programador y viceversa.
Creo no ser el único que ingresó a una carrera en sistemas porque le gustaba programar, o porque quería programar videojuegos, y al momento de ver el plan de estudio o comenzar a cursar se encontró con "mucha matemática", o materias teóricas, para recién comenzar a programar en segundo año. Algo que talvez a algunos los llevó incluso a dejar la carrera.
Antes de continuar me gustaría repasar que se espera de un profesional en sistemas de información de un desarrollador y de un programador.
Programador
Desde mi punto de vista, haciendo una analogía con la construcción de una casa, pienso en la figura del albañil, el cual tiene la técnica y el conocimiento construyendo en función de los planos.
Definiría a un programador como la persona con el conocimiento de convertir requerimientos técnicos en instrucciones para una computadora, donde estos requerimientos técnicos podrían ser por ejemplo Historias de Usuario, la cuales son codificados en C#, Python, etc.
Así como el albañil ejecuta la tarea de levantar una pared según como está especificado en un plano pero aplicando su conocimiento y técnica para obtener los mejores resultados, el programador aplicando conceptos propios como POO, Principios SOLID, patrones, también busca obtener los mejores resultados.
¿Pero entonces que no estaría al alcance de un programador? Lo que quedaría fuera del alcance serían cuestiones funcionales, decisión sobre tecnologías a utilizar, arquitectura de la solución, diseño de la solución o su implementación entre otras.
Desarrollador de Software
Siguiendo la analogía, en este caso se me viene a la cabeza el maestro mayor de obras, ya que es una persona que tiene un conocimiento mas amplio, como ser en plomería, electricidad, pintura, etc. Es decir cuenta con el conocimiento suficiente para llevar adelante la construcción de una vivienda desde los cimientos hasta su finalización.
Un desarrollador de software esta capacitado para tener una mirada mas amplia, aquí por ejemplo es donde surge el concepto de desarrollador fullstack.
Al margen de la distinción entre Backend/Frontend, un desarrollador debería estar capacitado para desarrollar una aplicación de principio a fin, considerando además de las tareas de programación propiamente dicha, el relevamiento de requerimientos, el diseño de la solución, su implementación y prueba de la misma, teniendo además que tomar decisiones como la tecnología a utilizar (lenguajes, forma y tipo persistencia, entorno de ejecución...) , arquitectura (standalone, cliente servidor, web...) entre otras.
Recomendado por LinkedIn
Licenciado/Ingeniería en Sistemas de Información
Cuando hablamos de un profesional formado en sistemas de información, inmediatamente pienso en un arquitecto, una persona que no solo diseña y proyecta edificios, sino que también desarrolla soluciones habitacionales funcionales y estéticamente atractivas, considerando además otras cuestiones como el entorno, las características del relieve, posibles complicaciones propias del terreno etc, y el impacto que puede tener.
Personalmente considero que una de las claves para entender la esencia de un Ingeniero en Sistemas y su diferencia frente a un desarrollador/programador, es que el Ingeniero parte de la premisa que el desarrollo de programa informático es simplemente una de tantas herramientas disponibles al momento de enfrentar una problemática.
El Ingeniero aborda problemas del mundo real mediante un proceso de abstracción. Esto implica entender la naturaleza y los detalles de una problemática específica y luego desarrollar modelos o representaciones abstractas que capturen los aspectos esenciales de esa problemática. Estos modelos son la base para diseñar y desarrollar soluciones tecnológicas adecuadas. Incluso en algunos casos encontrar si ya existen aplicaciones que resuelvan esas problemáticas.
En otras palabras, un profesional del área de sistemas parte de una problemática particular y busca resolverla aplicando una gran variedad de conocimientos y técnicas que pueden ir más allá del desarrollo de una pieza de software.
Por otro lado un programador/desarrollador comienzan a trabajar específicamente en la solución al problema, la cual consiste en el desarrollo de una pieza de software, sin una análisis profundo en el caso del programador, o un relevamiento.
Cabe destacar, que ha sido consiente la omisión de otras habilidades que también poseen profesionales formados en las Ingenierías en general, como:
Frameworker
Este es un termino que he escuchado recientemente que hace referencia a un desarrollador que se especializa en trabajar con un marco de desarrollo específico (Angular, React, Laravel, entre otros). Un marco es una biblioteca de código preescrita que proporciona una base para el desarrollo de software, lo que permite a los desarrolladores centrarse en los aspectos únicos de su aplicación en lugar de en la infraestructura subyacente.
Los frameworkers son expertos en el marco que eligen, entendiendo sus complejidades, fortalezas y debilidades. Saben cómo aprovechar el marco para crear aplicaciones de manera más eficiente, adhiriéndose a las convenciones y estructuras que proporciona el marco.
Conclusión
Como podemos ver, no estamos ante una cuestión de "un X es mejor que Y" sino que va mas allá de eso, tanto los ingenieros como los desarrolladores o los programadores desempeñan un papel crucial en el desarrollo de software. Si bien tienen diferentes áreas de experiencia y enfoques para la resolución de problemas, ambos contribuyen a la creación de software funcional, eficiente y fácil de usar. Comprender las diferencias entre estos roles puede ayudar a elegir el camino correcto para tu carrera o encontrar a la persona adecuada para tu proyecto.