Retrospectivas

Los equipos ágiles a menudo encuentran que es fácil hablar de cambios durante sus retrospectivas, pero no siempre es tan fácil de hacer que el cambio ocurra después de la retrospectiva. Esther Derby, conocido líder sobre los aspectos humanos del desarrollo de software y co-autor de libros tales como Agile Retrospectives: Making Good Teams Great, relata una experiencia de su esfuerzo de mejora personal para ilustrar esto y ofrecer algunas sugerencias sobre cómo tener éxito para que los cambios realmente sucedan.

Muchos equipos ágiles caen en la trampa de utilizar retrospectivas para hablar mucho sobre el pasado sin tomar la retrospectiva como información y emprender la acción para lograr el verdadero objetivo de ella -aprender como mejorar en adelante, y hacer un plan para aplicar esa mejora. En resumen, los equipos que no realizan ningún cambio después de sus retrospectivas, en general, toman las mismas como una perdida de tiempo.

Leer más...

En el futuro, ¿seré un buen Líder?

Sin duda, este pensamiento pasa por la mente de cada desarrollador.
Con el paso del tiempo esto es algo que de cierta forma es esperado, aunque no siempre es correcto, y hoy en día es común que las personas de edad avanzada y con experiencia lideren a las mas nuevas.

A bordo de un buque, el capitán, además de ser el líder de sus marineros, probablemente el es el más experimentado de ellos, y sabe muy bien lo que cada uno debe hacer y cómo.

Leer más...

El sprint de dos días

cronómetroEn la presentación Iteraciones extremadamente cortas como catalizador para una priorización efectiva del trabajo (26 minutos, video en inglés), Mishkin Berteig nos cuenta una situación donde le propuso a un equipo de desarrollo, el cual comenzaba a experimentar con Scrum, utilizar iteraciones de 2 días. Este enfoque extremo fue para solucionar el problema de falta de prioridades en la organización, lo cual resultaba en crisis constantes. La decisión llevó a una crisis aún mayor la cual expuso la necesidad de priorizar tareas.

Mishkin trabajó con un equipo de desarrollo de software el cual sufría interrupciones en forma constante. La companía tenía varios Dueños de Producto quienes le pedían al equipo que les resolviera temas lo antes posible. Esto ocasiaba un cambio constante de un proyecto a otro, sin lograr un avance real en ningún proyecto, y los usuarios estaban cada vez más molestos.

Leer más...

¿Que es el Sprint Cero?

Algunos equipos usan un Sprint 0 para preparar su Product Backlog, la infraestructura (entorno de desarrollo, servidor de Integración Contínua), ... . ¿Es esto parte de scrum? ¿Es útil?
Dan Rawsthorne, un Entrenador Senior en Danube, usa Sprint 0, como forma de conseguir que el equipo inicie:

La idea es simple: tomar un sprint inicial (llamado Sprint Cero, Iteración Cero, Sprint de Incepción, etc) que tiene los siguientes tres objetivos:

Leer más...

10 preguntas a los más grandes programadores del mundo

El autor de Stifflog tuvo una buena idea: armó una serie de 10 preguntas, y se las envió por email a varios de los más reconocidos programadores del mundo.

Y sorpresa, fueron llegando las respuestas. El resultado es una excelente entrevista a nueve de los mejores programadores de la actualidad. A continuación Linus Torvalds, Bjarne Stroustrup, James Gosling y otros grandes nos cuentan sobre sus inicios, el rol de la universidad en el desarrollo profesional, su visión de un "buen desarrollador", libros y hasta música favorita.

Leer más...

10 Consejos para CSS

Hubo un tiempo en que el desarrollo de diseño de sitios web se basaba totalmente en tablas. Muchos sitios hasta hoy son así, algunos por desconocer los beneficios de CSS (Cascading Style Sheets) y otros simplemente por usar herramientas que no sacan provecho de CSS.

Jeffrey Zeldman dice en su libro Diseño de sitios web compatibles, que el 99,9% de los sitios son obsoletos.

Leer más...

Confirmado: la mayoría de los usuarios son idiotas

malwarePara la mayoría de nosotros, los problemas de seguridad le pasan "a otras personas". Nosotros bloqueamos los popups, leemos cuidadosamente los cuadros de diálogo y, para quienes usamos Mac, nos reimos cuando vemos un aviso fraudulento que intenta disfrazarse de ventana de Windows. Pero todos sabemos que no formamos parte de la mayoría: ¿cuál es el compartamiento de un usuario común?

Un equipo de investigadores decidió averiguar cómo responde un grupo de estudiantes de secundaria cuando se les presentan ventanas de popups mientras navegan. Los resultados son desalentadores: encontraron que los estudiantes están tan ansiosos por quitarse de encima los popup que hacen click en cualquier cosa, pese a tener mensajes de alerta muy obvios.

Leer más...

Anotaciones en Java

Las anotaciones son sólo metadatos (o DecorativeData, como algunos pueden preferir), información adicional sobre el código que está escrito. Normalmente siempre se hace una analogía con el Post-it colgado en la mitad de su código fuente: las anotaciones no ejecutan código.

El uso adecuado de las anotaciones sigue el estilo "Enabling". ¿No direccionan en ningún camino, no indican la ejecución de ningún código. Por el contrario, como metadatos, sólo permiten diferentes usos de esta información adicional. Un buen ejemplo sería la anotación @Entity, de la API de Java Persistencia:

Leer más...

Ingeniería reversa configurable y automática con Maven

Mantener los diagramas UML y la documentación ha sido siempre un servicio dfiícil, por productivo y en función de lo que está documentado acaba convertiendose en documentación inútil.

Pensando en  este problema fue desarrollado Jsigner, una herramienta que permite la ingeniería inversa a través de Maven, en una forma diferente a las conicidas. Jsigner tiene por objeto generar diagramas que realmente añadan valor a la comunicación y la documentación.

El concepto utilizado fue el mismo que para javadoc. Anotaciones en el código fuente se utilizan para generar los diagramas de clases, de forma muy simple ... Basta con anotar las clases que desea que se documenten con diagramas utilizando la anotación @Domain y pasando como parámetros los dominios a los cuales la clase pertenece. Para cada dominio se creará un diagrama separado, para no causar sobrecarga cognitiva a los lectores de los diagramas y, por tanto, generar diagramas claros y objetivos!

La configuración de esta herramienta permite:

  • División de negocios en varios diagramas.
  • Decidir que clase se mostrará en que diagrama.
  • Configurar la omisión de métodos y atributos no deseados (getters, setters, equals, serialVersion etc..).
  • Generación de diagramas a través de Maven.
Para más detalles pueden visitar el sitio.

Mockito (o basta de EasyMock)

en construcción

Uno de los patrones más comunes en los frameworks de testing con mocks es el famoso expect-run-verify (o, como se hace en EasyMock, record-replay-verify). Y con el tiempo se está volviendo algo de lo más molesto... veamos porque:

  1. Ensuciamos el código. O dicho de otra forma, el código de los tests va quedando horrible, a medida que van aparienciendo todos esos expect. Estamos obligados a programar los expect no porque los necesitamos testear, sino porque sino el mock va a chillar feo.
  2. No resulta natural al ciclo de testeo. Las llamadas esperadas a un mock son en si aserciones, y deberían comprobarse después de la ejecución. Hacerlo al revés no resulta muy intuitivo.
  3. Los tests quedan frágiles. Los cambios en el código que requieren una interacción nueva entre objetos seguramente romperán a los tests, ya que no contarán con los expect necesarios.
  4. Es dificil de identificar errores. Si pudieramos transformar todos esos expect en asersiones, al fallar sabríamos exactamente dónde está el problema. Al tener los expect antes, las fallas ocurren dentro del código, en medio de la ejecución (y debemos luego decifrar excepciones para ubicar el lugar).
Pero a no desesperar, que ya hay alternativas para mejorar el panorama. Y aquí es donde aparece Mockito.

Leer más...

¡Ajaxificando un formulario!

logo de jQuery He aquí una disculpa a todos los usuarios de sitios que ayudé a construir: "Lo siento si les hice sufrir refrescos innecesarios en las páginas". O al menos, esto es lo que me vino a la cabeza cuando aprendí lo facil que es usar jQuery para evitar los refrescos de página al enviar un formulario.

jQuery es una librería JavaScript espectacular, con un nombre bastante confuso. De forma muy simple permite agregar funcionalidad a las páginas, de manera no obstrusiva. Ofrece un marco general para trabajar con JavaScript, y además es extensible a través de plugins.

Y entre estos plugins se encuentra jQuery Form, que nos permite "Ajaxificar" un formulario cualquiera (si, acabo de inventar esa palabra, ¿y qué?), de manera que su procesamiento ocurra en segundo plano, y los resultados de la invocación se muestren automáticamente en alguna sección de la página.

Leer más...

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw