++ROLES
++
Es importante identificar el Rol del puesto de trabajo. En algunas empresas hay roles que pueden ser desarrollados por la misma persona.
El proceso de desarrollo de software
Introducción al curso de Fundamentos de Arquitectura de Software
Etapas del proceso de desarrollo de software
Dificultades en el desarrollo de software
Roles en metodologías tradicionales y ágiles
Introducción a la arquitectura de software
¿Qué es arquitectura de software?
La importancia de la comunicación - Ley de Conway
Objetivos del arquitecto
Arquitectura y metodologías
Análisis de requerimientos
Entender el problema
Requerimientos
Riesgos
Restricciones
Reto: Clasificación de requerimientos y análisis de riesgos
Estilos de arquitectura
Arquitectura, panorama y definición
Estilos: Llamado y retorno
Estilos: Flujo de datos
Estilos: Centradas en datos
Estilos: Componentes independientes
Comparando estilos: ¿Cómo elijo?
Reto: Un producto, muchos estilos
Desarrollo del proyecto
Desarrollo del proyecto: PlatziServicios Fase Startup
Desarrollo del proyecto: PlatziServicios Fase Producto en crecimiento
Desarrollo del proyecto: PlatziServicios Fase Escala global
Conclusiones del curso
Crea una cuenta o inicia sesión
¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera
Es importante que diferenciemos el ROL del puesto de trabajo, hay roles que pueden ser desarrollados por la misma persona.
Experto del dominio: En una metodología tradicional, es la persona a la que acudimos para entender las necesidades del negocio. En metodologías Ágiles --> stakeholders.
Analista: funcional/de negocio, la persona responsable de definir los requerimientos que van a llevar al software a u buen puerto. En el caso de Ágiles el dueño del producto es quien arma las historias y que nos acompaña en el proceso de construcción del software.
Administrador de sistemas / DevOps: Es el rol de operaciones y desarrollo, son las personas responsables de la infraestructura que alojara nuestra aplicación.
Equipo de desarrollo: QA / Testing se encargan de la evaluación de nuestro software, comprobar que lo que se está haciendo es lo que se espera que se haga. Desarrolladores involucrados en la construcción del software. Arquitecto, diseña la solución y análisis de los requerimientos, es un papel más estratégico. La arquitectura emerja del trabajo de un equipo bien gestionado.
Gestor del proyecto / facilitador: Llevan al equipo a través del proceso iterativo e incremental, entender lo que pasa con el equipo y motivar el avance en el desarrollo del producto.
Aportes 89
Preguntas 13
++ROLES
++
Es importante identificar el Rol del puesto de trabajo. En algunas empresas hay roles que pueden ser desarrollados por la misma persona.
Cascada | Ágiles | |
---|---|---|
Expertos del producto | Experto de dominio | Stakeholder: |
Definen los alcances | Analista | Product Owner |
Crean el producto | QA, Desarrollador, Arquitecto (aislados) | Equipo de desarrollo |
Facilitadores | Project/Product Manager | Facilitadores |
(
Metodología tradicional
Metodología ágil.
Roles según:
Desarrollo Tradicional
Metodologías Ágiles
Apuntes:
Roles
No conectar directamente Roles con Puestos de Trabajo.
Experto del dominio | Partes interesadas (stakeholders)
En una metodología tradicional el experto del dominio era la persona a la que acudíamos para resolver las necesidades de los requerimientos. Esta persona era el referente.
En metodologías ágiles suelen ser las partes interesadas o los stakeholders. El dueño del producto debe acudir a estos stakeholders para poder saber qué es lo que tiene que poder resolver su producto en todo momento.
Analista | Cliente / Dueño del producto
En la metodología tradicional la persona que indaga en qué es lo que se debe resolver. La persona responsable en definir un problema y a definir esos requerimientos que van a llevar al software a buen puerto.
En las metodologías ágiles es el dueño del producto o cliente. Tiene el poder de armar esas historias de usuario que van a ir definiendo y van a ser priorizadas para poder ir construyendo el software a medida que este dueño del producto encuentra qué es lo que necesita resolver.
Administrador de sistemas | DevOps / SER (site reliability engineer)
En metodologías tradicionales luego de hacer el despliegue de la aplicación había roles de administradores de sistemas o SysAdmins que se encargaban de toda la operación del sistema.
En las metodologías ágiles está el rol de DevOps que es operaciones y desarrollos que viene a cumplir el rol de la persona responsable de entender la infraestructura a la que va a ir nuestra aplicación y de entender los requerimientos de ese lado del mundo. También se habla del rol de SER trata de conectar el mundo de sistemas con el día a día del desarrollo de la aplicación.
Equipo de desarrollo
QA – Tester. Se encargaba estrictamente de la evaluación de nuestro software, es decir, si lo que está haciéndose es lo que hay que hacer y si funciona como se dice que funciona. Comprobar que lo que se está haciendo es lo que se quiere que haga.
Desarrollador. Muy involucrados en etapa de desarrollo e implementación.
Arquitecto. Está mucho más identificado en las metodologías tradicionales porque tiene que ver con el diseño de la solución y con el análisis de los requerimientos especialmente con los requerimientos no funcionales y los arquitectónicamente relevantes.
Gestor del proyecto | Facilitador
En metodologías tradicionales se encargaba de toda la gestión del ciclo de vida del producto.
En metodologías ágiles son facilitadores, tratan de llevar al equipo a través de este ciclo de desarrollo iterativo incremental y entender todo el tiempo qué pasa con el equipo qué les traba a través de las retrospectivas.
Me cuestan mucho las clases teóricas pero aquí andamos! =P
La verdad que la llevo unos 10 cursos en platzi pero tu manera de enseñar me encanta, hiper claro, tranquilo y con seguridad! Queda todo mucho mas fijado!
Me gusta que se comparen los roles tradicionales con los más nuevos de metodologías ágiles da una buena visión global y permite la comparación, dando visión clara de cada uno.
Doy fe no puedes unir el rol al puesto de trabajo, cada empresa tiene su forma de aplicarlos, según el tipo de organización y su modo de gestión.
El papel mas comun que hacemos como freelance y que es el mas importante es el de analista, por que antes de empezar a codear tenemos tener claro que queremos hacer
Es importante que diferenciemos el ROL del puesto de trabajo, hay roles que pueden ser desarrollados por la misma persona.
Experto del dominio: En una metodologia tradicional, es la persona a la que acudimos para entender las necesidades del negocio. En metodologias Agiles --> stakeholders.
Analista: funcional/de negocio, la persona responsable de definir los requerimientos que van a llevar al software a u buen puerto. En el caso de Agiles el dueño del producto es quien arma las historias y que nos acompaña en el proceso de construcción del software.
Administrador de sistemas / DevOps: Es el rol de operaciones y desarrollo, son las personas responsables de la infraestructura que alojara nuestra aplicación.
Equipo de desarrollo: QA / Testing se encargan de la evaluación de nuestro software, comprobar que lo que se esta haciendo es lo que se espera que se haga. Desarrolladores involucrados en la construcción del software. Arquitecto, diseña la solución y analisis de los requerimientos, es un papel mas estrategico. La arquitectura emerja del trabajo de un equipo bien gestionado.
Gestor del proyecto / facilitador: Llevan al equipo a través del proceso iterativo e incremental, entender lo que pasa con el equipo y motivar el avance en el desarrollo del producto.
(información tomada de la descripción de la clase.)
El experto del dominio. Es aquella pesona que nos permite consolidar información de requerimientos del negocio.
El Analista y el PO. Si bien tienen funciones diferentes según la implementación del proyecto. Poseen caracteristicas similares como descubrir y definir cuales son las necesidad a cubrir por el negocio. Y con ello poder extraer información detallada de cada caso de uso o escenario planificado.
Admin DB y Devops. Perfiles los cuales contribuyen al desarrollo y mantenimiento de la infraestructura del proyecto.
Equipo de Desarrollo. Quienes aportan sus conocimientos y esfuerzo para lograr a obtener los entregables del producto en base a los requerimientos.
Gestor del Proyecto o Scrum master. Este perfil contribuye al equipo facilitando y gestionando los diferentes escenarios en los que se puedan bloquear o se pueda mejorar. Indicando cuales son las mejores formas de manejar la situación. Tambien controlando los hitos con los que el proyecto debe cumplir.
Hoy en día es muy importante tener un conocimiento básico de cada uno de estos roles con la finalidad de apoyar al equipo en la toma de decisiones. No basta con ser expertos en nuestra especialidad si no sabemos con quién contar y cómo se comporta el equipo en general.
Entender los roles es algo muy útil!
Los roles en la generación de software como solución a un problema son fundamentales pues también se tiene en cuenta el termino de equipos multidisciplinarios. El método tradicional se ajusta mas a ésta estructura, desarrollar software con la ayuda de varias expertos en diferentes áreas. El método Ágil por el contrario, según veo, se enfoca mas en solucionar el problema con el feedback del cliente o dueño del producto, por supuesto con la ayuda de profesionales, pero las soluciones vienen “inspiradas” más en los clientes que en lo que desarrollen los profesionales de forma intuitiva. Por favor corrijanme si estoy equivocado. Gracias.
Procesos tradicionales:
Lista de roles de desarrollo de software, tanto como un proceso de desarrollo de software tradicional y metodologías ágiles
- Experto del dominio: El referente a la hora de consultar “¿que es lo que se requiere para este software?”.
- Partes interesadas o stakeholds: Son quienes presentan la necesidad ante nuestro producto, y por ende a quienes solicitaremos feedback
- Analista: Es quien indaga en que hay que resolver, en definir un problema y los requerimientos que va a guiar por buen camino al desarrollo del software.
- Cliente / Dueño del producto: Es el cliente que tiene y conoce su problema o necesidad, quien puede armar historias (completas o iniciales) para el desarrollo del producto.
- Administrador de sistemas: Encargado de operación del sistema, mantener el servidor, actualizar librerías del sistema operativo, encontrar errores para dar el feedback al equipo de desarrollo, etc.
- DevOps / SRE site reliability engineer: Encargado de operaciones y desarrollo, debe de entender la infraestructura donde ira la app y entender el requerimiento del backend.
- QA-Tester: Quienes evaluaban la funcionabilidad del software, comprobar si el objetivo se esta cumpliendo, a través de tests.
- Desarrollador: involucrados en la etapa de desarrollo del software y implementación.
- Arquitecto: Encargado de realizar el diseño de la solución y análisis de los requerimientos.
- Equipo de desarrollo: Equipo encargado de todo el desarrollo, como una mezcla de QA-Tester, Desarrollador y Arquitecto autogestionado.
- Gestor del proyecto: Encargado de las entregas, cumplir con los objetivos, gestión del procesos del mismo proyecto.
- Facilitador: Gestiona el proyecto y al equipo a través del proyecto mismo, comprender al mismo equipo y proyectar los siguientes springs.
Los Scrum Master son los Gestores de Proyecto en el contexto de Scrum.
Se construye iterativamente y va cambiando todo el tiempo.
Roles
Vamos a listar los roles en un proceso de desarrollo tradicional y ágiles
Cada rol puede ser desarrollado por puestos de trabajos únicos
Roles:
Tradicionales Ágiles
Experto del dominio Stakeholders
Analista Cliente - dueño del producto
Administrador de sistemas DevOps / SRE
Equipo de desarrollo – (QA desarrolladores Arquitecto) Equipo de desarrollo
Gestor de proyecto Facilitador (Scrum Master)
Equipo de desarrollo – QA Tester – Desarrollador – Arquitecto (tradicionales)
Gestor de proyecto (tradicionales)
Se encarga de la gestión del ciclo de vida del proyecto, las entregas, cumplir con el plan
Facilitador (ágiles)
SCRUM MASTER viene a ser el rol de gestor de proyecto y tratan de llevar el equipo a través de este ciclo de desarrollo iterativo incremental a través de springs, entender todo el tiempo que es lo que pasa con el equipo, cuales son los problemas que tienen, planing de lo que se va a hacer en el siguiente spring, estar atento de las fechas… todo en un contexto más dinámico donde no tiene una especificación completa de lo que se va a hacer sino que se construye iterativamente y va cambiando todo el tiempo
¿Como Resolver los Problemas Existenciales?
Ejemplos de cada uno:
Roles Involucrados en el Proceso de Desarrollo de Software
Es importante que diferenciemos el ROL del puesto de trabajo, hay roles que pueden ser desarrollados por la misma persona.
Experto del dominio: En una metodología tradicional, es la persona a la que acudimos para entender las necesidades del negocio. En metodologías Ágiles --> stakeholders.
Analista: funcional/de negocio, la persona responsable de definir los requerimientos que van a llevar al software a buen puerto. En el caso de Ágiles el dueño del producto es quien arma las historias y que nos acompaña en el proceso de construcción del software.
Administrador de sistemas / DevOps: Es el rol de operaciones y desarrollo, son las personas responsables de la infraestructura que alojara nuestra aplicación.
Equipo de desarrollo: QA / Testing se encargan de la evaluación de nuestro software, comprobar que lo que se está haciendo es lo que se espera que se haga. Desarrolladores involucrados en la construcción del software. Arquitecto, diseña la solución y análisis de los requerimientos, es un papel más estratégico. La arquitectura emerje del trabajo de un equipo bien gestionado.
Gestor del proyecto / facilitador: Llevan al equipo a través del proceso iterativo e incremental, entender lo que pasa con el equipo y motivar el avance en el desarrollo del producto.
Duda…el gestor o facilitador es el llamado proyect manager?
Y entonces con las metodologías ágiles si sigue existiendo el papel de arquitecto o como se maneja?
¿que tipos de trabajo puedo tener con ello?
Las metodologías tradicionales se caracterizan por tener un proceso de desarrollo de software más estructurado, lineal y faseado. Seguir este tipo de metodología implica un mayor nivel de planificación y documentación, y se suele utilizar en proyectos grandes y/o complejos. Por otro lado, las metodologías ágiles se caracterizan por ser más flexibles y adaptables, y se enfocan en la entrega de productos de software de alta calidad de forma incremental. Esto significa que el proceso de desarrollo es más iterativo y cíclico, y se centra en el trabajo colaborativo de equipos pequeños.
En las metodologías tradicionales suele haber una separación más clara de roles, y cada persona suele tener una función más específica. En las metodologías ágiles, en cambio, se fomenta la colaboración y el trabajo en equipo, y cada persona suele tener un rol más general.
esta mal este show.
por eso estamos como estamos…
los clientes no saben ni que…
los clientes finales por ejemplo, los usuarios de finales de la app ponen sus quejas en google play y estas jamas son atendidas…debe haber un scrum master o facilitador, un equipo completo de 5 personas leyendo dia y noche esos requirimientos y DEDICANDOSE UNICAMENTE A ELLOS… A SOLUCIONARLOS!!! diciendole al equipo que el lo que se debe modificar en el UI y en el juego para que los usuarios finales vean que son escuchados…
ese rol no existe, lo acabo de descubrir.
ESE ROL SERA LLAMADO: LISTENER (LISTENERS TEAM)
DE NADA
😗
Arquitecto se encarga de analizar los requerimientos no funcionales para diseñar y relacionar conceptualmente módulos o componentes de un sistema.
Estan jugando Pubg, le dan duro al mouse jejejeje! Saludos!
Dejo mis apuntes de esta clase por si a alguien le sirve.
En formato PDF
Y a continuación en imagen:
Experto de Dominio: Para definir las necesidades del proyecto.
Entendiendo los roles en un equipo interdisciplinario.
Muy interesante!
¿El gestor de proyectos cumpliendo la metodología ágil se puede considerar como un “Scrum”?
Lo entendiendo como 5 aspectos:
Lo que me crea un poco de confusión es ¿Por qué los Stakeholders y los Dueños de Producto están separados?.
Algunos libros recomendados?
interesados: es la fuente de los requerimientos y quien tiene la necesidad que resuelve el software
analista: es quien levanta los requerimientos para el área técnica
sys admin: es la persona encargada de manejar toda el área de producción e infraestructura para que el software pueda ser explotado económicamente
Equipo de desarrollo: es toda el área técnica que construye el producto de software , suele dividirse en pequeños equipos específicos por área
facilitador: es quien se encarga de toda la administración relacionada con el proceso de desarrollo
Metodologia Tradicional
Experto de dominio
Analista
Administrador de Sistemas
QA - Tester / Desarrollador / Arquitecto
Gestor del Proyecto
Metodologías Ágiles
Partes interesadas (stakeholders)
Cliente / Dueño del Producto
DevOps / SRE
Equipo de Desarrollo
Facilitador
DevOps
Muy buena clase.
Agile es clave
Roles en metodologías tradicionales vs ágiles.
Roles involucrado en el desarrollo de software tradicional:
• Experto de Dominio, esta persona sabía lo que se requiere para el proyecto
• Analista funcional / negocio: Indaga sobre el problema que se va a resolver. Definir un problema y los requerimientos. Se necesitaba tener un análisis muy detallado para empezar a desarrollar el proyecto.
• Administrador de sistemas: Se encargaban de la operación del sistema.
• QA, Testing, Arquitecto: Comprobar que lo que se está haciendo es lo que se requiere para resolver el problema.
• Gestor de proyecto: Es el encargado de todas las entregas y gestión del ciclo de vida del proyecto
Roles involucrado en el desarrollo de software ágil:
• Por lo general son los stakeholder los que tienen las bases para el desarrollo del proyecto
• El dueño del producto/cliebte es el que define lo que necesita para resolver su problemática.
• DevOps cumple el rol de entender la infraestructura y mantenerla
• Equipo de desarrollo: Lleva a cabo las tareas de desarrollo testing QA.
• Faculitador: lleva la gestión del proyecto en tood el ciclo de vida del proyecto.
Rol | Metodologías Tradicionales | Metodologías Ágiles |
---|---|---|
Experto de Dominio | Era la persona que acudiamos para resolver las necesidades de los REQUERIMIENTOS Que se requiere para este Software | Hace un analisis de los stakeholders (Que resolver de su Producto?) |
Analista | Es la Persona que indaga en Que es lo que hay q resolver, define un problema | Es la persona que define los requerimientos es El Cliente, el va ir definiendo como sera el software a medida Cual es su Problematica. |
Administrador de sistemas | Se encargaban de toda la operacion del sistma(Si había servidores, actualizar librerias, Encontrar Errores en los logs y dar el Feedback al equipo de desarrollo) | Fue reemplazado por el DevOps (Operaciones y Desarrollo unidos) Es la persona Responsable de Entender la Infraestructura a la que va nuestra app y Entender los Requerimientos de ese lado del mundo, es tambie conocido como SRE (site reliability engineer / Ing de la Confianza del Sitio) es similar al Administrador de Sistemas pero Conectando el mundo de sistemas con el mundo del dia-dia de la app |
QA - Equipo de Texting | Evaluación de Software | Fueron Unidos en un Solo Equipo de Desarrollo (QA-Tester, Desarrollador, Aquitecto) Se Encarga de Tomar las decisiones arquitectonicas (La arquitectura Emergera de un Equipo Autogestionado) |
Gestor del Proyecto | Se ecargaba de todo lo que era la entrega, Cumplir con toda la gestion del ciclo de Vida del Proyecto | Se conoce como Facilitador (SCRUM Master) lleva al equipo atraves de el ciclo de (Entender que es lo nos Para) |
Fuente @noemk2
ROLES Experto en dominio
Analistas
Administrador de sistemas
Equipo se desarrollo
Gestor del proyecto
Muy buena explicación de los roles
Excelente comparativa de los roles en el modelo tradicional vs ágiles
Pero bueno que una sola persona este asumiendo varios roles también está mal, por ejemplo el desarrollador puede no estar viendo detalles que generalmente ve la persona de QA.
con la definición de los roles se puede ver que tiene que hacer cada rol aun que este puede ser interpretado por un mismo puesto ya que no están casados
excelente clase
Las nuevas metodologías no dependen de un analista, el cliente o dueño del producto definen las especificaciones.
perfecto
Este apartado me ha parecido muy poco organizado y muy abstracto.
Primero se comienza comparando agile con tradicional, luego se comienza a meter QA-Tester con desarrollador Arqutecto, Equipo de desarrollo … Un lío tremendo
RESUMEN:
En función del tipo de metodología que se esté implementando el programador toma diferentes roles, en general con el propósito de:
- Tener claro el contexto en el que se va a trabajar
- Experto del modelo de negocio y/o doliente de la necesidad
- Equipo de desarrollo segementado en tareas globales, o integrado en objetivos a corto plazo.
- Un gestor de proyectos que brinda recursos, tiempos, supervisa y vigila el cumplimiento de fechas límites.
bueno
Me interesa mucho el curso creo que se debería ampliar un poco mas en la metodología SCRUM y AGIL, gracias por impartir el conocimiento
Muy buena explicación de los tipos de roles
Administrador de sistemas, pregunta con este curso podre desempeñar otro rol?? o debo hacer otro curso, gracias por responder
Experto del dominio (tradicional), Partes interesadas o stakeholders (agile).
Analista (tradicional) / Dueño del peroducto (agil): indaga en lo que hay que resolver, definir requerimientos, enn agile es quien arma las historias del usuario.
Administrador de sistemas (trad.) / DevOps - SRE : Operaciones y desarrollo unidos, debe entender la infrastructura a la que va a ir el desarrollo.
Equipo de desarrollo (QA, Devs, Arquitecto)
Mucha información interesante! algo rápido las explicación.
Esencial saber los roles y sus funciones, para que el team funcione y de resultados de una manera más óptima.
Las empresas que realmente son ágiles, tienen dentro del equipo de desarrollo a los desarrolladores y las personas de infraestructura trabajando para dar entrega continua al cliente.
Pregunta de examen: en el contexto de metodologías ágiles, ¿dónde encontramos el rol del arquitecto?
ROL <> Puesto de Trabajo.
Metodologias Tradicionales.
Metodologias Agiles.
Equipo de desarrollo- QA DEV ARQ
.
Excelente
Super claro 😃
Buena clase, muchas gracias.
Creo que después de mucho, mi rol profesional es evidentemente:
Arquitecto de Software
Para aprender sobre lo visto, recomiendo el curso de Scrum (Metodología ágil y que implementa los roles vistos): https://platzi.com/clases/scrum/
Hay toda una ruta para ser DevOps: https://platzi.com/servidores/
Y ya hay un curso para la gestión de estos equipos ágiles: https://platzi.com/clases/equipos-agiles/
Y si son diseñadores gráficos también hay una metodología ágil: https://platzi.com/clases/design-thinking/
Aunque aparentemente un gestor de proyectos y un scrum master podrian parecer roles equivalentes, las tareas de ambos roles tienen bastantes diferencias propias del cambio de metodológica.
Mi puesto: Python Developer
Mi rol: Backend, Frontend, DevOps, Automatizador de test, Arquitecto de software
Me gusta mucho el símil entre el trabajo tradicional y el trabajo ágil, sin embargo se en mi experiencia cuando se realiza un trabajo tradicional por lo general siempre existe un rol definido para cada una de las actividades del proceso de desarrollo del software, un ejemplo es el rol de DBA (Database Administrator) que se encarga de todas las tareas de administración de base de datos por ejemplo trabajar con ddl y dmls, crear triggers, procedimientos almacenados etc, en la metodología ágil por lo general es el equipo de desarrollo quien asume toda la responsabilidad, y normal ver desarrolladores creando procedimientos en base de datos, desarrollando código, administrando servidores, etc.
En el mundo de las metodologías agiles vs la metodológica tradicional, se discute mucho el hecho que en las metodologias agiles muchas veces la arquitectura de datos y de software durante la evolución del software se puede ver afectada, en gran manera, por cambios o necesidades no contempladas en los primeros Sprint.
Mi duda es como se solventan estos inconvenientes en las metodoligas agiles, teniendo en cuenta que las modificaciones pueden afectar lo ya construido, y hacer que tenga que devolverce a validar funcionalidades ya probadas y certificadas.
El corazón de las metodologías ágiles es la iteración continua.
Roles en el desarrollo de software:
Experto del dominio -> parte interesada o dueño de negocio
Analista -> quien define los requerimientos
DevOPS -> Administrador de sistemas -> Define la necesidad de conectar la infraestructura del sistema.
Equipo de desarrollo esta conformado por: {
QA Tester
Desarrolladores
Arquitecto
}
Gestor del proyecto - project mannager -> quien define el planning del día a día del equipo.
Les comparto mis notas, en este caso han sido bastante extensas, el profesor brinda MUCHA información interesante:
3. Mis apuntes sobre: "Dificultades en el desarrollo de software"
Existen dos tipos:
3.1. Esenciales: Especificación, diseño y comprobación del concepto, entender el concepto o el diseño.
3.2. Accidentales: Tiene que ver con la plataforma, la tecnología, el lenguaje el framework
3.1. Esenciales:
3.1.1. Complejidad: Cuando lo que tenemos que resolver es complejo en sí mismo.
3.1.2. Conformidad: En qué contexto se va a usar, y cómo se adecúa a ese contexto.
3.1.3. Tolerancia al cambio: Una vez terminemos, va a poder cambiarse o va a ser muy difícil.
3.1.4. Invisibilidad: Es difícil porque no es tangible, su forma está plasmada en código,
infraestructura.
3.2. Accidentales:
3.2.1. Lenguaje a usar.
3.2.2. Multi-procesamiento: Ahora tenemos la capacidad de desarrollar con mucho mejor feedback.
3.2.3. Entornos de programación: Librerías opensource, o apis, o frameworks.
“Considero a la especificación, diseño y comprobación del concepto la parte difífil de hacer
software. Si esto es cierto, hacer software siempre será difícil. No existe bala de plata”.
(No silver Bullet -> Frederick P. Brooks Jr. 1986)
¿Cómo resolvemos las dificultades esenciales?
No desarrollar: Si es muy difícil, tal vez se debe usar uno existente, aprovechar el OpenSource.
usar disponibles y conectarlos con la actual.
Prototipado rápido: La idea es recibir feedback lo antes posible de si estamos resolviendo
el problema correcto, para eso vamos a evolucionando el sistema en pasos muy pequeños
y siempre tratando de obtener feedback del usuario: qué es lo que necesitabas, qué necesitas que
haga ahora, necesitas que evolucione por esa funcionalidad o necesitas una nueva
El feedback es la herramienta más importante del desarrollo de software moderno, por eso
son tan peligrosas las metodologías tradicionales que no obtenían feedback hasta muy tarde
en el proceso. (esto evolucionó en las metodologías ágiles)
Desarrollo evolutivo: Está más alineado con la creación y acumulación de sistemas,
que se trate de obtener resultados pequeños e ir escalando.
Grandes diseñadores: No son programadores que saben usar una teconología, sino ingenieros
que sepan abstraerse del problema puntual, y entender el problema general, que sepan diseñar
una solución elegante y simple, que resuelva de la mejor manera el problema y con la mejor
calidad.
*4. Mis apuntes sobre: Roles
Vamos a definir los roles en la metodología de trabajo tradicional y la ágil.
4.1. Experto del dominio (Tradicional): La persona a la que acudimos para resolver
las necesidades de los requerimientos (lo que el usuario/negocio necesitaba).
4.1. Partes interesadas [stakeholders] (Ágil): El rol del dueño del producto va a recurrir
a los stakeholders para saber qué es lo que tiene que resolver su producto en cada momento.
4.2. Analista Funcional/Negocio (tradicional): Es la persona que indaga en lo que hay
que resolver, la persona responsable de llegar a definir el problema y los requerimientos
que van a llevar al software a un buen puerto.
4.2. Cliente/Dueño del producto (Ágil): Tiene el rol de poder armar estas historias de
usuario que van a ir definiendo y van a ser priorizadas para poder ir construyendo el
software a medida que este dueño de producto encuentra qué es lo que necesita resolver.
Algunos procesos ágiles hacen un desarrollo fuerte en historias antes de iniciar, otros van
agregando historias a medida que las encuentran.
¿Preguntar: Cómo se controla el flujo de cambios/requerimientos, qué evita que se vuelva eterna
o muy grande de manejar? ¿Existe el NO al cliente?
4.3. Admnistrador de sistemas [sysadmins] (Tradicional): Luego de hacer el despliegue de la
aplicación, se encargaban de la operación del sistema->Si había servidores se encargaban
de mantener el servidor, de actualizar las librerías del sistema operativo, se encargaban
de encontrar errores en los logs y dar ese feedback al equipo de desarrollo.
4.3. DevOPS/SRE [site reliability engineer] (Ágil): Es la persona responsable de entender
la infraestructura a la que va a ir nuestra aplicación y de entender los requerimientos de ese
lado. SRE->Es más cercado al sysadmin.
Las empresas que trabajan con metodologías ágiles los tienen juntos.
4.4. QA-Tester/Desarrollador/Arquitecto (Tradicional): Se encarga estrictamente de la
evaluación de nuestro software si el desarrollo que se está haciendo es lo que hay que hacer
y si funciona como dice que funciona. QA manual y QA automatizado.
4.4. Equipo de Desarrollo (Ágil): Busca que la arquitectura emerja del equipo autogestionado.
4.5. Gestor del proyecto (Tradicional): Se encarga de las entregas, cumplir con el plan,
toda la gestión del ciclo de vida del proyecto.
4.6. Facilitador {Scrum master](Ágil): Tratan de llevar al equipo a través de este ciclo
de desarrollo interactivo, incremental, a través de sprints, entender todo el tiempo
qué es lo que pasa con el equipo, qué es lo que los traba, a través de retrospectivas y el
planning de qué es lo que se va a hacer en el siguiente sprint. Sigue siendo la misma
responsabilidad del gestor, de estar atento a las fechas, entregables, en un contexto mucho
más dinámico en donde no hay una especificación de completa de qué es lo que va a hacer
sino que se construye interactivamente y va cambiando todo el tiempo.
Importante nota: saber y aceptar que el rol puede ser distinto al puesto de trabajo
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.