¿Eres un desarrollador con principios?

Es curioso como existen algunos principios que son de aplicación en todas las facetas del desarrollo de software, desde la escritura de código, pasando por el diseño y el diseño arquitectónico, hasta la gestión de proyectos.

No son patrones, sino algo mucho más etereo y que no tiene una instanciación directa como estos, aunque, en cierto modo estos principios de los que hablo son los que, para mí, diferencian a un buen desarrollador. En esencia estos pincipios son la base de la 'cultura' del desarollo de software, son sus memes. En mi opinión los desarrolladores experimentados tenemos la obligación de preservar y transmitir estos gnes de información.

Son princpios universalmente aceptados, pero no universalmente conocidos. Pequeñas perlas de conocimiento y experiencia que debemos transmitir como medio para mejorar el nivel de conocimientos en nuestra profesión. Agunos son universales, se aplican en todas las facetas del desarrollo de software, como por ejemplo

KIIS (Keep It Simple Stupid), principio que mantiene la conveniencia de buscar las solución más simple posible a un problema.
DRY (Don´t Repeat Yourself), principio que sostiene lo dañino de las repeticiones.
SoC (Separation of Corcerns), principio que propugna la conveniencia de asociar responsabilidades claras a las partes que componen un sistema.
Orthogonality, principio que defiende la conveniencia de que los diferentes componentes de un sistema puedan variar sus comportamientos sin afectar al resto de componentes.

Otros son más especificos del dominio concreto, por ejemplo, relativos a la gestión de proyectos:

Involucra al cliente
Gestiona tus riesgos
Haz de la integración un habito
Libera pronto software
Haz de la calidad un preocupación continua
Evita la optimización prematura
etc…

Los desarrolladores de Microsoft Solution Framework se han dado cuenta de la importancia de los principios y tanto MSF for CMMI como MSF Agile, contienen una lista de los principios en los que están fundadas estas metodologías.

Compralo en AmazonLo que tienen en común todos estos diferentes tipos de principios es que sirven para transmitir conocimiento de una manera rápida y concisa. Son un arma que yo utilizo de la siguiente manera, que alguien se esta complicando la vida al hacer una arquitectura, le suelto: "Te estas saltando el principio KISS", si sabe de que va el principio perfecto, ya sabe lo que estas diciendo, sino, le remites a la Wikipedia y en 20 minutos sabe lo que tratas de decirle en un sentido más amplio que si se lo explicas detalladamente. Además si quiere profundizar hay miles de artículos y libros que justifican el contenido de este principio.

Estos principios, tambien sirven para facilitarnos la toma de deciones en nuestro trabajo como desarrolladores de manera rápida, directa y basandonos en fundamentos ferreos, pero sin tener que tomarnos excesivo tiempo en analizar la situación. Básicamente, si tienes dos opciones y una viola alguno de tus principios, tomar la decisión adecuada, es inmediato.

Pero claro, si eres un desarrollador nobel y en el proyecto en el que estas nadie se preocupa de transmitirte estos principios, la pregunta imediata es ¿Por donde puedo comenzar para construir mi lista de principios?. Pues bien, un buen inicio es 'The pragmatic programmer' de Andrew Hunt y David Thomas, un libro que hace una recopilación y una explicación de los principios adoptados por estos dos experimentadisimos programadores. Puedes ver una lista de estos principios. Existen alguan otras listas de principios universalmente conocidas y aceptadas, al menos en algunos ambitos, como por ejemplo 'El Manifiesto Ágil'. Otra lista de principios recomedable es Los 10 mandamientos del programador ágil. Y existen muchas más…

9 comentarios sobre “¿Eres un desarrollador con principios?”

  1. The Pragmatic Programmer !! que buenos recuerdos .. lo lei hace un tiempo (que ya es más de un año porq estaba en Argentina), pero recuerdo que por sobre todo era una lectura divertida y a conciencia. Y tocando un poco el tema del post, yo creo que muchos desarrolladores desarrollan principios sólidos para gestionar su día a día; pero sus principios suelen «chocar» contra los que poseen los jefes de proyecto. Si bien, la lista podria ser aplicable a ambos perfiles, por lo gral no se aplica. De aquí nacen los principales problemas de gestión de proyectos que usualmente veo en mi día a día.

    Saludos

    El Bruno

  2. Bruno… cuanta razón. A menudo el principal problema para mantener los principios es que nos rodea gente que no los tiene… pasa en todas las facetas de la vida.

    Sin duda actualmente al mando de los proyectos hay una generación de gestores que vienen de campos ajenos a la informática, que no han recibido formación en gestión de proyectos de software y que gestionan proyectos de software al estilo ‘proyecto industrial o de construcción’. No comprenden las diferencias inherentes que existen en la gestión de proyectos de software.

    Yo imparto mucho un curso de gestión de proyectos de software y sorprende ver lo poco formada que está la gente involucrada en los proyectos en lo relativo a técnicas y metodologías de gestión de proyectos. Y no por falta de interés, todos mis alumnos en este tipo de cursos muestra mucho interés y todos creen que las técnicas que cuento les pueden ayudar. El principal problema para ponerlas en práctica es que las desconocen.

  3. No conozco mucho MOPROSOTF pero me suena a un intento más de subirse al carro de CMMi y pintarlo menos burocrático de lo que es… no se… creo que a estas alturas, un nuevo marco metodológico es lo último que necesitamos…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *