Reutilización de código

A menudo pensamos en el código como en algo muy valioso, y no hay nada mas alejado de esto. El código tiene muy poco valor fuera del contexto de la organización que lo creó. Hay que comenzar a entender que en el caso que el código no sea hecho explícitamente para ser genérico, su uso se torna muy problemático, incluso dentro de una misma organización, cuando se intenta hacer el reuso de código entre diferentes proyectos.

Leer más...

La oportunidad ágil frente a la crisis

salto al aireLa crisis económica mundial (que puede explicarse de forma clara y con humor) está impactando a prácticamente todas las áreas, y el sector informático no es la excepción. El año próximo se perfila como "dificil" para Sistemas, con reducciones previstas en varias organizaciones.

Durante estos años de alegría financiera, no son pocas las empresas que se dedicaron a tirar manteca al techo, malgastando dinero y contratando personal de forma indiscriminada. Pero ya lo sabemos, incorporar más gente para producir más no suele ser la solución más eficiente. ¿Qué pasaría si, en vez de contratar más personal, las empresas se dedicaran a que sus empleados trabajen mejor?

Mejorar el proceso de software para aumentar la calidad y productividad, y a la vez disminuir costos, debería ser la clave para enfrentar el año que está por empezar.

Leer más...

Cómo hacer las reuniones más ágiles

He encontrado un artículo en el sitio Agile Commons dando consejos sobre cómo hacer mas ágiles las reuniones de planificación. El artículo, dividido en dos partes (Shorter Agile Meetings, Part 1: Iteration Planning e Shorter Agile Meetings, Part 2: Release Planning), da algunos buenos consejos, sobre todo esta parte:

Una reunión de planificación de la iteración se trata de acordar como equipo que podemos entregar una cierta cantidad de trabajo en la próxima iteración, y averiguar cómo haremos la implementción de esa labor. Para mí, la parte más importante del éxito de la reunión de planificación es que todo el equipo está de acuerdo en lo que se va ha construir, hasta los detallados criterios de aceptación para cada historia.

Leer más...

Cómo entender la Complejidad Ciclomática

En este cuarto artículo, vamos a tratar un poco de complejidad ciclomática. A pesar del nombre extravagante, la complejidad ciclomática (también conocida como complejidad condicional) es una simple métrica para determinar, como su nombre lo sugiere, la complejidad de un programa estructurado (cíclico).

Leer más...

Cómo cambiarían los Test Unitarios en el futuro.

Hablemos un poco como en una mesa redonda sobre "El futuro de la prueba de unidad". La mayor parte de la conversación se centró en el mocking. Se trata de un consenso general que los frameworks de mock se están utilizando en forma muy mayoritaria.

La teoría es la siguiente. A menudo, implementar todas las interfaces necesarias es muy tedioso y consume mucho tiempo. Entonces, para tornar las cosas más fáciles, la gente está apelando a los frameworks de mocking. Eso sólo oculta el problema de raíz, que es un API muy compleja.

Leer más...

Ocultando la realidad

dedos cruzadosLa gerencia comenzó a implementar Scrum para mejorar la habilidad de presentar nuevas características a los clientes. En el primer Sprint del primer proyecto, los equipos de Scrum entregaron más funcionalidad de la comprometida. Todos, desde la gerencia hasta los clientes, estaban más que contentos con el cambio.

En el segundo Sprint, las cosas cambiarian...

Leer más...

Introducción a los servicios web RESTful

mundo conectadoLa Transferencia de Estado Representacional (REST - Representational State Transfer) fue ganando amplia adopción en toda la web como una alternativa más simple a SOAP y a los servicios web basados en el Lenguage de Descripción de Servicios Web (Web Services Descripcion Language - WSDL). Ya varios grandes proveedores de Web 2.0 están migrando a esta técnología, incluyendo a Yahoo, Google y Facebook, quienes marcaron como obsoletos a sus servicios SOAP y WSDL y pasaron a usar un modelo más facil de usar, orientado a los recursos.

Veamos los principios de REST para entender más esta tecnología.

Leer más...

Decompilando código Java

javaHace mucho tiempo que no tenía que decompilar alguna clase Java de manera externa. Mi tarea habitual era agregar los fuentes del jar que necesitaba en el Eclipse y santo remedio.

Hoy en el trabajo un compañero le tocó decompilar una clase, hasta ahora venía usando el JAD (Java Decompiler) pero me había quedado un tanto viejito y muy poco práctico, ya que funcionaba desde línea de comandos.

Pero por suerte, ¡hay alternativas!

Leer más...

Cómo es de productiva la programación de a pares

La programación en parejas es, como mínimo, tan productivo como trabajar solo.

Cuando estés trabajando de a pares se trabaja todo el día. Debido a que trabajando solo, podes ver tus e-mail, leer el diario, etc. Y estas cosas no ocurren con la programación de a pares. Después de un día de programación de a pares te sentís cansado. Debido a que  realmente pensaste y trabajaste todo el día, pero estás feliz, porque sabes que el trabajo está hecho.

Leer más...

Comprometerse a lo imposible

avionVivo en Boston y bastante seguido me toca trabajar en Nueva York. En tan solo 45 minutos, Delta Airlines tiene un vuelo que me lleva del Aeropuerto Logan de Boston al Aeropuerto LaGuardia de Nueva York. De hecho, es tan conveniente que a veces hago más de una reunión en el día gracias a estos vuelos. Pero no siempre todo sale bien...

Leer más...

¿Los desarrolladores odian probar?

Asumo, usted ya debe haber oído esto en algún momento de su vida. Esto es sólo una de las frases repetidas incompletas hasta el punto de que muchas personas creen que es un hecho. Bueno, permítanme ser claro entonces que es precisamente la falta de completitud lo que hace que a la frase incorrecta. Los desarrolladores no odian probar.

Los desarrolladores odian probar manualmente.

Esta es una gran diferencia y siempre me molesta cuando la gente inteligente deja de aplicar su tiempo en la automatización para realizar, una y otra vez, pruebas manuales. Si usted todavía pierde tiempo realizando pruebas manuales, sepa que están llenos de problemas: llevan más tiempo para se reproducidas, son propensas a errores, no aprovechan lo que las personas tiene mejor, no pueden ser ampliados para hacer frente a otros aspectos del software (tales como performace, por ejemplo) y no indican exactamente donde la funcionalidad está rota.

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