Feed de Edgaragg

Artículos relacionados

Facebook Share

Share on facebook

Designed by:
SiteGround web hosting Joomla Templates
7 principios para el desarrollo exitoso PDF Imprimir E-mail
Escrito por edgaragg   
Viernes, 07 de Mayo de 2010 10:06

Llevaba mucho tiempo sin escribir, muchas experiencias han sucedido y puedo decir que muchas de mis ideas sobre el desarrollo de Sofware han madurado.  Después de muchos años he llagado a formarme una opinión sólida acerca de cómo debe desarrollarse un software.  A continuación les planteo mis 7 principios, los cuales, de ser aplicados correctamente pueden ayudar a desarrollar una aplicación exitosamente. 

El cliente es primero

“When the customer comes first, the customer will last”.  Robert Half

Siempre el cliente debe ser primero, hay que enfocarse en el valor que el software puede darle al cliente.  Es fácil ver a equipos de desarrollo enfocándose en las tecnologías y las plataformas y no en hacer feliz al cliente.  Podemos pasar mucho tiempo desarrollando librerías y frameworks que no le van a dar ningún valor al cliente.  Esto está mal, no se puede dejar que las consideraciones técnicas sean las que decidan como va a funcionar el software.  El software debe ser impulsado exclusivamente por lo que hace que sus clientes sean felices.  Todo lo demás es secundario.

 

Comunicación

El desarrollo de software se basa en la comunicación.  Empezando por el hecho de que el cliente le explica al equipo de desarrollo que es lo que el quiere llevar a cabo, para que posteriormente sea el equipo de desarrollo el que pueda plasmar eso que se comunicó en código.

La comunicación entre el cliente y los analistas es muy importante e incluso crucial para que el desarrollo del software sea exitoso.  Una mala comunicación entre el cliente y el analista puede desembocar en que se entregue un software que no cumple con las necesidades del cliente.  Asimismo también es importante la comunicación entre el equipo de desarrollo.  He visto casos en los que los líderes de proyecto no entregan la información a los miembros del equipo, en muchos casos por desconfianza a los miembros o a algunos miembros del equipo.

Una regla importante para la comunicación, esta regla dice que en todas las discusiones importantes debe haber por lo menos, un desarrollador, un representante de calidad (QA) y un representante de la empresa.  Si todo lo demás funciona pero la comunicación no, el proyecto está destinado al fracaso.

 

Evitar pérdidas de tiempo innecesarias

Las pérdidas de tiempo constituyen un factor que desgasta el proceso de desarrollo de software.  El equipo de desarrollo debe centrarse en entregar el producto a tiempo y que sea lo que realmente quiere el cliente.  Las causas más comunes de la pérdida de tiempo (y a la vez las más peligrosas) en el proceso de desarrollo son:

  • Reuniones innecesarias.
  • Requerimientos innecesarios.
  • Procesos innecesarios.
  • Documentación innecesaria.

Calidad de código

Hay que ser sinceros, por más que uno se esfuerce a escribir un código de calidad, es muy probable que el código que una pueda escribir no sea el mejor. No importa cuanto crea uno que el código que se escribe es una obra de arte, siempre va a haber una forma mejor de hacerlo y siempre va a existir alguien a quien no le guste lo que se escribió.  
 
La calidad de código es una medida sumamente subjetiva, sin embargo debe basarse en dos aspectos importantes: 
  1. Que tan difícil es de mantener el código.
  2. Que tan fácil resulta de entender para otro programador.
Hay indicadores como la simplicidad, la robustez y la testeabilidad que nos pueden ayudar a definir un mínimo de calidad para nuestro código.  Otros indicadores como el performance no definen necesariamente la calidad del código, por el contrario, pueden perjudicar el proceso de desarrollo.  El performance del código es solo necesario si hay un requerimiento que así lo determine.  En ese caso si podemos incluir el performance como una medida de calidad.
 

Iteraciones

Las iteraciones son importante porque nos dan un feedback temprano y continuo.  El feedback nos ayuda a reducir la incertidumbre en el proceso de desarrollo.  Reducir la incertidumbre nos ayuda a saber que estamos en el camino correcto.
 
El manejo de la incertidumbre es un factor importante que determina el éxito o fracaso del desarrollo de software.  Tradicionalmente se cree que la incertidumbre se puede controlar mediante el diseño y la planificación temprana.  Esto no es así.  Si algo caracteriza el desarrollo de software es el cambio constante y debemos estar preparados para esto.   Las iteraciones nos ayudan a manejar los cambios que aparecen durante el proceso de desarrollo. 
 
 

Refactorizar

Como ya dije anteriormente, no importa que tan bueno creas que es tu código, siempre se puede mejorar.  Y aunque ese código sea lo suficientemente bueno, es muy probable que tenga que cambiar debido a nuevos requerimiento.  Refactorizar el código es la mejor práctica para ir cambiando el código de manera que se adapte a los cambios que vamos introduciendo al sistema.

 

Pruebas automatizadas

Debido a que el proceso de desarrollo se lleva a cabo por iteraciones y en cada iteración pueden surgir cambios en nuestro código debemos aprender a usar la buena práctica de refactorizar los códigos.  Refactorizar es una herramienta muy útil pero puede introducir nuevos errores en las partes del sistema que ya están hechas y probadas.

Es importante entonces crear pruebas automatizadas para garantizar que el código que cambiamos no está afectando el resto de la funcionalidad del sistema que estaba trabajando correctamente antes del cambio. 

 

 

 

 

 

Actualizado ( Viernes, 07 de Mayo de 2010 12:52 )