JAIIO 41: Cursos de métodos ágiles

Del 27 al 31 de Agosto se llevarán a cabo las Jordanas Argentinas de Informática y al igual que el año pasado habrá un conjunto de cursos sobre métodos ágiles. Las jornadas se desarrollaran en la Facultad de Informática de la UNLP. El detalle de los cursos y la información de inscripción está disponible aquí.

Para el curso que dictaré yo (Introducción al desarrollo de software con métodos ágiles) tengo pensado estrenar una nueva dinámica que me compartió Pablito Tortorella en un charla que tuvimos la semana pasada en las oficinas de Kleer.

Más allá de estos cursos, habrá un poco más de “agilismo” en las JAIIO ya que en el contexto del Simposio de Ingenieria de software se presentarán los siguientes trabajos:

  • Reporte de experiencia: utilización de métricas en Scrum para analizar y mejorar la productividad de un equipo
  • Marco para evaluar el valor en metodología SCRUM
  • Improving Software Engineering Teaching by Introducing Agile Management
Anuncios

Desarrollo y publicación de aplicaciones con cero costo

La semana pasada estuve trabajando en una aplicación de ejemplo que voy a utilizar para ejercitar algunas cuestiones en mi materia en UNQ. Mi idea es trabajar con esta aplicación mostrando todos los aspectos de su desarrollo, desde la concepción hasta la puesta en producción, pasando por cuestiones técnicas como prácticas de refactoring pero también por cuestiones más bien de infraestructura como el setup de un dominio.

Esto me llevó por un lado a configurar un ambiente de desarrollo y un ambiente productivo. Comparto aquí algunas herramientas/servicios que utilicé.

Para la administración y versionado de la aplicación utilicé GitHub.

Para integración contínua utilicé Travis.

Tanto para el ambiente de staging como también para el de producción utilicé Heroku.

Para el setup del dominio del ambiente productivo utilicé el servicio de Free DNS.

Obviamente para una aplicación real puede que todo esto no resulte suficiente, pues hay cuestiones operacionales (como disponiblidad, backup, etc) que no están siendo contempladas. Pero más allá de este detalle, la cuestión es que todo esto me permite mostrar muchas cuestiones sin tener que pagar por servicio alguno.

Prácticas de desarrollo y delincuencia cotidiana

Este post surgió a partir de una charla con mi colega Gabriel Iglesias.

Estábamos hablando sobre prácticas de desarrollo en distintos contextos: la industría, la universidad, proyectos open source, etc.

Gabi comentó que en un momento le tocó trabajar en un contexto donde habia varias “malas” prácticas (comitear código en el repositorio sin el correspondiente mensaje de log, no respetar la convención de codificación, utilizar nombres de variables no descriptivos, etc). Esto no me extrañó en lo más mínimo, pues hay muchos contextos así, pero el hecho de que sea algo común no significa que sea correcto ni que uno deba aceptarlo. Es ahí donde surge la relación con la delincuencia. Hoy en día los actos delictivos son algo cotidiano en ciertas zonas de nuestro pais, pero ello no significa que sean correctos.

Ahora pensando a la distancia se me ocurre otra relación entre estas dos cuestiones:  un programador que no respecta las convenciones y/o no pone los mensajes de log en los commits ¿no es acaso un delincuente? Para pensarlo. Fin.

PD: Gracias Gabriel

Jenkins: Plugins infaltables

De cara a automatizar parte de la corrección de los trabajos de los alumnos de la materia que dicto en UNQ, ayer estuve configurando un Jenkins. La idea es que los alumnos entreguen sus trabajos via Github, o sea, cada alumno tendrá un repositorio en GitHub. Llegada la fecha de entrega de cada trabajo, el build server (Jenkins en este caso) descaga los repositorios y verifica que existan archivos correspondientes a la entrega.

Como parte de la configuración de este Jenkins, instalé los siguientes plugins que me parecen fundamentales:

  • Git: la función de este plugin es obvia, permite a Jenkins conectarse con repositorios Git
  • Green Balls: por defecto, Jenkins representa el estado “build exitoso” con el ícono de una pelotita azul. Este plugin cambia dicha pelotita azul por una pelotita verde.
  • Copy Artifact: permite copiar artefactos de un proyecto a otro
  • Email Ext: extiende la funcionalidad de notificaciones de email provista por nativamente por Jenkins

Anteriormente había comentado sobre un plugin para enviar notificaciones via Jabber (particularmente gtalk), en esta ocasión no lo instalé, pues creo que dicho plugin resulta útil para cuando uno trabajar en desarrollo y este no es el caso.

Sobre el Open Space de Educación

Me resultó muy interesante. Estimo que hubo alrededor de 30 personas de perfiles muy variados. La mayoría eramos de sistemas, pero también había gente de eduación de distintos ámbitos: sindicalismo, idiomas, educación social, etc, etc.

Hubo más propuestas de sesiones que los slots que teniamos disponibles, pero algunos de los que las habian propuesto fueron solidarios para juntar sus sesiones y que así todos los temas sean tratados.

Luego de la planifinición inicial, comenzamos con una sesion plenaria de Lightning Talks  de 3 minutos donde algunos de los asistentes compartimos técnicas/experiencias realizadas en nuestros respectivos contextos. En esta sesión Pablo Roca presento el proyecto Nahual.

Después de eso participé en las siguientes sesiones:

  • Evaluación: esta sesión fue propuesta Jorge Silva y Mariano Tugnareli. Compartimos distintas problemáticas y técnicas relacionadas a la evaluación: la evaluación como instancia de aprendizaje, la evaluación de pares, la evaluación en cursos masivos, etc.
  • Tutorias: esta sesión resultó de fusionar 3 sesiones relacionadas a las dificultades de enseñanza en los primeros años de la universidad. Yo compartí mi expericiencia como tutor en el programa PACENI y otros asistentes comentaron las dificultades que afrontaban en sus correspondientes ámbitos. Sinceramente no sacamos nada en límpio, fue más bien una sesión de catarsis.
  • Actividades: esta sesión fue propuesta por Juan Gabardini y la idea era compartir técnicas/dinámicas para enseñar en el aula. Comentamos más de 15 técnicas, muy interesante.

También hubo algunas otras sesiones sobre trabajo con niños, training from the back of the room y aprendizaje por descubrimiento.

Personalmente me resultó muy enriquecedor y me llevé algunas cosas para probar en mis materias.

Un nuevo rumbo

Finalmente voy a empezar a trabajar de forma independiente. Desde que me recibí estudié el tema en varias ocasiones, pero nunca me animé a dar el paso. Y en esta ocasión de no haber sido por una pequeña ayuda de ex-empleador creo que tampoco lo hubiera hecho. Resulta que la empresa donde trabajaba hizo una reestructuración y el puesto que yo ocupaba fue “recortado”. Si bien podría haberme quedado en la empresa tomando otro puesto, decidí dar el gran paso y continuar trabajando en cuestiones de capacitación pero esta vez por mi propia cuenta.

En el pasado trabajé de forma independiente, pero fue algo corto, informal e inestable. Fue durante los primeros años de la universidad. Hacia trabajitos tipo soporte técnico a particulares y de vez en cuando algunos desarrollos de sitios web. Tengo esperanzas de que en esta ocasión sea algo más estable, duradero y entretenido. Al mismo tiempo, todos los años que llevo trabajando en la industría y en la universidad creo que me han dado una rica expericiencia.

En particular hay un tema en el que me gustaría mucho trabajar: implementación de prácticas “duras” de ingeniería. Este ha sido uno de los focos de mi trabajo en el último tiempo tanto en la empresa donde trabajaba como también en UNQ. Con prácticas “duras” de ingenieria me refiero a aquellas prácticas cercanas de código: automatización de pruebas, verificación de estándares de codificación, obtención de métricas de código, integración contínua, manejo de ambientes, automatización del pasaje entre ambientes, etc.

En estos dias me encuentro ordenando algunas cuestiones operativas mientras analizo como y por donde empezar.