Está en la página 1de 9

12/07/2021

Estándares de Mantenimiento e
Implementación de Software

Equipo de desarrollo de software.


Duilio Chavez Cuarite

Temario

• Introducción
• ¿Como armar un equipo de desarrollo de software?
• Roles y responsabilidades en un equipo de desarrollo
de software
• Jefe de proyecto
• Líder de equipo
• Desarrollador de software
• Analista de software
• Arquitecto de software
• Programador de software
• Tester
• Quality assurance QA

Introducción

De acuerdo con un estudio realizado por Microsoft y LinkedIn, el


desarrollo de software creará millones de puestos de trabajo. En
EEUU, donde ya hay 4.4 millones de desarrolladores software. Su
empleabilidad es del 87% y como dato, aproximadamente el 88%
son hombres.
Un equipo de desarrollo de software está formado por muchas
personas con funciones diferentes y por tanto, con habilidades
distintas. Y es precisamente la aportación de esas capacidades las
que llevan al cumplimiento de los objetivos.
Por eso, como es un equipo muy complejo, se debe tener en cuenta
los principales roles dentro del mundo del desarrollo software para
poder distinguirlos. Qué funciones tiene cada uno y qué habilidades
se requieren.

1
12/07/2021

Introducción

Un error frecuente en empresas de programación es tener a todo el


mundo haciendo de todo. Aunque eso en algún que otro escenario
puede funcionar bien, causa que esas personas no puedan emitir
estimados de calidad, ya que les resulta imposible poder determinar
cuanto tiempo van a dedicar a cada tarea.
Es por ello que los roles dentro de un equipo de programación deben
ser lo más dedicados posible. Obviamente, dependiendo del tamaño
de la aplicación, del tiempo y de los recursos disponibles, el equipo
podrá ser de un tamaño u otro. Pero hay una serie de puestos que son
imprescindibles para que todo funcione adecuadamente. Estos
puestos tienen unas responsabilidades bien definidas.
En una empresa pequeña, varios de estos roles pueden ser realizados
por la misma persona. En organizaciones más grandes, el objetivo
debe ser disponer de más equipos de este tipo y hacerlos interactuar
correctamente.

¿Cómo armar un equipo de


desarrollo de software?

¿Qué hace diferente a tu empresa de la competencia? Imagínate


que en desarrollo de software cualquiera de nosotros pudiera tener
acceso a todos los tipos de tecnología y que pudieras hacer que el
proyecto funcionara independientemente de la tecnología que
selecciones; entonces, ¿qué nos distinguiría de nuestros
competidores?

Podrías concluir muchas cosas, pero la respuesta debería de estar


relacionada con las personas que integran tu equipo y el liderazgo
del mismo. Esa es la diferencia más puntual y fundamental entre tu
empresa y la competencia. Esto es aún más evidente en
tecnologías de información y desarrollo de software, pues la
especialización exige segregar aún más los roles que cada
especialista juega dentro de un equipo de desarrollo.

¿Cómo armar un equipo de


desarrollo de software?

Llámalo equipo, gente, personas, integrantes, colaboradores,


“superhéroes” o como gustes, pero es tu equipo de desarrollo
quien te dará una ventaja competitiva sobre tu competencia y no
bastará con tener a los mejores individuos y especialistas, tienes
que hacer que como equipo entreguen el mayor valor al negocio y
les quede claro cuál es la visión de la empresa o producto en el
mercado.

Por lo tanto, la gran pregunta es: ¿cómo armar este equipo


campeón o élite de desarrollo de software?, ¿qué componentes y
cualidades tiene un equipo de desarrollo de estas
características?, ¿en cuánto tiempo puedo armar un equipo de
este tipo?.

2
12/07/2021

Roles y responsabilidades en un
equipo de desarrollo de software?

Jefe de proyecto

Es el encargado de realizar el análisis de los requerimientos del


cliente. De hacer el seguimiento diario de las tareas y de resolver
cualquier problema de comunicación con otros equipos si los
hubiera. En el caso de que este equipo se convierta en cliente de
otro equipo, esta persona es la que se encarga de realizar la
comunicación con ellos.
Obligatoriamente tiene que tener un background de
programador, necesita entender a los programadores y la
problemática a la que se enfrentan diariamente para poder
asegurar que los requerimientos recogen toda la información
necesaria para poder realizar la tarea. Es el responsable de que
la implementación de esos requerimientos se haga
correctamente.

3
12/07/2021

Jefe de proyecto

Es la persona que gestiona el buen funcionamiento del proyecto,


quien controla y administra los recursos (tanto personales como
económicos) con el fin de cumplir el plan y el objetivo definido. Se
encargan de que todo funcione según lo establecido, resolver
desviaciones en el plan, y hacer que los diferentes equipos del
proyecto se sincronicen y trabajen juntos (distribución de tareas,
flujo de actividades, tareas administrativas, contrato con el cliente,
dirección y control). Además, es la cara visible frente al cliente,
quien le informa de los avances y el estado del proyecto. Su
misión es cumplir con las expectativas del cliente.

Líder de equipo

Es el programador líder, debe ser alguien senior, con


capacidad organizativa. Se encarga de redactar y mantener
actualizados los requerimientos. También se encarga de
escribir las especificaciones técnicas y crear las tareas,
asignándolas a los desarrolladores de su equipo. Sus tareas
de programación deben limitarse única y exclusivamente a la
arquitectura, marcando la línea a seguir por el resto de
programadores. Aparte de esto, tiene que revisar el trabajo de
los programadores a su cargo para asegurar la calidad del
código escrito.

Desarrollador de software

Es un programador, que se encarga de ejecutar el trabajo


asignado por el líder del equipo. En un proyecto de software,
normalmente el 20% del código constituye arquitectura y el
80% restante consiste en utilizar esa arquitectura para
completar los requerimientos. Los desarrolladores son los
encargados de completar ese 80%.

4
12/07/2021

Desarrollador de software

El desarrollador de software será quien reciba la documentación


creada por el arquitecto y el analista, y quién implemente el producto
según ésta.
Este perfil conoce y es capaz de realizar todas las tareas de
desarrollo, pero se ciñe a la implementación y delega otras funciones
(como la de programación, el testeo, la supervisión o el
mantenimiento) a otros miembros del equipo. Su responsabilidad es
más amplia, y tiene como misión que todos los aspectos de la
implementación del proyecto funcionen bien.
Su diferencia con los analistas puede ser muy sutil, ya que el
desarrollador puede participar en la definición del producto, en las
especificaciones y requerimientos, en el diseño y mejora de
prototipos, o incluso el análisis del coste y beneficios de elegir un tipo
de arquitectura u otra.

Desarrollador de software

Aquí hay un debate histórico, y es la diferencia entre un desarrollador


y un ingeniero de software. La “regla de oro” cuando se trata de
diferenciar: “un ingeniero de software puede ser un desarrollador de
software pero un desarrollador no puede ser ingeniero de software”. A
“grosso modo”, un desarrollador es alguien que trabaja con un
programa, mientras que un ingeniero trabaja normalmente con la
creación de ese mismo programa. Un ingeniero desarrolla y mantiene
la plataforma donde los desarrolladores luego crear el programa
mismo.
Depende de lo que vayas a desarrollar (si es una web, un SaaS, una
aplicación, una aplicación móvil…). Su trabajo es muy amplio, así que
ten muy presente lo que vas a desarrollar.

Desarrollador de software

Primero, el background técnico (bien ingeniería informática o


técnico superior). El Desarrollador deberá dominar los lenguajes
de programación (uno o más), conocer de Bases de Datos,
servicios web, aplicaciones orientadas a servicios, protocolos y
lenguajes de comunicación, metodologías ágiles, herramientas
de control…

Además, tendrás que buscar a una persona con iniciativa,


capacidad de autoaprendizaje, capacidad de análisis y atención
al detalle. También tendrá que trabajar en equipo, por lo que su
capacidad de colaboración es importante.

5
12/07/2021

Analista de software

Interviene en las primeras fases del proyecto donde se realizan las


especificaciones de las necesidades o la problemática del cliente,
desde lo general al detalle. Como experto en el problema del cliente,
el analista de software trabaja junto a éste para definir las
especificaciones técnicas del producto correctamente. Además, tiene
la misión de traducir esos problemas del cliente en especificaciones
con sentido para el resto del equipo que luego va a desarrollar el
producto.
Además del background técnico, tendrás que evaluar la capacidad de
análisis, la orientación al detalle, y el foco en resultados. El analista
de software deberá tener una buena capacidad de comunicación
para saber traducir los requerimientos del cliente a instrucciones para
el equipo, y además, trabajar codo con codo con el cliente.

Arquitecto de software

Es la persona o personas con el suficiente conocimiento técnico del


producto o servicio como para buscar su aplicación técnica a las
necesidades del cliente. Tiene como misión crear, durante todo el
proceso de desarrollo, la documentación que recoge los requisitos
(junto con el analista de software), y será él quien centralice las
decisiones técnicas sobre los problemas que irán surgiendo,
asegurar la calidad, y mejorar continuamente la arquitectura.

Un arquitecto de software tendrá en cuenta tanto los requisitos


técnicos y funciones, como los requisitos no funcionales. Los definirá
junto al analista y los priorizará. Después pensará en cómo se
resolverán estos problemas y definirá la arquitectura. Es decir, la
introducción de la estructura, directrices, principios y liderazgo de los
aspectos técnicos del proyecto.

Arquitecto de software

En este proceso, además, tendrá que seleccionar la tecnología que


se va a emplear, teniendo en cuenta diversos factores como el coste,
las licencias, la relación con los proveedores, la estrategia, la política
de actualización…
Siendo este rol uno de los más importantes y menos conocidos, el
arquitecto de software debe ser un perfil con dotes de facilitador,
formador y líder.
Además de un buen conocimiento técnico (mentalidad técnica,
atención al detalle, experiencia en desarrollo de software…), el
arquitecto de software debe tener una visión global, no sólo del
proyecto, sino del ecosistema tecnológico. Como decimos arriba,
debe tener un rol de líder, de facilitador y apoyo del equipo, de
control y supervisión (metodologías ágiles), así como de mejora
continua.

6
12/07/2021

Programador de software

Es el encargado de traducir en código la especificación del sistema.


A pesar de que el desarrollador también puede “picar código”, los
programadores se dedican exclusivamente a esto. Esta persona
debe conocer los diferentes lenguajes de programación. Y además,
se encarga de depurar los errores, implementar nuevas
funcionalidades o mantener de forma general las aplicaciones
cuando lo necesiten. Esto no quiere decir que un programador no
pueda conocer de presupuestos, planeación o requerimientos.
Dependerá de la experiencia.
Además de los requisitos formativos o de la capacidad autodidacta,
tendrás que buscar una persona flexible, con capacidad para trabajar
en equipo, proactivo, orientación al detalle y a la calidad del código.
Un buen programador conocerá de varios lenguajes de
programación, varios frameworks, CMS y metodologías de desarrollo.

Tester

Las pruebas son una parte importante para asegurar que el software
funciona de la manera que debería. El papel de ‘tester’ se realiza a
menudo por los desarrolladores para los aspectos técnicos y los
usuarios para los aspectos funcionales. Un problema que surge de
hacer a los desarrolladores probar su propio código es que, no
importa lo bueno que sean, se ven influidos por la forma de su código
fue creado. Cuando se prueba, se tendrá en cuenta esas mismas
situaciones que que ya se tuvieron en cuenta a la hora de escribirlo.

Si se prueba código de otra persona, se puede pensar en escenarios


que la otra persona no los pensó. Así que incluso si no se tiene un
equipo de Testers dedicado, es una buena idea que cada
desarrollador pruebe código de otro desarrollador, en lugar del suyo
propio.

Tester

Se encargará de asegurar que los requisitos definidos por el


arquitecto de software se cumplen en la implementación del producto
o servicio realizada por los desarrolladores y/o programadores. Para
ello, será responsable de aplicar diferentes métodos de testeo junto a
los programadores. Informará de todos los errores encontrados
durante la fase de pruebas.
Además de tener una ingeniería informática o de sistemas, o ser
técnico superior en desarrollo de software, el tester deberá conocer de
metodologías y modelos de calidad de software, así como
herramientas para la ejecución y seguimiento de testing (volumen,
Smoke Test, performance, funciona, técnico…). Debe tener
experiencia en automatización y scripting, principalmente. Y sería
deseable que poseyera la Certificación Internacional en Testing,
ISTQB.

7
12/07/2021

Tester

Se encargará de asegurar que los requisitos definidos por el


arquitecto de software se cumplen en la implementación del producto
o servicio realizada por los desarrolladores y/o programadores. Para
ello, será responsable de aplicar diferentes métodos de testeo junto a
los programadores. Informará de todos los errores encontrados
durante la fase de pruebas.
Además de tener una ingeniería informática o de sistemas, o ser
técnico superior en desarrollo de software, el tester deberá conocer de
metodologías y modelos de calidad de software, así como
herramientas para la ejecución y seguimiento de testing (volumen,
Smoke Test, performance, funciona, técnico…). Debe tener
experiencia en automatización y scripting, principalmente. Y sería
deseable que poseyera la Certificación Internacional en Testing,
ISTQB.

Qualityt Assurance (QA)

Aunque cuando hablamos de Tester y Quality Assurance (AQ)


como lo mismo, uno y otro perfil pueden tener diferencias
notables. “Un tester se encarga de encontrar fallos, pero un QA
no sólo los encuentra, sino que ayuda a prevenirlos”. Por tanto,
un QA se asegura de la calidad del software durante todas sus
fases, no sólo en la fase de pruebas como un tester. Podría
decirse que es una evolución de éste al que se le han añadido
tareas con el fin de asegurar la calidad global del proyecto y del
producto o servicio resultante.

Quality Assurance (QA)

Además, un QA (Asegurador de calidad) puede participar en


la definición del producto, en la definición de los pasos de la
integración continua, y/o en la configuración de herramientas.
No se puede entender una buena integración continua sin
tests automáticos en ella. Tiene una visión más horizontal y
puede detectar potenciales problemas en la implementación e
incluso prevenirlos.
Es recomendable además que conozca de metodologías
ágiles. Finalmente, se exige un nivel de inglés medio/alto
(lectura).

8
12/07/2021

Quality Assurance (QA)

No es necesario que sepa de programación, pero sí es


altamente recomendable. Tanto si es un QA Funcional, como
Técnico, necesitará conocimientos en el diseño y ejecución de
pruebas, como en el seguimiento y la optimización de los
estándares de calidad. Además, el QA participará de todo el
proceso, trabajando codo con codo con el Project Manager, por
lo que necesitará saber de metodologías ágiles y asegurarse de
que cumplen los estándares tanto técnicos como de negocio.
Por ello, tendremos que comprobar su capacidad de análisis, y
visión estratégica, así como su capacidad para anticiparse a
errores o problemas futuros.

También podría gustarte