Acabo de tomar un nuevo trabajo en una universidad como (el único) desarrollador de aplicaciones web.
La universidad tiene varios sistemas heredados dispares pero todos muy mal codificados. Construidos principalmente en PHP, se ocupan de cosas como asistencia, resultados de exámenes, calificaciones, etc.
Mi primer trabajo es construir un sistema que incorpore muchos de estos datos, que actualmente se encuentran en varias bases de datos sin ningún tipo de API amigable para sacarlo (los sistemas existentes están codificados en PHP vanilla sin separación de datos y vista) con una nueva plataforma para registrar información pastoral sobre los estudiantes y presentarla a tutores y personal superior de manera útil para que puedan reaccionar a los problemas con los estudiantes rápidamente.
¡En nuestra primera reunión, había 18 personas! No había un líder claro o una voz que representara a la mayoría. Ningún cliente identificable . La reunión pasó de ideas de implementación detalladas sobre características menores de los jefes de facultad a argumentos sobre si deberíamos usar hojas de cálculo de Excel o no para la entrada de datos.
Como puedes imaginar, mi cabeza daba vueltas al final. De hecho, tenía muchas buenas ideas, pero no pude hacerlas oír. Este es un papel muy nuevo para mí, antes de formar parte de un equipo de desarrollo en una agencia de marketing. Tuvimos roles muy bien definidos: Gerente de Proyecto, Cliente, Diseñador, Desarrollador.
Me gustaría saber si algún desarrollador o gerente experimentado puede darme algunos consejos sobre cómo puedo convertir a mis colegas en algo que se parezca a un equipo de proyecto. ¿Es ágil el camino a seguir? ¿Cómo abordarías el manejo de todas las voces dispares? Está claro que algunos procesos deben implementarse muy rápidamente, simplemente no estoy seguro de qué es eso.
fuente
Respuestas:
No esperaría ningún "proceso de desarrollo ágil" aquí como solución a su problema actual. Lo primero para ti debería ser: despeja tu misión . Eso significa:
Esto puede llevar un tiempo, probablemente no escriba mucho código en esta etapa del proyecto. En tal situación, primero debe hacer algunos "requisitos de ingeniería". Pero comienza con algo pequeño, piensa en grande. Una vez que haya desarrollado su primer lanzamiento, tendrá algo para mostrar, discutir los requisitos nuevamente con las partes interesadas, etc.
fuente
Separe a los que realmente quieren que este proyecto funcione del rebaño.
Debido a mucha política, alguien organizó esta reunión con una lista de asistentes donde la membresía fue determinada por quién se enojaría más si no los invito. Sucede. Este objetivo se cumplió, pero como desarrollador, descubrió que no se había decidido nada. A nadie se le asignó qué hacer. Si tienes suerte, lograron programar la próxima reunión o, Dios no lo quiera, establecieron una reunión recurrente el tercer martes de cada mes.
Luego vendrá la formación de comités, subcomités y grupos de trabajo. Esto es mejor, pero los encontrarás igualmente inútiles.
Finalmente, descubrirá quién se preocupa realmente por este proyecto. Quien realmente quiere dedicar el tiempo para hacerlo bien. Con suerte, esta (s) persona (s) tendrá un supervisor que les dará tiempo para hacer esto y no solo lo convertirá en otro elemento en su larga lista de tareas pendientes. Encuentra a estas personas lo antes posible! Ayúdelos a manejar las expectativas de su jefe y obtenga un compromiso acordado.
Obtenga algo frente a tantas personas en el grupo original que incluso se molestarán en regresar. Puede que todos sean personas inteligentes y / o educadas, pero no van a leer un montón de especificaciones. Les gustarán algunas cosas, odiarán otras y querrán más. No está de más anotar sugerencias, pero trata de hacer que esa fiesta haga un seguimiento con algo de máscara en el juego. No prometas hacer todo. Simplemente aborde lo que se puede hacer en el futuro cercano.
Si terminas teniendo que tratar con más de 5 personas de manera regular, es porque algún gerente hizo que varias de sus personas se involucraran y que realmente no quisieran estar allí.
fuente
Presente una lista de ideas que cree que solidificarían / mejorarían los sistemas existentes en función de sus observaciones y sus "necesidades" y asegúrese de centrarse en dónde puede lograr ganancias visibles reales. Incluya en esa lista cada idea que considere útil, así como cualquier sugerencia "razonable" destacada de los no desarrolladores.
Cree una lista de características de las cosas que "deberían" incluirse en sus esfuerzos de desarrollo. Otorgue a cada miembro el poder de "voto", tal vez en forma de "estrellas adhesivas" y descubra lo que el conjunto realmente quiere de cada miembro colocando estrellas al lado de lo que consideran importante. Algunas personas pueden terminar con más estrellas si firman el cheque, tienen la última palabra, etc. Después de eso, con suerte, usted y todos los demás verán lo que es importante para el conjunto, y con suerte aceptarán la prioridad, que será luego traducir a una hoja de ruta
1) Encuesta al equipo : descubra lo que cada miembro considera importante / necesario / máxima prioridad
2) Obtenga algo rápidamente , no intente resolver todos los problemas de una sola vez, obtenga la funcionalidad "mínima" y pídales que lo aprueben, luego avance colectivamente en función de los comentarios de los usuarios.
3) Utilice sus comentarios y los comentarios de otros usuarios para guiar el proceso de desarrollo.
(Construir, evaluar comentarios, construir, evaluar comentarios) Enjuague y repita.
Además, puede considerar poner "puntos de esfuerzo" u horas estimadas para completar ... eso también podría ayudar en la priorización.
fuente
Su primer desafío es identificar la necesidad de este proyecto. Mantenga otra reunión con todas esas personas y pídales que escriban los problemas que necesitan ser resueltos. No deje que hablen sobre las muchas formas en que este proyecto será la solución. Oblígalos a identificar verdaderamente las necesidades / problemas.
Una manera de hacer esto es pedirles a cada uno individualmente que documenten esas necesidades en notas adhesivas, una idea por nota adhesiva. Luego, ejecute un Diagrama de afinidad para ayudarlos a agrupar esas ideas dispares en necesidades específicas. Finalmente, haga que voten ( Multi-Voting ) para que pueda ver las mayores necesidades.
Agile nos recuerda que debemos abordar primero la característica que tiene el mayor valor para el cliente. Comienza con la mayor necesidad y luego sigue dividiendo ese elemento hasta que tengas la primera pieza pequeña que puedas hacer en un corto período de tiempo.
fuente
BESO - Haz un itinerario. Gracias a todos por venir, revísalo, hazlo. El seguimiento lateral se ralentizará si lo aborda al compartir su preocupación y pedirles que se queden DESPUÉS de la reunión. Tome decisiones por votación donde haya controversia para mantenerse más feliz. La motivación para participar en cualquier sistema está directamente relacionada con la creencia de los individuos en sus métodos.
fuente