En junio publicaré un nuevo proyecto en el que llevo trabajando unos meses. Me temo que todas aquellas malas prácticas que describía en El Libro Negro del Programador, las he seguido viendo en equipos de desarrollo y compañías con las que he mantenido cierto contacto desde que lo lancé hace ya casi cuatro años.

Código sucio e ilegible, falta de organización, mal uso de herramientas de seguimiento, código excesivamente acoplado, ausencia total de documentación, redundancias chirriantes, soluciones con una organzación en los assets del código desastrosa, falta de gestión de la configuración, correcciones en caliente en los sistemas en explotación, "hoy programo esto porque me gusta más y no hago lo que es prioritario para el proyecto..." y un largo etcétera.

Si esto te suena, entonces ya conoces el resultado: programadores frustrados, un negocio enfadado que gasta más recursos de los que debería y soluciones que hay que tirar a la basura tarde o temprano (o rehacerlas completamente llamándolas con un nuevo número de versión...). Pero, sobre todo, programadores a los que aún le faltan, en mi opinión, un salto de nivel para considerarse auténticos profesionales. No estoy hablando de crear un proyecto lúdico en GitHub en tu tiempo libre, sino de trabajar correctamente dentro de una compañía y como parte de un equipo con el objetivo de sacar adelante un proyecto software con calidad profesional.

¿Y por qué software ágil? Porque los mercados evolucionan cada vez más rápidos, el time-to-market es cada vez menor, porque a estas alturas de la industria del software debemos diseñar aplicaciones para que puedan evolucionar fácilmente y cuyo coste de mantenimiento sea menor. Lejos están los tiempos en que se creaban aplicaciones demasiado monolíticas (aunque las siga viendo muy a mi pesar en entornos profesionales).

Esto es precisamente lo que persigue el Libro Práctico del Programador Ágil, mostrarte las técnicas elementales para que tu aplicación sea modificable con facilidad y mantenible.

En estos años me han contratado para husmear en la forma de trabajo y la calidad del código que se escribe en diferentes organizaciones, de forma que he ido recopilando una gran cantidad de material y que ahora estoy utilizando para darle forma a El Libro Práctico del Programador Ágil. Esto, además, me ha permitido volver a repasar las referencias de cabecera del desarrollo ágil que todo programador debería tener en la mesilla de noche, profundizando aún más en esas prácticas.

Hechos:

1) Programar puede ser hasta relativamente sencillo; abundan los libros que prometen a un neófito aprender php, python o javascript en 24 horas. 

2) Implementar soluciones utilizando realmente la orientación a objetos de lenguajes de más alto nivel como C#, Java o incluso las últimas revisiones de los lenguajes anteriores, comienza a ser algo menos trivial, imposible de aprender en poco tiempo. En muchas ocasiones, apenas utilizamos la orientación a objetos correctamente.

3) Programar una aplicación sin errores, soportado por pruebas, incluye además otro nivel de dificultad y otro enfoque de diseño totalmente diferente.

4) Desarrollar software dentro de un equipo de trabajo, requiere otro tipo de consideraciones: metodología, uso de determinadas herramientas de colaboración o seguir algún tipo de estrategia ALM (application lifecycle management).

... y 5) Por último, desarrollar un proyecto para que acepte cambios, mejoras y nuevas características durante años sin errores, ese es otro tema.

Sin embargo, me temo que me encuentro habitualmente en proyectos de compañías serias y que dedicarn muchos recursos (€), mucho más de los primeros puntos que del último.

El Libro Práctico del Programador Ágil introduce las prácticas necesarias para asegurar la calidad del software en este último sentido, para garantizar la mantenibilidad del mismo, su futura evolución y que la introducción de nuevas caractarísticas se realicen con el mínimo esfuerzo, de modo que los desarrolladores pasen gran parte de su tiempo... programando, aportando valor, no corrigiendo errores, y mucho menos aguantando a los compañeros del negocio frustrados porque el software que utilizan falla o funciona mal.

Nada más y nada menos. Todo un reto, pero, en definitiva, son buenas prácticas que he vuelto a tener muy en cuenta reciemente desde Solid Stack cuando estamos a punto de lanzar la versión licenciada de un producto como Picly.

Iré publicando en forma de entradas en mi web gran parte del contenido del libro, del mismo modo que hice en su día con el El Libro Negro del Programador

A continuación indico el contenido base de este nuevo proyecto:

  • Qué es la calidad del software
  • Por qué el software se corrompe
  • Ideas contraintuitivas
  • Cómo detectar soluciones no mantenibles
  • Una visión holística al desarrollo de software
  • Prácticas de código limpio
    • Código limpio vs refactoring
    • Nombres con significado
    • Clases
    • Funciones
    • Comentarios
    • Formateo e indentación
    • La metáfora del periódico
    • La afinidad conceptual
    • Abstracción de datos
    • Data Transfer Objects
    • Gestión de errores
    • Cohesión entre clases
    • Acoplamiento
    • Interfaces
  • Testing
    • Por qué crear tests forma parte del desarrollo
    • Tests unitarios
    • Tests de integración
    • Catálogo de pruebas de aceptación y de validación
  • Prácticas de refactoring
  • Principios fundamentales de diseño
    • Single Responsability Principle
    • Open-close Principle
    • Linkstov Principle
    • Inversion Control Principle
    • Dependency Inversion Principle
    • Inyección de depenencias
  • Gestión de la configuración
  • Técnicas de productividad para desarrolladores de software
  • Conclusiones

Este nuevo trabajo va al grano, te muestra las técnicas básicas pero imprescindibles de código limpio y de refactoring, con innumerables ejemplos así como la aplicación práctica de principios imprescidibles con SOLID.

Los ejemplos están escritos en C# y Javascript, tratando en cada caso de elegir uno u otro lenguaje para que cada ejemplo sea más ilustrativo.

La calidad nuestro proyecto software avanzará a años luz tan solo aplicando todos y cada uno de los conceptos de El Libro Práctico del Programador Ágil.

Comparte esta entrada...

¿Por qué leer El Libro Negro del Programador?

Adquirir desde:
Amazon (kindle eBook / papel)
CreateSpace (papel)
PayHip (epub / mobi / pdf)

El libro negro del programador.com
Segunda Edición - 2017

El libro negro del programador.com
Now available in english!

Archivo

Trabajo en...

Mis novelas...