Proyecto Hogwarts

En los últimos meses, estuve (y sigo) trabajando en un proyecto interno para un cliente (@southworks) llamado el Proyecto Hogwarts. El Product Owner es el bueno de @MartinSalias, y el único miembro permanente del equipo soy yo. Hemos recibido ayuda y retroalimentación de revisores internos, y estamos trabajando duro para entregar una versión beta del entregable inicial.

Pero ¿Qué es el Proyecto Hogwarts? Pudieron haber leígo mis tweets, anunciando cuándo trabajo en el proyecto, pero sin dar mayores detalles. Recuerden, es un proyecto interno para un cliente, así que no está disponible públicamente. Posiblemente, en elfuturo, más información y entregables del proyecto estén públicos. Pero aún así, puedo escribir algunas ideas base y algunos objetivos del proyecto (desde aquí, le pido a mi Product Owner escribir en su blog clarificaciones adicionales :-).

Ya sabemos que el desarrollo de software es una gran tarea, y cada proyecto no trivial necesita del auxilio de montones, parvas de técnicas, habilidades, conocimiento de parte de un grupo de desarrolladores, usualmente trabajando en un equipo. Pero si Uds. tienen una software factory o una consultar, uno de los problemas que enfrentan es la escasez de desarrolladores con experiencia. Una forma de dar más “seniority” a su grupo de programación, es incrementando sus habilidades y conocimientos. Es en este contexto que el Proyecto Hogwarts ha sido creado (el nombre Hogwarts refiere al colegio de magia al que acude Harry Potter)).

Las salidas concretas del proyecto son entregables como notas, presentaciones, ejemplos, ejercicios, evaluaciones, y más (pensamos en videos, libros). Hay varios objetivos en el proyecto, así como una misión y visión. Pero la idea básica es entregar a desarrolladores de software para incrementar sus habildiades, conocimientos y darles más “seniority”.

Hemos escogido estos temas para atacar en los primeros cursos:

- Test Driven Development

- Inversion of Controls

- Mocking y librerías

- Principios SOLID

- El uso de repositorio de código y otras herramientas esenciales

- Escribir parte de una aplicación tipo mundo-real usando los nuevos conocimientos y habilidades adquiridos.

Pero ¿cómo enseñar esto a un grupo de programadores? Estamos explorando caminos a emplear. Siguiendo los principios ágiles, estamos entregando partes del proyecto, para conseguir retroalimentación de nuestros compañeros de trabajo y desarrolladores. Lo recibido será usado para pulir el material, cambiar direcciones, o tomar nuevos rumbos enla forma de hacer las cosas. Pero ahora, en principio, estamos entregando:

- Material para el instructor, así cualquier instructor con experiencia puede tomar el material de cualquier curso y darlo para una audiencia. El material tiene presentaciones, notas explicando los principales puntos, ejemplos, ejercicios, y evaluaciones, podemos agregar máquinas virtuales para usar durante la práctica de algún ejercicio.

- Bibliografía y recursos adicionales.

- Bibliotecas de software que usamos en los ejemplos y ejercicios.

Algunos puntos clave:

- No es sólo práctica. No nos concentraremos en una sola tecnología, plataforma o lenguaje. Las versiones iniciales de los entregables están orientados a .NET y C#, basado en las necesidades actuales del cliente. Pero toda la base de los cursos podría ser readaptada a otras tecnologías y lenguajes. Necesitamos conocer PORQUE aplicamos TDD o un principio SOLID. Queremos gente pensante, no “repeating monkeys” :-)

- No es sólo teoría. Podemos ver este curso como aprender guitarra. Uno necesita practicar lo que el instructor nos enseña.

- Necesitamos ejemplos, no sólo presentaciones con lindos gráficos.

- Necesitamos ejercicios, alguno básico, otros más avanzados.

- Necesitamso practicar en una aplicación real, para integrar lo que aprendimos.

- Necesitamos “malos” y “mejores” ejemplos y soluciones, para ir entendiendo desde la base por qué elegimos un camino u otro, por qué adoptamos tal patrón y cuáles son los problemas que trata de solucionar, en vez de simplemente adoptarlo sin mayor meditación, por nos lo dicen que es “cool” o “buena práctica”.

- Quien aprende necesita ser evaluado. Y tanto más importante, necesita recibir retroalimentación sobre sus fortalezas y debilidades, para ayudarlo en su plan de carrera, en su mejora continua.

Una vez las versiones iniciales sean revisadas y mejoradas, el próximo paso será entregarlas a gente de la comunidad. Uno de los objetivos (uno ambicioso) es crear un movimiento sostenido para ayudar a desarrolladores de software para que aumenten sus habilidades, mejoren en su profesión, acá en Argentina, y esperamos, en otros países.

Estamos trabajando en la primera implementación de los cursos de TDD y de IoC, que están siendo revisados internamente. Quiero ir escribiendo posts, dando visibilidad a recursos, ideas, material producido, de que se está armando en Hogwarts.

Wingardium Leviosa!!

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 11699, 13620, 1389, 2728, 3463. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>