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.

6 Responses to Proyecto Hogwarts

  1. luis petek says:

    Iniciativa impecable.

    Espero ansioso poder ver algo del material y conocer que ideas/formas de aplicación tienen.

    Aplauso, medalla y abrazo!

    Sigan adelante toda una comunidad agradecida.

  2. Jorge Gamba says:

    Muy buena iniciativa Angel, se nota tu marca personal (aka Don’t be a “canuto”!) y con el respaldo de una organización como Southworks, ni hablar, estoy seguro de que dará excelentes frutos.

    Por ahora tengo muchos interrogantes e ideas, pero no quiero inundarte con muchas de ellas, pues entiendo que progresivamente se irá liberando más información y habrá menos reserva. El caso es que este asunto a mi, como a muchos, me interesa mucho, pues, como sabes hace tiempo que trabajo en una iniciativa similar, ALT.NET Hispano, y estoy convencido de que vale la pena trabajar duro por este tipo de iniciativas.

    Precísamente noto que uno de los objetivos es forjar “un movimiento” para promover el desarrollo ágil de software, para llenar ese gran vacío que aún tenemos en la región, pero bueno, tal vez eso sea un tema para un blog post. Uno a veces quisiera contar con más tiempo extra y recursos, son tantas las ideas que hay por materializar!, por ejemplo, en ALT.NET Hispano hemos querido iniciar un grupo de estudio o club de lectura, un libro y proyecto OSS colaborativo…

    Algo que pensamos alguna vez y que veo que pueden realizar ustedes, es el armar un paquete completo de recursos (proyectos de software, libros, screencasts, webcasts, etc.) en serie, siguiendo un orden lógico, progresivo y complementario, que pueda ayudar hasta al más novato a ir escalando en su “seniority”, osea, poder componer una KB apropiada para todos los niveles de experiencia y conocimiento, gradualmente, claro.

    Para todo esto es vital el respaldo de una organización y por lo que conozco de Martín Salías y SouthWorks, estoy seguro que le imprimirán mucha calidad a este proceso. Ahora, sin metérmeles mucho a la cocina… no me queda claro es que tan abierto a la participación y contribución va a ser este proyecto, mencionas que SouthWorks es el cliente y a la vez hay un gran interés generoso para la comunidad de desarrolladores en general; no digo que esto sea contradictorio, al contrario, me parece un buen complemento, solo que quisiera saber cómo es el mecanismo de colaboración, los intereses y limitaciones para las partes, disculpa si soy imprudente con mis inquietudes, no son cuestionamientos sino, simplemente quiero saber más :D .

    En cualquier caso, nuevamente te felicito a ti, a Martín y a la gente de SouthWorks; si en algo puedo proporcionar mi humilde colaboración, en algún momento, lo haré con gusto y estoy seguro de que más de uno estaría gustoso.

  3. Ezequiel says:

    Qué bueno… por los involucrados está condenado al éxito ;-)

    Mantengan a la audiencia informada, espero saber más desde Twitter también.

  4. Daniel Calvin says:

    Muy bueno, me gusta porque me parece un enfoque muy completo.
    Me refiero a:

    – 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.

  5. Kevin says:

    alguna vez lo vas a poner en publico tu proyecto????

  6. lopez says:

    Kevin: Si, la idea es ponerlo publico esta semana, con el material de TDD.

    Nos leemos!

    Angel “Java” Lopez

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>