15 enero 2009

Definiciones de los diferentes puestos de trabajo relacionados con el software

A la hora de definir el trabajo que estas haciendo, hay un monton de términos que pueden representarlo. El problema es que no hay una definición muy clara de las responsabilidades de cada uno de los puestos, así que he decidido buscar un poco por internet e intentar clasificar cada uno de los términos:

Programador (Programmer)

En teoría es alguien que diseña, escribe y prueba programas.

Desarrollador de software (Software developer)

Aparentemente tiene más responsabilidades que un programador, como aspectos de definición del programa, análisis de requisitos u otros elementos relacionados con el desarrollo de aplicaciones.

Ingeniero de software (Software engineer)
Un ingeniero es alguien que ha estudiado y aplica las diferentes ramas de una teoría dada. Si estamos hablando de software, implica que ha estudiado y desempeña labores de desarrollo de software. En cuanto a la profesión en si, la diferencia que veo con el desarrollador de software es que el papel de ingeniero de software lo tiene que desempeñar un ingeniero. Otra cosa es lo que cada uno entienda por estar formado en la materia, o el colegio de ingenieros del lugar

Senior programmer
Un programador experimentado que tiende a dedicarse a labores más abstractas como determinar las especificaciones o escoger tecnologías. Está relacionado con el puesto Arquitecto de software (Software Architect)

Lead programmer
Es alguien que está al cargo de uno o más proyectos y que ha adquirido un papel de liderazgo en el desarrollo. Es una especialización de senior programer.

Software Architect
Es un papel muy global de cara a uno o más proyectos. Se preocupan de las herramientas a utilizar, de la reutilización del trabajo, y habitualmente se encargan del diseño de componentes. Es una especialización de senior programer.

Software Analyst
Es la persona que estudia el dominio de una aplicacion y define los requisitos. Puede actuar como intermediario con los clientes.

Project Manager
Es la persona que se encarga del aspecto de producción del desarrollo. Entiendo que es la persona que coordina plazos, analiza riesgos y determina las diferentes etapas del proyecto

System Analyst
En principio es la persona que descompone un aspecto de la realidad en sistemas teorícos y determina la forma que tienen de interactuar esos sistemas para encontrar soluciones a los problemas propuestos. Es multidisciplinar ya que no implica unicamente al software.

Pues esta es la lista que he elaborado, si alguien puede aportar un poco más de información vendrá muy bien.