miércoles, 13 de marzo de 2013

Primera: «Act with Prudence»

En el análisis del primer elemento a tener un cuenta un programador en 97 Things Every Programmer Should Know pretendo analizar los siguiente elementos:
  1. Concepto de Deuda Técnica (DT)
  2. Reconocimiento de dificultades futuras que puede traer consigo una DT.
  3. Se suman más problemas: los diferidos, los actuales, y los futuros.
  4. Seguimiento de la deuda: herramientas, recomendaciones.
  5. Registro claro de los plazos nuevos de la DT, facilita determinar su coste.
1. Conceto de Deuda Técnica


En términos simples y llanos, se puede considerar a una DT así:


Donde,

TiempoTotalActividad: Es el tiempo total requerido por la actividad (i.e.: refactorización, mantenimiento, extensión funcionalidad, etc) a llevar a cabo.

TiempoHacerloRápido: Es el tiempo que representa la mínima cantidad de esfuerzo para resolver un caso. Nota: siempre TiempoHacerloRápido < TiempoTotalActividad.

La alternativa idónea, y la menos recurrente, por los plazos apremiantes es la que convierte la DT en 0. Dado que TiempoHacerloBien = TiempoTotalActividad.

2. Reconocimiento de dificultades futuras que puede traer consigo una DT.

Conocer o prever las consecuencias que acarrea una DT nos permite determinar las dificultadas futuras en el desarrollo del producto, o durante cualquier otra fase del ciclo de desarrollo (mantenimiento, soporte, etc). ¿Cómo identificar estas dificultades? De manera general, puedo decir que dependiendo de la tarea que estemos realizando; por ejemplo: si se trata de corregir un bug, y se opta por el camino rápido (TiempoHacerloRápido) lo más seguro es que se haya recurrido a crear código spaghetti (ya es evidente que tendremos trabajo adicional, no sólo entiendo el fragmento de código, sino la formulación de una solución alternativa para el problema).


3. Se suman más problemas: los diferidos, los actuales, y los futuros.


Responsabilizarse de una deuda técnica representa una carga de trabajo exhaustiva (varía, desde luego, dependiendo de la complejidad de la tarea, números de pasos para completarla, recursos requeridos (tiempo, dinero, etc).

4. Seguimiento de la deuda: herramientas, recomendaciones.

La programación de la DT consiste en planificar su solución en un corto plazo. Se recomienda disponer del tiempo aproximado necesario, de coordinación con otros miembros del equipo de trabajo, en cuanto al sistema a mantener, depurar, extender, establecer un horario de solución de incidencias que no afecte la operación por parte de sus usuarios.

5. Registro claro de los plazos nuevos de la DT, facilita determinar su coste.

En caso que sea necesario, podemos posponer la deuda, pero teniendo cuidado en estos aspectos: nivel de prioridad, disponibilidad de recursos, el no cruce con otras actividades futuras, entre otras.

¿Alguna vez han tenido una deuda técnica en la construcción de un producto software?

Reconcimiento:

Autor: Seb Rose

martes, 12 de marzo de 2013

Análisis «97 Things Every Programmer Should Know»

Hola,


Voy a tomarme el tiempo para hacer un análisis a «97 Cosas que Cada Programador Debería Saber». Quiero aclarar que el título original del libro es 97 Things Every Programmer Should Know. En lo personal, es una fuente de inspiración para evaluar si muchas de las prácticas actuales se hacen de la mejor manera, esto a nivel de programación, desarrollo, y arquitectura de software.
Para entrar al grano, no se trata de mostrar las ventajas de una tecnología en particular, o de escribir código en un lenguaje en específico, lo que ustedes pueden esperar de los análisis que voy a realizar, son opiniones generales, y en muchas ocasiones específicas que comprometen la escritura responsable de código (desde luego las tareas que giran en torno a esta actividad que a pesar de que ya han pasado más de 40 años desde que si introdujo la Ingeniería de Software, aún se le considera un arte).
Dejo esta frase que me resulta muy inspiradora y esclarecedora: «...no single person or single source can lay claim "the one true way».
Agradezco de antemano comentarios, opiniones, críticas, sugerencias etcétera frente a estas publicaciones.
Espero que disfruten las entregas que vendrán a continuación de esta entrada.
Gracias.
Hasta la próxima.