Thoughts on Software Reflexiones sobre cómo dearrollar software y no morir en el intento

El Principio de Substitución de Liskov


Mucho se habla de diseño y los principios a seguir a la hora de construir software. Sin lugar a dudas, uno de los mantras más repetidos es S.O.L.I.D., un acrónimo para cinco principios básicos que nos ayudan a desarrollar software: S es para Single Responsibility, una función, clase o componente debe tener una única responsabilidad, es decir, una única razón para cambiar. O es para Open-Closed, nuestros componentes tienen que estar abiertos a la extensión y cerrados a la modificación. ...

Inyección de dependencias de forma funcional


Durante los últimos meses he estado trabajando en un proyecto utilizando Scala como lenguaje de programación principal. La mezcla de programación orientada a objetos y programación funcional que permite Scala resulta interesante, pero cada vez estoy más convencido de que la verdadera potencia del mismo se consigue cuando se aplica un estilo puramente funcional. Al fin y al cabo, si únicamente queremos un lenguaje con algunas características funcionales que hagan nuestro código un poco más cla...

Reflexiones sobre cómo organizar un code retreat


El pasado sábado tuve la oportunidad de organizar un code retreat con la comunidad Scala de Madrid donde, además, hice de facilitador. La idea de un code retreat es tomarse un tiempo para hacer una práctica deliberada y mejorar nuestras habilidades de desarrollo de software en un entorno sin el estrés cotidiano que tenemos en nuestro trabajo. El principal ingrediente para conseguir esto es que, durante el code retreat, no existe ningún objetivo excepto el probar cosas nuevas, practicar y apre...

Continuous Delivery Cambiando nuestro código sin dejar de ofrecer un servicio


En este artículo presentamos un ejemplo práctico de cómo llevar a cabo cambios importantes tanto en nuestro código como en la base de datos utilizada para mantener la persistencia de la informació sin dejar de proporcionar servicio. De esta forma, podemos hacer efectivo el paradigma de continuous delivery sin que los usuarios de nuestro sistema sufran paradas en el servicio debido a las actualizaciones que llevamos a cabo.

Clasificación automática de textos


Imaginemos que queremos construir un servicio que recomiende artículos para leer basándose en las preferencias de los usuarios. Una forma de empezar es preguntando a los usuarios por qué tipo de noticias les interesa más (deportes, política, economía, etc.) y sugerirles noticias de aquellos temas que han elegido. Pero, si queremos enviar noticias de distintas fuentes, más o menos conocidas, primero vamos a tener que resolver un problema: ¿cómo sabemos a qué categoría pertenece una noticia? En...

Tomando notas de forma efectiva (I)


Tengo la manía de querer recordarlo todo. Pero mi cerebro, como el de todos, está hecho más bien para analizar y componer ideas nuevas que para guardar un montón de información. Así que hago lo que casi todo el mundo ha hecho desde siempre: tomar notas. Es algo que, si no hago, creo que no estoy trabajando (o, peor todavía, que estoy trabajando sin organización y de forma poco efectiva). Puedes llamarme maniático, pero así de importante es para mí llevar un registro de lo que hago, lo que se ...

Mitos, falacias, errores y paradojas temporales


Cuando escribes código (o cuando lo estás probando) te encuentras realidades que tienen distintos efectos en tu trabajo: desde hacerte perder (un poco de) tiempo a convertir tu sistema en un auténtico infierno donde no quieres pasar ni un minuto más del estrictamente necesario. Una variedad especial que se me ha repetido continuamente son las relacionadas con el tiempo. Por diversos motivos, tratar con el tiempo en un sistema puede llegar a ser extremadamente complicado. La cosa se complica t...