¿Qué pasaría si los médicos fuesen tratados como desarrolladores web?
0
Mientras está ahi sacando el tumor, arregle mi nariz y ponga unos implantes mamarios. No puedo pagar por eso, pero prometo mostrárselo a todos mis amigos y va a quedar excelente en su currículum.
¿Te imaginas tratando a tu médico de esta manera?
Desafortunadamente, así es como muchos desarrolladores web y desarrolladores de software suelen ser tratados por los clientes.
Debido a que el desarrollo de sitios web es una ocupación bastante nueva, aún hay mucha gente que no entiende qué se requiere para la realización de ese sitio web impresionante.
Yo personalmente he estado como receptor de varias solicitudes bastante ridículas por parte de algunos clientes.
Es tan común, que sitios como Clients from hell existen y están llenos de historias que a primera vista parecen totalmente ficticias. Pero no lo son.
Pero ve y habla con alguien que trabaje en el desarrollo web y pregúntales acerca de los clientes de terror. Cada uno de ellos tendrá una historia que contar.
Mi teoría es que debido a que la persona promedio sólo ve “el frente” de los sitios web, no tienen idea de la labor de codificación y el tiempo que se tarda en crear un buen producto web. No llegan a “mirar debajo del capó” y ver todos los scripts, llamadas, estilos CSS, etc
Si lo hicieran, habría más entendimiento de que este es un trabajo real, no sólo un trabajo que un aficionado realiza en su tiempo libre.
(También, muchos operadores del “descuento”, como los equipos de desarrollo offshore y diseñadores no calificados contribuyen a perpetuar el mito de que esta obra es barata y fácil de hacer)
Piense en las industrias donde los clientes tienen una mejor comprensión del resultado final:
- Los clientes no le dirían a un mecánico que les realice tareas extras gratis sólo porque se encuentran en el motor de todos modos.
- Los clientes no le pedirían a un arquitecto la remodelación total de un plan de construcción una vez que se hace, a las 9 am del día siguiente, debido que a su hijo de 6 años no le gusta.
- A los pintores de casas no se les pide que vuelvan a pintar una casa de forma gratuita, porque el color se ve diferente ahora que cuando se ve en el sol de la mañana.
- A los abogados no se les pide que trabajen en un caso de forma gratuita, ya que puede quedar bien en su currículum más tarde.
Lamentablemente, estos casos existen dentro de la dinámica actual de cliente-desarrollador.
Yo, por ejemplo, espero que esto cambio pronto.
Traducción directa. Fuente: Agent-X.
Música ágil para mis oidos
3
Anoche en las oficinas de Microsoft tuvo lugar un atípico Ágiles@BsAs.
Ya de entrada sabíamos que venía desafiante la jornada, que estaba relacionada con sacarnos de la zona de confort para experimentar las diferentes sensaciones y resultados bajo un paradigma de comando y control contrastado con uno de colaboración y auto-organización.
Comenzamos apenas pasadas las 19hs armando equipos de “especialistas”. Había diferentes estilos de percusionistas (3 tipos diferentes) y cantantes. Nos dividieron en 4 grupos: Percusioninstas 1, Percusioninstas 2, Percusioninstas 3 y Cantantes, por especialidad digamos. Nos enseñaron las diferentes partes de una misma canción y nos evaluaban en función de los conocimientos que adquiríamos al respecto.
Lo interesante era que las consultas no estaban bien vistas por la empresa. (al relativamente común)
Luego llegó la hora de tocar en público. Nos integraron a un especialista de cada grupo en un único grupo musical… y a tocar. Fue un verdadero desastre. Horrible.
Inmediatamente después, lo intentamos de una forma más ágil.
Nos dividimos en equipos, ya no había áreas de especialización sino grupos musicales. Cada cual podía tomar el rol que mejor le salga (a mi me pusieron a cantar,.. así que imagínense lo malos que eramos. jaja).
Entregamos en tres iteraciones incrementales. El resultado estuvo genial. la canción se reconocía, había buen humor y terminamos haciendo aplaudir y bailar al auditorio. Muy divertido.
La retrospectiva?
El primer modelo lo asociamos al modelo organizacional tradicional, jerárquico y dividido en áreas de especialización. Los resultados fueron bastante pobres, hubo poca colaboración, las métricas individuales que se utilizaron eran irrelevantes con respecto al resultado final. No me gustaría pasarme la vida trabajando así. Claramente.
Luego pasamos a un modelo mucho más colaborativo y de trabajo en equipo. Eliminamos las especializaciones y comenzamos a medir el resultado final, en forma incremental. Fuimos agregando complejidad y ayudándonos entre nosotros. Adoptando los roles en los que más cómodos nos sentíamos y auto-organizándonos. El resultado fue algo así como lo siguiente…
Bueno, no tanto, pero abismalmente superior al alcanzado en primera instancia.
Excelente el trabajo de Pablo y Rick creando, organizando y facilitando la actividad. Esperemos verlos en Ágiles 2010.
Primer Certificación Scrum Developer (CSD) en Buenos Aires
0Durante los meses de Julio y Agosto estaré facilitando los cursos requeridos para la nueva certificación CSD (Certified Scrum Developer) de la Scrum Alliance.

Durante estos cursos se podrá especial énfasis en muchas de las prácticas ágiles de ingeniería de software como la integración continua, el control de código fuente, automatización de tests, documentación de requerimientos en formato de user stories con criterios de aceptación automatizados (ATDD), TDD y Refactorización, diseño evolutivo de bases de datos, refactorización de bases de datos, utilización de taskboards, métricas ágiles, planning poker, release planning, retrospectivas, etc.
Actualmente Kleer ofrece tres Tracks diferentes de los cuales puedes elegir según tus preferencias:
Track 1: Orientado a la Planificación y Estimación para no certificados como CSM:
1. Introducción a Scrum (1 día)
2. Estimación y Planificación con Scrum (1 día)
3. Desarrollo Ágil de Software (3 días)
Track 2: Orientado al Desarrollo de Software y Bases de Datos para no certificados como CSM:
1. Introducción a Scrum (1 día)
2. Desarrollo Ágil de Software (3 días)
3. Desarrollo Ágil de Bases de Datos (1 día)
Track 3: Orientado al Desarrollo de Software para Certified Scrum Masters:
1. Desarrollo Ágil de Software (3 días)
Al finalizar cualquiera de estos tracks el candidato esta listo para rendir el examen de CSD en la Scrum Alliance.
Puedes ver la agenda de cursos directamente en el perfil de Kleer en la Scrum Alliance o en el calendario de Agile en Acción!, agrupado por track.
Para más información, puedes descargar el catálogo de cursos de CSD de Kleer desde:
http://www.kleerer.com/downloads/Kleer-CSD-Brochure-es.pdf
Una nueva era sobre motivación y compromiso
0El problema es que Andrés no tiene la camiseta puesta.
Increíblemente este es el razonamiento más habitual que he encontrado a lo largo de estos últimos años frente a la falta de compromiso y/o motivación de los recursos dentro de una organización. Comencemos por llamarlos “personas” en vez de “recursos” y vamos a empezar a entender un poco mejor la cuestión.
Otro argumento igualmente utilizado es :
Y bueno, la “Generación Y” es así.
Ejemplos reales tengo decenas que por respeto no voy a dar a conocer, pero en su mayoría se dan/dieron en esas empresas donde se recompensa la “Performance” de la gente.
Es un tema para charlar durante un largo tiempo, pero sería mejor hacerlo con un café de por medio, mucho mejor en un almuerzo. Lamentablemente no estamos en ninguna de esas situaciones.
En estos momentos se dió una discusión bastante interesante en la lista de ágiles argentina que me recordó este tema, donde Juan envió un video que ilustra muy claramente la cuestión.
Lo dejo aquí para quien quiera verlo. Espero les resulte interesante el enfoque de Daniel Pink acerca de la cuestión.
Por lo pronto, estaría bueno que las nuevas start-ups empiecen fomentando la autonomía, maestría y propósito de cada uno de sus empleados.
PD: Aquí dejo también una charla interesante que Daniel Pink dió en TED:
Instalando Rails 3 en OSX Leopard
0Finalmente pude instalar Rails 3 en Leopard (OSX 10.5.5). Aparentemente era algo sencillo de hacer, pero el upgrade de Ruby y de RubyGems en Leopard no funciona del todo bien. Por lo tanto, luego de 12 horas, puedo decir que tengo Rails 3 funcionando, pero me hizo trabajar bastante.
Para que sirva de referencia, como bitácora o para que otro no transpire como lo hice yo hoy, lo dejo aquí registrado.
Antes de comenzar, la versión de OSX sobre la que lo hice es la 10.5.5 (Leopard):
El primer paso -antes de comenzar- es intalar MacPorts y esta versión específica de Xcode.
Inmediatamente después debemos eliminar del sistema (casi) todo Ruby y RubyGems:
sudo rm -r /System/Library/Frameworks/Ruby.framework/ sudo rm -r /Library/Ruby sudo rm /usr/bin/ruby sudo rm /usr/bin/gem
Luego instalamos RubyGems a través de MacPorts:
sudo port install rb-rubygems
Ya tienes RubyGems 1.3.5 en tu sistema, pero debemos actualizarlo a la versión 1.3.7. “sudo gem update –system” no hará el trabajao, por lo que debemos hacerlo de una manera alternativa:
sudo gem install rubygems-update sudo update_rubygems
Terminados esos pasos, ya podemos proceder con la instalación de Rails3:
sudo gem install tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n sudo gem install rails --pre
… y de esta manera, ya debería estar Rails 3 instalado en tu leopar 10.5.5:
Agregando columnas auto increment
0Estoy trabajando en una demo/tutorial sobre desarrollo evolutivo de bases de datos y sus herramientas.
Ya que ayer instalamos un mysql en un cliente para operaciones de software configuration management, se me ocurrió utilizar mysql para el tutorial/demo en cuestión.
Me encontré con algo curioso al intentar agregar una columna auto-incremental a una tabla existente.
Dada esta tabla:
create table program (required_solo_hs int not null, required_inst_hs int not null, required_hs int not null
Intenté agregar una columna id:
alter table program add column id int not null auto_increment
Obteniendo el siguiente error;
Script line: 1 Incorrect table definition;there can be only one auto column and it must be defined as a key
La solución es simplemente indicar que dicha columna además de auto increment es primary key:
alter table program add column id int not null auto_increment key;
Una vez más.. posiblemente a alguien le resulte útil.
Kleer y Run IT
0Kleer y Run IT hemos realizado una alianza comercial gracias a la cual se realizarán sorteos para que puedas participar en alguno de los cursos de “Ágile en Acción!“. Si quieres participar de estos sorteos, deberás cumplir con las siguientes condiciones en Run IT:
- Indicar en tu perfil que estás interesado en participar en los sorteos de Kleer
- Tener un puntaje mayor a 250 puntos dentro de la red
- Poder asistir a los cursos teniendo en cuenta la localización de los mismos
Cada ganador puede participar nuevamente en estos sorteos, deben tener en cuenta que los puntos son reseteados al momento de ganar.
Los puntos válidos serán aquellos obtenidos por generar contenido de interés dentro de la comunidad o por haber invitado a amigos y luego estos hayan registrados en el sitio.
Más información de Run IT: http://www.runit.com.ar
Windows Vista 64bits & MySQL: ERROR 1045 (28000): Access denied for user ‘root’@'localhost’
6Hoy en Kleer, pasamos por la experiencia de instalar MySQL 5.1 por primera vez en Vista 64bits. Lejos de ser una instalación amena, como las que estamos acostumbrados, esta nos hizo transpirar la gota gorda.
Luego de bajar el instalador de 64bits, instalarlo y configurarlo, el asistente de configuración no paraba de dar el error:
ERROR 1045 (28000): Access denied for user 'root'@'localhost'
Probamos infinidad de soluciones, pero ninguna funcionó. Salvo la siguiente:
- Parar el servicio “MySQL” desde “Control Panel->Administrative Tools->Services”
- Ir a “C:\Windows\System32″
- Buscar el file cmd.exe, hacer click derecho con SHIFT presionado y seleccionar “Run as administrator”
- Ejecutar el siguiente comando:
mysqld --skip-grant-tables
- Dejar esa ventana corriendo
- Abrir otra ventana de terminal, esta vez NO como administrator: “Start->Run->cmd” ENTER
- Ejecutar el siguiente comando:
mysql -u root mysql
- Walá! Estamos adentro. Ejecutar la siguiente sentencia, cambiando MyPass por un password real que quieras setear:
UPDATE user SET Password=PASSWORD('MyPass') where USER='root'; FLUSH PRIVILEGES; - Salir:
exit
- Cerrar la ventana
- Cerrar la ventana que estaba corriendo como administrator
- Abrir el task manager y matar todos los procesos “mysqld” (debería haber uno solo, de otro usuario “Administrator”)
- Levantar el servicio desde “Control Panel->Administrative Tools->Services”
- Conectarse nuevamente, esta vez como lo veníamos haciendo:
mysql -u root -p
Con este último paso, ya deberían estar conectados sin problemas. Espero esta solución pueda servirle a alguien y se ahorren un buen tiempo.
Procrastinación
0Al priorizar las historias del BackLog se dice que debemos hacerlo por valor de negocio o por ROI (valor/costo). A mi me gusta además agregar el riesgo inherente en dicha user story y utilizarlo como factor para decidir sobre la priorización.
Dicho de otra manera, el grupo de historias de mayor ROI puede dividirse en dos: las historias con mayor riesgo y las historias con menor riesgo. En lo particular, prefiero resolver primero aquellas con mayor riesgo ya que veo en las metodologías ágiles una muy excelente herramienta de mitigación de riesgos. Si dejamos las historias más riesgosas para el final o las posponemos en el tiempo, no estaremos mitigando ningún riesgo.
Solo un pensamiento en voz alta debido al video de procrastinación que vi en YouTube.
Procrastinación
La procrastinación (del latín: pro, adelante, y crastinus, referente al futuro) o posposición, es la acción o hábito de postergar actividades o situaciones que deben atenderse, sustituyéndolas por otras situaciones más irrelevantes y agradables.
Se trata de un trastorno del comportamiento que tiene su raíz en la asociación de la acción a realizar con el cambio, el dolor o la incomodidad (estrés). Éste puede ser psicológico (en la forma de ansiedad o frustración), físico (como el que se experimenta durante actos que requieren trabajo fuerte o ejercicio vigoroso) o intelectual. El término se aplica comúnmente al sentido de ansiedad generado ante una tarea pendiente de concluir. El acto que se pospone puede ser percibido como abrumador, desafiante, inquietante, peligroso, difícil, tedioso o aburrido, es decir, estresante, por lo cual se autojustifica posponerlo a un futuro sine die idealizado, en que lo importante es supeditado a lo urgente.
Fuente: Wikipedia: http://es.wikipedia.org/wiki/Procrastinaci%C3%B3n
Ejemplos más grandes de procrastinación son esas fases de análisis y diseño detallado de la gestión de proyectos tradicional, también conocido como Análisis-Parálisis, pero este será un tema de un futuro post. (procrastinando)…
Agile en Acción! – Marzo 2010 – Review
0Del 16 al 26 de marzo de 2010 se realizó el workshop Agile en Acción! en la ciudad de Buenos Aires.
Esta edición estuvo dirigida a 15 participantes, quienes mediante una serie de talleres basados en requerimientos reales, crearon las EPICs y User Stories, determinaron su priorización y estimación, crearon el Product Backlog, definieron Velocity, armaron el Release Plan, y terminaron realizando una serie de ejercicios de retrspectiva.
Hubo un clíma muy bueno entre las personas y los equipos que se armaron y todos nos divertimos bastante a lo largo de los 4 días. Dejo aquí las fotos del curso: http://bit.ly/alQC2j
Saludos!
Habra un nuevo Agile en Acción! en Abril-2010: http://bit.ly/agile-en-accion–abril-2010





