Desarrollo de Software

Leyes

Las Leyes de Mariana para implementar Scrum

¿quién es Mariana? Fiel al mejor estilo periodístico que no da a conocer sus fuentes, muchas veces por razones de ética profesional y muchas otras para fastidiar de manera divertida a la audiencia, no revelaré su verdadera identidad . Llamémosla simplemente “Mariana”. Procedo a desarrollar la ancécdota.

“Mariana” es una alumna que asistió a uno de los cursos que dicté este año. Al finalizar el curso, junté todas mis pertenencias, entre ellas el material que usualmente utilizo como cartas, fichas, post-its, rollos de cinta, marcadores, etc. Más tarde cuando llegué a mi casa, al a acomodar las cosas para guardarlas encontré este papel:

Leyes infalibles para Implementar Scrum
1. Hacerlo de forma Iterativa, Incremental
2. No querer abarcar todo desde el principio
3. Controlar las expectativas de los primeros Sprints|
4. No abrumarse frente a los impedimentos que van a surgir (hasta ahora ocultos)
5. Tener coraje, experimentar y dejar experimentar – Errar no es malo, lo malo es no aprender del error.

Bueno, la verdad es que yo tampoco supe quién fue el autor o la autora de esta nota porque no estaba firmada. Solo adivino que fue una mujer porque dobló el papel sospechosamente muy prolijo y por eso adopté llamarla “Mariana”. Hoy lamento que no haya compartido estas ideas con sus compañeros durante el curso, hubiera sido algo muy productivo,  pero al menos lo bueno es que entendió de qué se trata llevar Scrum a la práctica.

photografía: http://www.flickr.com/photos/limaoscarjuliet/225249268/

31 de Agosto – Desarrollo Ágil con Scrum

Los beneficios de Scrum están ampliamente comprobados, pero ¿cómo implementar Scrum? ¿de qué se trata ser un verdadero equipo Ágil?¿cuáles son las prácticas y herramientas ágiles de gestión de proyectos e ingeniería de software que debo conocer?

Para responder a estas preguntas, este martes 31 de agosto a las 18.30hs estaremos presentamos la nueva certificación de desarrollo ágil de la Scrum Alliance: CSD cuya novedad principal es la comprensión práctica de los valores y principios de Scrum y su aplicación en situaciones reales, lo que permite conocer y experimentar Scrum por dentro para luego poder trasladarlo a la ejecución de proyectos concretos.

Esta charla informativa te servirá para entender aspectos fundamentales de Scrum referidos a su implementación, cuáles son las prácticas ágiles de desarrollo y cómo aplicar los principios ágiles en el día a día, los roles, los errores más comunes y cómo evitarlos, el proceso de adaptación en contextos de negocio cambiantes, y más.

CSD: LA CERTIFICACIÓN DE DESARROLLO ÁGIL DE LA SCRUM ALLIANCE

Sacate todas las dudas y descubrí tu potencial ágil y el de tu equipo de trabajo.

Martes 31 de Agosto

18.30 hs

Av. Córdoba 679, 4º piso, oficina 403
Capital Federal

Te esperamos!

Inscripciones: hello@kleerer.com

(Cupos limitados)

Instalación de RVM (Ruby Version Manager)

Ruby Version Manager (RVM) es una herramienta muy útil a la hora de trabajar con diferentes versiones de ruby en un mismo entorno.

Para ilustrar la instalación y operación de RVM, hemos grabado el siguiente video, que podés encontrar también en Vimeo.

Tutorial de RVM – Ruby Version Manager from kleer on Vimeo.

Scrum en Rosario!

En una nueva visita a la bella ciudad ribera, esta vez de la mano de Fundación Libertad, tuve la oportunidad de charlar algunas horas de lo que significa Scrum y de poder acercarnos un poco más a las Metodologías Ágiles.

Tuvimos la suerte de aprovechar una fresca mañana de invierno, en un piso alto de un edificio del centro de la ciudad que ofrece al espectador una impactante vista del río Paraná. Bellísimo.

Para empezar, nos valimos de una “dinámica de tribus” a través de la que identificamos los distintos grupos de profesionales y su grado de conocimiento y utilización de Metodologías Ágiles en sus proyectos (es increíble como este tipo de ejercicio siempre funciona, sea cual fuere el contexto o el grupo de personas).

Ya adentrados en la presentación de la temática, estuvimos conversando acerca de los Principios, el Manifesto Ágil, Historias, Sprints, Product Backlog, Release Plan, Task Board, Daily Standup Meetings, Retrospectivas… en fin, intentando entender en profundidad qué es lo que hace que la aplicación de las Medologías Ágiles mejore la calidad de lo que se entrega al cliente y las prácticas de nuestro trabajo cotidiano.

Aunque para algunos escuchar lo que proponemos desde las Metodologías Ágiles pueda sonar llamativo y fuertemente contrastante con lo que conocieron hasta ahora, existen muchos otros que se interesan positivamente y que buscan aprender más del tema para poder llevarlo a su trabajo. Ya el solo hecho de participar de esta experiencia es un gran paso para lograrlo!

Aquí dejo la presentación que utilizamos:

Hasta la próxima, Rosario!

CSD – Certified Scrum Developer en Bs As

Durante la semana pasada -de Lunes a Miércoles- tuve la oportunidad de facilitar un workshop intensivo de 24 horas de Desarrollo Ágil de Software perteneciente a la certificación CSD (Certified Scrum Developer).

Dejo aquí un video que ilustra la jornada:

Para más información sobre estos workshops de certificación CSD podés visitar la página de Kleer dedicada a este tema en: http://www.kleerer.com/es/CSD

Hola Doc!

¿Qué pasaría si los médicos fuesen tratados como desarrolladores web?

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.

Una nueva era sobre motivación y compromiso

El 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:

OSX Leopard

Instalando Rails 3 en OSX Leopard

Finalmente 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

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

Windows Vista 64bits & MySQL: ERROR 1045 (28000): Access denied for user ‘root’@'localhost’

Hoy 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:

  1. Parar el servicio “MySQL” desde “Control Panel->Administrative Tools->Services”
  2. Ir a “C:\Windows\System32″
  3. Buscar el file cmd.exe, hacer click derecho con SHIFT presionado y seleccionar “Run as administrator”
  4. Ejecutar el siguiente comando:
    mysqld --skip-grant-tables
  5. Dejar esa ventana corriendo
  6. Abrir otra ventana de terminal, esta vez NO como administrator: “Start->Run->cmd” ENTER
  7. Ejecutar el siguiente comando:
    mysql -u root mysql
  8. 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;
  9. Salir:
    exit
  10. Cerrar la ventana
  11. Cerrar la ventana que estaba corriendo como administrator
  12. Abrir el task manager y matar todos los procesos “mysqld” (debería haber uno solo, de otro usuario “Administrator”)
  13. Levantar el servicio desde “Control Panel->Administrative Tools->Services”
  14. 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.