¿Se justifica el costo de desarrollar software de buena calidad?

Hay un debate clásico en los proyectos de desarrollo de software, entre dedicar tiempo a mejorar la calidad del código versus concentrarse en entregar más características valiosas. En general, la presión por entregar más características domina la discusión, llevando a que muchos desarrolladores se quejen de no tener tiempo para trabajar en la arquitectura y en la calidad del código.

La ley de los titulares de Betteridge es un concepto que dice que cualquier artículo con un título que termine con un signo de pregunta puede resumirse en un “No”. Quienes me conocen sabrán de mis ganas de cambiar esta ley. Pero este artículo va más allá: cuestiona la misma pregunta. La pregunta asume el intercambio clásico entre calidad y costo. Con este artículo intentaré explicar que esta compensación no existe en el software: el software de alta calidad es en realidad más barato de producir.

Leer más...

El Manifiesto de Docker

Docker es una de las herramientas más populares en los últimos tiempos para gestionar entornos de desarrollo y productivos. Su concepción y uso resulta en una forma muy distinta de pensar la forma en la que distribuimos nuestro software y cómo configuramos los ambientes para que todo funcione perfecto. Tan importante resulta, que decidí crear el "Manifiesto de Docker", para explicar la esencia de esta herramienta. Pero antes de llegar alManifiesto, conviene tener en claro los conceptos iniciales. ¿Qué resuelve Docker? ¿Para qué surgió? ¡Vamos allá!

Leer más...

¿Qué hace que un desarrollador sea Senior?

En el desarrollo de software, como en todas las disciplinas, se van adquiriendo conocimientos y habilidades a lo largo del tiempo, que van sumando a lo que podemos aportar y hacer ganar a una empresa o equipo de trabajo. Las empresas suelen reflejar esa experiencia adquirida en distintos grados o “escalones”: trainee, junior, semi senior, senior, etc. Cuando buscan desarrolladores, generalmente apuntan sus busquedas a alguno de esos grados, para poder tambien “encajarlos” en alguna categorización de sueldo, rol y beneficios.

Leer más...

Mitos y verdades de TDD

Escribo mi código con TDD (Test-Driven Development, o Desarrollo Guiado por Pruebas) casi desde mis inicios como desarrollador de software, y a lo largo del tiempo he visto los beneficios de hacerlo, y las consecuencias de no hacerlo. Y de esa experiencia, descubrí que hay varios mitos alrededor de TDD... y algunas verdades.

Leer más...

Comprendiendo las revisiones de código

La frase "revisión de código" puede evocar una respuesta negativa para muchos programadores. Esta sensación negativa surge por sentir que se juzgará su trabajo. Los transporta de vuelta a la escuela, al momento del estrés antes de dar un examen. ¿Por qué ocurre esto? Al igual que otras profesiones de la era industrial, los programadores construyen software usando sus manos y su mente. Aunque parezca estructurado, la programación tiene algo de arte. No hay dos individuos que tengan el mismo estilo, y ambos están orgullosos de su trabajo. La pasión es uno de los mayores motivadores del desarrollo de software. Y a la mayoría de las personas les preocupa cómo se juzgará a su trabajo.

Leer más...

Los principios SOLID para diseño de objetos

Seguramente muchos escuchamos hablar sobre los principios SOLID para crear diseños orientados a objetos: son una excelente guía general de 5 principios que, si seguimos, nos facilitarán la creación de sistemas mantenibles y flexibles.

Lo interesante de los principios SOLID es que aplican a cualquier lenguaje orientado a objetos, ya que son buenas prácticas de diseño probadas en el tiempo. Vamos a repasarlos!

Leer más...

Las 9 cualidades del código limpio

¿Qué tan seguido estás mirando el código de otra persona y pensás "Dios mio, esto es un spaguetti de código..."? Seguramente bastante seguido. ¿Y qué tan seguro estás que otra persona no haya pensando lo mismo de tu propio código? En otras palabras, ¿qué tan seguro estás de que tu código es limpio? El tema es que sólo podremos estar seguros si comprendemos completamente lo que significa hacer código limpio.

Resulta dificil crear una definición precisa de código limpio, y seguramente existan tantas definiciones como desarrolladores. Sin embargo, existen algunos principios que llevan a lograr un nivel básico de código limpio. Las 9 prácticas más relevantes para lograr codigo limpio a continuación.

Leer más...

Parser Javascript para planillas de Google Docs

google-docs-spreadsheetHace poco tuve que consumir una planilla de Google Docs desde una página web... y no encontré una forma sencilla de hacerlo. Les presento entonces el resultado de esa necesidad: Google Docs Simple Parser (gdsp para los amigos) es una pequeña librería Javascript que permite crear un array de objetos a partir de una planilla de cálculos sencilla en Google Docs. La idea es contar con una utilidad para acceder de forma simple y rápida a datos almacenados en una planilla (puede resultar muy práctico para editar en equipo, mantener y actualizar).

gdsp se encarga de parsear la planilla y devolver un array de objetos sencillo con los valores de las celdas. Simple y práctico, sin vueltas.

La utilidad es de software libre, y la distribuyo bajo la licencia MPL 2.0. Si les interesa los invito a descargarla desde BitBucket, o consultar un ejemplo más completo con los amigos de FernetJS.

¡No me hagas pensar!

Una página de internet debería ser obvio. Usarla debería requerir el mínimo posible de uso cerebral. No es casualidad que los grandes sitios de la web tiendan a ser cada día mas sencillos y predictivos. Todos persiguen el mismo objetivo: No hacer pensar a los usuarios.

Hay elementos y formas de hacer nuestros sitios, que ya son conocidos y resultan naturales para su uso. En este artículo enunciamos una lista de Tips de Usabilidad que podrían servirles a la hora de diseñar y desarrollar tu próximo sitio web

Leer más...

Definición de Terminado (DdT)

¿Cuando una Historia de Usuario está Terminada? Cada persona puede tener criterios o interpretaciones distintas para considerar terminado o a medio hacer algo. Es por esto que surge en el desarrollo Ágil de Software el concepto de "Definición de Terminado" (DdT), que básicamente son las pautas mínimas para que algo pueda considerarse terminado.

En este artículo les mostramos nuestra DdT acompañada por comentarios que pueden servirles si lo que están buscando es unificar el criterio de Terminado en sus equipos.

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