Gestión de proyectos y control de versiones
Un grupo de cuatro compañeros del liceo quiere hacer una aplicación para las Llamadas del Carnaval. A las dos semanas, Bruno y Florencia editaron el mismo archivo, uno de los dos perdió su trabajo y nadie sabe quién debía hacer qué. ¿Cómo se organiza un equipo para que esto no pase? Al final de la página vas a poder responderlo.
Ciclo de vida de un proyecto
Un proyecto es un trabajo con un objetivo, un plazo y recursos limitados. Hacer una aplicación, una página web o un sistema de riego automático son proyectos. Para no improvisar, se ordenan en etapas, que forman el ciclo de vida del proyecto.
| Etapa | Qué se hace | Ejemplo: app de la murga |
|---|---|---|
| Inicio | Definir el problema y el objetivo | «Una app con el repertorio y los horarios de la murga» |
| Planificación | Decidir tareas, roles, plazos, recursos, presupuesto y riesgos | Un cronograma de 6 semanas |
| Ejecución | Hacer el trabajo: programar, diseñar, probar | Programar la lista de canciones |
| Seguimiento | Comparar lo hecho con lo planificado y corregir | Reunión semanal: ¿vamos en fecha? |
| Cierre | Entregar, evaluar y documentar lo aprendido | Presentación y informe final |
Seguimiento y ejecución se van alternando: se trabaja un poco, se controla, se ajusta. Eso es el desarrollo incremental que ya conocés: avanzar por pasos pequeños y verificables.
Nombrá las etapas básicas del ciclo de vida de un proyecto (por ejemplo: inicio, planificación, ejecución, seguimiento y cierre) y explicá en una frase qué se hace en la…
Nombrá las etapas básicas del ciclo de vida de un proyecto (por ejemplo: inicio, planificación, ejecución, seguimiento y cierre) y explicá en una frase qué se hace en la etapa de planificación.
Roles y recursos
En un equipo, cada persona asume un rol: un conjunto de responsabilidades. Así nadie queda sin tarea y nadie hace lo mismo que otro. En un grupo de liceo, un mismo estudiante puede tener más de un rol.
| Rol | Tarea principal |
|---|---|
| Coordinador/a | Organiza las reuniones y controla los plazos |
| Programador/a | Escribe y prueba el código |
| Diseñador/a de interfaz | Dibuja las pantallas y cuida que sea fácil de usar |
| Responsable de datos | Arma y mantiene la base de datos |
| Encargado/a de pruebas y documentación | Busca errores y escribe el informe |
Los recursos son todo lo que el proyecto necesita: personas, tiempo, computadoras (las ceibalitas sirven), software, conexión a internet, herramientas en línea y dinero.
Un equipo del liceo desarrolla una página web sobre el Cabo Polonio. Mencioná tres roles que podrían existir en el equipo y la tarea principal de cada uno.
Un equipo del liceo desarrolla una página web sobre el Cabo Polonio. Mencioná tres roles que podrían existir en el equipo y la tarea principal de cada uno.
Presupuesto y riesgos
El presupuesto es la lista de gastos previstos con su total, comparada con el dinero disponible. Sirve para decidir antes de gastar.
Un riesgo es algo que podría salir mal y afectar el proyecto. Para cada riesgo se planifica una prevención (para que no ocurra) y una respuesta (qué hacer si ocurre).
| Riesgo | Prevención | Respuesta |
|---|---|---|
| Se rompe una computadora | Guardar el trabajo en un repositorio remoto | Seguir desde otra computadora |
| Un integrante se enferma | Que dos personas conozcan cada tarea | Repartir sus tareas entre el resto |
| Se pierde el trabajo | Copias frecuentes en la nube | Recuperar la última versión |
| Se acaba el plazo | Dividir en tareas pequeñas con fechas | Recortar funciones menos importantes |
Micaela organiza el proyecto de una aplicación para una murga y dispone de este presupuesto: hosting, $\$2.400$; diseño del logo, $\$3.000$; publicidad, $\$1.800…
Micaela organiza el proyecto de una aplicación para una murga y dispone de este presupuesto: hosting, $\$2.400$; diseño del logo, $\$3.000$; publicidad, $\$1.800$. Calculá el total, y si el grupo juntó $\$8.000$, indicá cuánto dinero sobra o falta y qué decisión podrían tomar.
Un equipo identificó estos riesgos en su proyecto: se rompe la computadora de un integrante, un compañero se enferma antes de la entrega y se pierde el trabajo por no…
Un equipo identificó estos riesgos en su proyecto: se rompe la computadora de un integrante, un compañero se enferma antes de la entrega y se pierde el trabajo por no tener copia. Para cada riesgo proponé una medida de prevención y explicá cómo Git y un repositorio remoto ayudarían en alguno de ellos.
Control de versiones con Git
Si Bruno y Florencia se mandan el archivo por mensajes, aparecen app_final.py, app_final2.py y app_final_ahora_si.py. Nadie sabe cuál es la buena. Un sistema de control de versiones guarda la historia de los cambios de los archivos. Git es el más usado y es software libre; GitHub es un sitio web donde se alojan repositorios de Git.
Ventajas principales:
-
Se puede volver a una versión anterior si algo se rompe.
-
Se sabe quién cambió qué y cuándo.
-
Varias personas trabajan a la vez sobre los mismos archivos.
-
Hay copia de seguridad en el repositorio remoto.
Vocabulario básico:
| Término | Qué es |
|---|---|
| Repositorio | La carpeta del proyecto con toda su historia |
| Commit | Una «foto» de los cambios, con un mensaje que explica qué se hizo |
| Rama (branch) | Una línea de trabajo paralela, para probar cambios sin tocar la principal |
| Fusión (merge) | Incorporar los cambios de una rama en otra |
| Repositorio remoto | Copia del repositorio en un servidor (por ejemplo, GitHub) |
Explicá qué es un sistema de control de versiones como Git y mencioná dos ventajas de usarlo cuando varias personas trabajan sobre los mismos archivos.
Explicá qué es un sistema de control de versiones como Git y mencioná dos ventajas de usarlo cuando varias personas trabajan sobre los mismos archivos.
Trabajar en equipo con ramas
La regla de oro: la rama principal debe funcionar siempre. Cada cambio nuevo se hace en una rama aparte y recién se fusiona cuando está probado.
Comandos que corresponden a esos pasos: git branch o git checkout -b (crear rama), git commit, git push y git merge. No hace falta memorizarlos: lo importante es entender el para qué de cada paso.
Santiago y Camila trabajan en el mismo repositorio. Ordená y explicá los pasos que deberían seguir para incorporar un cambio: crear una rama, hacer un commit, subirlo al…
Santiago y Camila trabajan en el mismo repositorio. Ordená y explicá los pasos que deberían seguir para incorporar un cambio: crear una rama, hacer un commit, subirlo al repositorio remoto y fusionarlo con la rama principal. Aclará para qué sirve cada paso.
Conflictos y buenas prácticas
Un conflicto ocurre cuando dos personas cambian la misma parte del mismo archivo en ramas distintas. Al fusionar, Git no sabe cuál versión conservar y pide que una persona decida.
Prácticas para tener menos conflictos:
-
Comunicarse: avisar «voy a tocar el título».
-
Ramas pequeñas: cambios acotados que se fusionan rápido.
-
Commits frecuentes y traer los cambios del equipo seguido.
-
Repartir los archivos entre integrantes según los roles.
Dos integrantes de un equipo modificaron la misma línea de un archivo en ramas distintas y, al fusionarlas, Git avisa que hay un conflicto. Explicá por qué ocurre, cómo…
Dos integrantes de un equipo modificaron la misma línea de un archivo en ramas distintas y, al fusionarlas, Git avisa que hay un conflicto. Explicá por qué ocurre, cómo se resuelve y qué prácticas del equipo (comunicación, ramas pequeñas, commits frecuentes) ayudarían a que sucedan menos veces.
Armar el plan completo
Ahora juntamos todo. Un plan de proyecto responde: ¿qué etapas hay?, ¿quién hace qué?, ¿con qué recursos?, ¿qué puede fallar?, ¿cómo trabajamos sobre los archivos?
Volvé al principio: Bruno y Florencia habrían evitado el lío con un plan de roles, un repositorio compartido y ramas separadas, y con conflictos resueltos hablando.
Un equipo de cinco estudiantes de Tacuarembó debe entregar en ocho semanas una aplicación que usa una base de datos y una API externa. Armá un plan que incluya las…
Un equipo de cinco estudiantes de Tacuarembó debe entregar en ocho semanas una aplicación que usa una base de datos y una API externa. Armá un plan que incluya las etapas del proyecto, la distribución de roles, los recursos necesarios, al menos dos riesgos con su respuesta y la manera en que usarían control de versiones. Justificá las decisiones principales.