The Rules goes live!

Hoy finalmente salimos en producción con The Rules luego de 3 intensas semanas de trabajo. Una aplicación no demasiado compleja pero un proyecto por demás interesante:

  • Equipo de proyecto distribuido en diversas ciudades alrededor del mundo: New York (US), Austin (US), Chennai (India) y Buenos Aires (Argentina)
  • Contenido en 5 idiomas, modificable en cualquier momento por un editor
  • Integración con varios sistemas externos (CMS, PayPal, SendGrid, etc)
  • Y lo más dificil (a mi parecer), crear la interface gráfica de la aplicación en base a las ideas de diseñadores expresadas en PhotoShop, menos mal que en el equipo estaba Gabriel C, un capo con cuestiones de HTML/CSS.

Como infraestura de desarrollo utilizamos GitHub y Jenkins. En Jenkins contamos  con 4 jobs: integración contínua, integración, deploy a staging y deploy a producción. Para las comunicaciones utilizamos GoToMeeting y Campfire. Esta última herramienta la podria describir como una sala de chat que donde va quedando guardada la historia de conversaciones y que permite insertar imágenes Nos resultó especialmente útil para hacer troubleshooting de algunas cuestiones. Resultaba interesante ver como a la gente en distintos usos horarios iba entrando y saliendo acorde avanzaba el día. En cuanto a la infraestructura de staging y producción corremos sobre Heroku.

El primer hito está completo, ahora tenemos un par de semanas más hasta el próximo release.

Anuncios

Sobre las certificaciones profesionales

Por estos dias hay en foro-agiles un interesante hilo de discusión sobre este tema lo cual sumado a algunas consultas que recibí de alumnos en el último tiempo me ha motivido a dedicar estas líneas al tema.

Recuerdo allá por el año 2000, cuando pretendía comenzar a trabajar formalmente en la industria del software, haber pasado por varias entrevistas en las que los entrevistadores me preguntaban por certificaciones. Recuerdo que en aquel momento estaban de moda algunas certificaciones relacionadas a bases de datos (Oracle y DB2)  y a lenguajes de programación (principalmente Java y Visual Basic). Yo no tenia ninguna.

Hoy por hoy, más allá de las certificaciones de índole técnica (Java, .NET, etc, etc) también estan muy de moda las certificaciones sobre temas más “soft” como Project Management, Scrum, etc, etc. Certificaciones que tampoco tengo, ¡ups!

Creo que una forma interesante de analizar este tema es viéndolo desde la óptica de los distintos interesados: por un lado el profesional certificado y por otro quien lo contrata.

Comencemos por la persona que contrata un profesional certificado. En estos casos se espera que la persona certificada tenga ciertos conocimientos/habilidades/experiencia, pero ¿que es en realidad lo que le garantiza la certificación? Bueno, podriamos decir que nada o bien podriamos decir que depende de la certificación. En una simplificación extrema me animo a decir que hay dos tipos de certificaciones:

  • Las del tipo “esta persona tiene conocimientos/habilidades/experiencia” en la temática X
  • Las del tipo “esta persona realizó un curso/actividad” sobre la temática X y dicho curso cumple con ciertos criterios definidos por la autoridad certificante

Puede que simple vista parezcan lo mismo pero no lo son, vuelvan a leerlo detenidamente e intenten encontrar ejemplos.

Desde el punto de vista del profesional certificado estan los beneficios de contar con una certificación los cuales yo resumiría en: engrosar un CV y abrir algunas puertas ya que algunas empresas (para algunos puestos) sólo contratan gente certificada. Entre los beneficios también deberia mencionar la incorporación de conocimiento, pero lamentablemente esto no siempre ocurre.

Personalmente nunca me he certificado en parte porque con mi título de ingeniero siempre ha bastado (aunque en cierto modo un título también es una especie de certificación). Y cuando me ha tocado estar en la posición de contratar gente (generalmente programadores), nunca le dí mayor importancia a las certificaciones. Creo que la mejor carta de presentación son evidencias concretas, y personalmente que una persona haya respondido bien un examen sobre un lenguaje de programación, no me dice si esa persona programa bien. Entonces ustedes se preguntaran ¿que miro para contratar un programador? Miro como programa, le pido que programe algo o le pido que me comparta algo de código que haya escrito, algún TP de la facultad, algún trabajo que haya realizado o algún proyecto open source que haya participado. Lamentablemente son poco los casos en los que me han facilitado código, pero los casos en los que lo han hecho, resultaron ser excelentes programadores.

Bueno, estas son mis ideas, para cerrar dejo una reflexión de Tom De Marco en Peopleware ¿contratarias un malabarista sin ver como hace malabares? La respuesta parece obvia, pero sin embargo hay gente que contrata programadores sin ver como programan.

Academia e Ingeniería de software

Desde que empecé a dictar la materia de Ingeniería de Software en UNQ, comencé a prestar mayor atención a los diferentes enfoques para enseañar esta disciplina. En Agiles 2012 y luego en mi reciente viaje a Venezuela pude hablar con gente de diversas instituciones y confirmar la teoría que aquí expongo.

El enfoque utilizado para enseñar Ingenieria de Software depende de carrera que uno analice, ya que cada carrera le da distinta relevancia al tema. Hay carreras en las que simplemente hay una o dos materias de Ingeniería de Software, mientras que otras tienen una materia por cada disciplina de la Ingeniería de Software. En este sentido la Tecnicatura en Programación de UNQ pertenece al primer grupo, ya que solo tiene una materia del tema (la que dicto yo ;-)). Por su parte, la Ingeniería informática de UBA está en el otro extremo, tiene una materia por cada disciplina: Análisis, Diseño, Administración de Proyectos, Arquitectura, Calidad, etc, etc.

El enfoque utilizado influye, como es de esperar, en los contenidos impartidos. Si uno cuenta con varias materias, es posible tratar distintos enfoques y técnicas con un nivel de profundidad interesante, pero si uno cuenta con sólo 1 o 2 materias, entonces se ve en un dilema: estudiar un único enfoque con cierta profundidad o bien ser más generalista y estudiar varios enfoques de forma más superficial. En la tecnicatura de UNQ solo tenemos una materia de Ingenieria de Software y la estrategia elegida fue centrarnos en un sólo enfoque (el de los métodos ágiles) aunque hacia el final de la materia hacemos una breve mención de waterfall y UP. Esta decisión estuvo motivada por el hecho de que pretendemos que al finalizar la carrera, el alumno pueda llevar adelante un proyecto de punta a punta y para ello creemos más valioso conocer un enfoque en detalle que conocer varios enfoques de forma superficial.

En base a lo que he hablado, leido y compartido con colegas de distintas instituciones, me da la impresión que en la actualidad la mayoría de las instituciones (en América del Sur) enseñan Ingeniería de Software utilizando un enfoque “tradicional” basado en los clásicos de Somerville y Pressman o bien se inclinan a un enfoque un poco más concreto y se basan en el Proceso Unificado. Adicionalmente en algunos casos se dictan materias complementarias (optativas generalmente) donde se ven enfoques alternativos (agile, waterfall, etc, etc).

Si algún lector no comparte esta visión, me gustaria que expusiera su opinión.

15 GB gratuitos en Dropbox…

Dropbox está llevando a cabo un concurso entre instituciones académicas. Cada institución gana puntos por cada alumno que se registra en DropBox y al mismo tiempo esos puntos se traducen en espacio para los alumnos de la institución. Desconozco cuales son las instituciones que participan ni tampoco como es el proceso para sumar una institución, pero se que la UBA está participando.

Si eres alumno de la UBA y quieres ganar 15 GB, entonces puedes registrarte aqui: https://www.dropbox.com/spacerace. Si ya tienes una cuenta en Dropbox, no importa también puedes reclamar tus 15 GB asociando tu cuenta fiuba a tu cuenta actual de Dropbox.

 

Impresiones de Venezuela

Debo decir que mi reciente viaje a Venezuela estuvo muy por encima de mis expectativas, a pesar de que ni pisé la playa. En primer lugar el trato de la gente fue impecable, tanto en las conferencias como en día a día. Aprendí muchas cosas de la cultura venezolana: historia, costumbres, vocabulario, etc, etc. Asi fué como me enteré de cuestiones tales como:

  • Que el deporte más popular tradicionalmente ha sido beisbol y que en el último tiempo en futbol ha ganado mucha popularidad poniendose en segundo lugar.
  • Que toman la cerveza bien fría y por eso siempre viene en botellas chicas, pues al tomar en botellas grandes, a la hora de tomar la segunda mitad, ya está “caliente”
  • Que es muy común que las reuniones (de cualquier tipo) comiencen tarde
  • Que el tránsito es un caos. El transporte público es bastante triste y el combustible es muy barato entonces todo el mundo tiene carro (auto).
  • Que la super abundancia de petroleo, es un arma de doble filo, pues es una fuente increible de ingresos, pero al mismo tiempo ha evitado que se desarrollen otras actividades

Tuve la suerte de que algunos amigos venezolanos me llevaran a conocer diversos lugares (algunos turísticos y otros no tanto, gracias Ofelia, Pablo, Eli y Gustavo).

Tuve el privilegio de asistir al clásico del beisbol venezolano: Leones del Caracas VS Navegantes del Magallanes (gracias Carlos, Omar y Yobana)

Como no podia ser otra forma también tuve algunas charlas sobre política, las que me permitieron saber un poquito más del modelo socialista que el actual gobierno intenta implantar y de la situación actual del pais. Y si bien detecté varios puntos en común con la situación argentina, también noté algunas diferencias importantes.  Pero más allá de estas diferencias, creo que tenemos muchas similitudes, tal vez la más notoria sea que somos paises con una gran riqueza de recursos (petroleo, minerales, alimentos, etc, etc) y una gran desigualdad social. Ojala algún día todos podamos sacar provecho de estos recursos y lograr así una mayor justicia social.

Agile Tour Venezuela 2012: Caracas

La jornada se desarrollo en las instalaciones de la Universidad Metropolitana, un muy lindo lugar ubicado en un extremo de la ciudad.

Fue una jornada muy intensa. Hubo más de 120 asistentes. El evento comenzó con las palabras de apertura de las autoridades de la universidad, seguidas por las palabras de Gustavo uno de los organizadores del evento. Luego de eso, al igual que en Mérida, facilité la dinámica de apertura, la cual resulto un poco más caótica y entretenida debido a la gran cantidad de gente. A continuación de la dinámica, di mi sesión “El paradigma del Valor”, cuyos slides están disponibles aquí.

La seguiente sesion fue la de @carlosgabriel_, quien habló sobre CMMI y Agil. Una interesante sesión demistificadora que en definitiva apuntaba a recomendar tomar lo mejor de ambos mundos.

Ya hacia las 11 de la mañana estuvo la sesión de @gustavobonalde la cual trató sobre prácticas ágiles para emprendedores y ONGs.

La última sesión de la mañana fue la de Carlos Magurno quien compartió algunas de sus experiencias aplicando Scrum. Fue una sesión muy interesante con mucho del  mucho real.

La tarde comenzó con la sesión de Adrián Moya: Especificación por Ejemplos, una interesante sesión introductoria al tema que despertó la atención varios de los asistentes (habia entre la audiancia unas 10 personas dedicadas al testing).

Seguimos con una breve sesión a cargo de un representante del PMI quien habló sobre la certificación Agile del PMI, una alternativa interesante para quienes busquen una certificación. No tengo mucho que decir de esta sesión, solo una frase que me resulto muy graciosa: “La fe mueve montañas, pero hay que pagar“.

La tercer sesión de la tarde estuvo a cargo de Rafael Alvarez y su titulo fue: ¿Es la agilidad suficiente?. La sesión estuvo bien, aunque hay ciertos puntos que no compartí, pero más allá de esto el orador tenia una forma de exponer los temas y llevar la sesión que hacia que el público se mantuviera enganchado todo el tiempo (al menos eso me pasó a mi).

La última sesión tradicional de la tarde fue una introducción a Lean Startup a cargo de Guillermo Velazquez, apenas la pude ver pues estaba coordinando algunas cuestiones para el Open Space que venia a continuación.

La última parte del evento fue en formato open space, hubo unas 15 propuestas, pero solo pudimos hacer 8. Fue el primer open space para casi toda la audiencia y en retrospectiva la gente manifestó que les gustó mucho. Yo propuse (e hice) una sesión que presenté como “Un día XP” en la que conté un día trabajo típico al usar esta técnica.  También hubo sesiones Análisis de requirimientos, juegos de resolución de conflicto, scrum, etc, etc.

Finalmente cerramos el dia con una dinámica de retrospectiva.

Quedé verdaderamente sorprendido por la cantidad de preguntas que que hubo en todas las sesiones.

En términos generales tanto los asistentes como los organizadores quedaron muy contento con la jornada.

Aqui les dejo una foto me que tomé con el equipo de organizadores.