Cuantificando los beneficios de TDD

MedirSegún un estudio reciente, el uso de Test Driven Development (TDD) incrementa el tiempo de codificación en un 15-30%, y resulta en un 40-90% menos de defectos. El estudio se hizo en 4 equipos de desarrollo diferentes (1 de IBM y 3 de Microsoft). Esto confirma lo que cualquier practicante de TDD te puede decir: se gasta un poquito más de tiempo en escribir las pruebas, pero la calidad del código resultante es muy superior.

Leer más...

Cómo determinar el costo y tiempo de un proyecto

Diagrama de GanttDeterminar el costo y tiempo de un proyecto de software es uno de los temas más importantes en el desarrollo de software. Mi opinión seguramente va a ser polémica, y acá está: es imposible determinar cuál será el costo y el tiempo de un proyecto de desarrollo de software. Más aún, es muy mala idea intentar usar la planificación como si fuera un contrato con nuestro cliente.

Leer más...

¿Se puede extender una iteración?

CicloEstamos trabajando lo más bien en un sprint, y unos días antes de terminarlo descubrimos un problema en una historia importante que le impedirá al equipo poder terminarla. ¿Qué se debería hacer? ¿Volver la historia al backlog para la próxima iteración, o extender la duración del sprint para poder terminarla? 

Leer más...

NetBeans 6.8 Milestone 2 liberado

NetBeansLa gente de NetBeans está contenta de anunciar la publicación de NetBeans IDE 6.8 Milestone 2, un avance de lo que será la próxima versión de este IDE Java.

Este milestone incluye muchas novedades relacionadas con Java EE 6, soporte para JSF 2.0 y JPA 2.0, soporte para PHP 5.3, nuevas herramientas de profiling para C/C++ y mucho más.

Leer más...

Test Secuencial con Selenium y JUnit

Logo de seleniumEn diversas situaciones, nos encontramos con la necesidad de realizar pruebas con diferentes juegos de datos. Esto se soluciona en principio con la combinación JUnit y la utilización de los test parametrizados.

¿Pero que sucede cuando estas pruebas reiterativas las debemos realizar sobre aplicaciones web?

Leer más...

Cómo se genera el "mal código"

SelloEn general nadie crea código inmantenible de forma intencional (ignorando los casos de algunos consultores que escriben mal código para forzar a quedarse con el contrato). Sin embargo, el mal código va creciendo de forma lenta y segura a lo largo del ciclo de vida del producto.

Vamos a ver dos formas de pensar (de "jefe" y "desarrollador") que llevan a la aparición del mal código en nuestras aplicaciones.

Leer más...

Scrum: una metodología humana para el desarrollo de software

Pelota de rugbyLes dejamos la presentación Scrum: Una metodología humana para el desarrollo de software, que usamos por primera vez en la Universidad de San Andrés (Buenos Aires), donde explicamos los conceptos fundamentales de Ágil y Scrum en relación a las relaciones humanas que generan.

La presentación gira alrededor de los siguientes temas: 

  • El Cambio Cultural necesario que plantea Ágil
  • El valor de negocio para acercanos al cliente
  • Los conceptos fundamentales de Scrum y Ágil
  • La pasión por nuestra profesión

Leer más...

Los 6 principios de Ágil Simple

Suma simpleCuando estamos durante una implementación ágil, en particular en equipos ágiles nuevos, a menudo hacemos las cosas demasiado complejas y dificiles. Tenemos la tendencia a poner parches y sobre el proceso hastas que termina siendo un monstruo grande y poco útil. ¡Necesitamos intervenir a tiempo! Así que respiren profundo, relájense y veamos juntos cómo simplificar nuestra vida en un equipo ágil.

El punto de inicio son 6 principios básicos que llamo "Ágil Simple".

Leer más...

El problema con la planificación

Mapa de rutaCreo que estoy teniendo bastante éxito con mi carrera. Pero si hubiera sido mejor con la planificación, no hubiera logrado ni la mitad de las cosas que logré! De hecho, algunas cosas ni siquiera las hubiera comenzado...

Leer más...

Leer archivos con cabecera en Spring Batch

SpringGracias al aporte de "acandal" tenemos un nuevo capítulo en el curso de Spring Batch 2.0. La demo #9 incluye un ejemplo sobre cómo leer archivos planos en los que se recibe una primera línea “cabecera” con datos generales del archivo y/o comunes a todos los registros, y las siguientes líneas son los registros que deben ser procesados individualmente. Además veremos cómo se comparte información entre el reader y el writer, utilizando el contexto del step.

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