Category Archives: Comentarios

¿Por qué el code review toma tanto tiempo?

La respuesta simple es que “hay mucho código por revisar“, y tiene sentido, pues si estamos liberando funcionalidades, sea diaria, semanal o mensualmente, el equipo está escribiendo tanto código como se necesite. Y si además se respeta un procedimiento de construcción adecuado, así se tengan herramientas y/o automatizaciones, se necesitará una validación adicional, y con esto me refiero a la humana.

Ojo, y esto fue mencionado por Fred Brooks hace casi cincuenta años, así se agreguen más personas al proceso, el tiempo siempre jugará en contra o peor, podría incrementarse, sea – y esta es una opinión personal– porque hay reuniones por atender, dudas que resolver o bueno, cosas para ayer.

Entonces solo queda afinar el proceso, quizá definir periodos, horarios de revisión, reglas y puntos que prefiero mencionar en otra publicación, pero –para no alargar esto– lo mínimo a considerar es el tamaño del bloque o tamaño del código a revisar.

Ahora, si no tenemos idea al respecto, un estudio –que, por cierto, tiene algunos años, pero su base de investigación es muy interesante– recomienda manejar un rango de revisión que va entre las 200 y las 400 líneas de código y que el proceso como tal, no debería tomar más de una hora.

Ahora, algunos se preguntarán ¿cómo se mide esto?, por suerte se tienen herramientas cada vez más sofisticadas –y también podríamos hablar de ello–, pero aquí el problema no es ni será la herramienta, sino el acuerdo que debe tomar el equipo sobre lo que a veces llamo “el tamaño de la propuesta de cambio“, donde propuesta cambio (asociada al concepto de changeset, pero de eso podemos hablar otro día) refiere al bloque de código asociado a la funcionalidad que queremos incluir en el producto que estamos construyendo.

Personalmente creo –y obviamente puedo estar equivocado– que debería ser uno de los primeros acuerdos que se deben manejar dentro del equipo, caso contrario se afectará la calidad del producto, y aquí debemos recordar que productos digitales que funcionan hay muchos, pero que funcionen bien, ese ya es otro tema.

Aquí algunas referencias a tener en cuenta:
– Best practices for code review: https://smartbear.com/learn/code-review/best-practices-for-peer-code-review/
– The largest case study of code reviews, ever:https://www.cmcrossroads.com/article/largest-case-study-code-reviews-ever
– Brook’s law: https://en.wikipedia.org/wiki/Brooks%27s_law
– Changeset: https://en.wikipedia.org/wiki/Changeset

Un abrazo,

JD

¿Eres intenso?

Si no eres “intenso” o “intensa”, como muchos podrían esperar o incluso alardear, no hay problema con eso, es una posición que se debe respetar pero recuerda que la intensidad implica altos niveles de presión y energía que, como es natural, pueden ir disminuyendo.

¿Qué nos queda? Ser consistentes.

¿Cuál es la segunda regla del Club de la Programación?

Si existiera un Club de la Programación (al mismo estilo del Club de la Pelea), creo que la primera regla debería ser:

– ¡Versiona tu código!

Pero ¿cuál sería la segunda regla?, estaba pensando en eso y creo que podría ser:

– ¡Escribe pruebas unitarias!

Aunque para este punto encuentro muchas confusiones (como cuando se confunde unit testing con TDD), y también cierto desconocimiento para reforzar nuestras pruebas.

Es aquí donde entran a tallar los fakes, stubs y mocks. O también llamados Test Doubles y que en resumen permiten que nuestras automatizaciones no dependan de otras implementaciones (ocurre regularmente cuando se tiene mucho trabajo en paralelo) o que incluso no se comprometa el uso de componentes que bajo diseños ya existentes, solo tienen versión productiva (por ejemplo, componentes de core empresarial que no tienen reflejo en ambientes de desarrollo)

Les comparto un post que me pareció muy interesante, espero les sea de mucha utilidad

Yo por mi lado, seguiré pensando en el Club de la Programación.

¿Por qué nos rendimos?

Confieso no haber investigado a fondo el asunto y creo además que debería tener más conversaciones al respecto. Pero mientras tanto, comparto la reflexión de que hay situaciones en las que sin darnos cuenta, nos convertimos en nuestro peor enemigo, y que a veces –aunque nos cueste– solo queda pedir ayuda.

En mi caso, y esta también es una confesión, admito haber padecido de más de una de las causas aquí mostradas (por favor, si saben del autor, me avisan para darle los créditos correspondientes) y que las que me han generado mayor inconveniente –y quizá vuelvan a hacerlo, pues soy para nada perfecto– son:

1. Asumir que mis problemas son únicos o que soy el único que los tiene.

2. Quedarme atrapado en el pasado.

Como es natural, creo seguir aprendiendo al respecto y quizá por eso hago esta publicación, no sin esperar nada más que una reflexión de su parte, nada mejor que seguir conociéndonos y estar preparados para ese –para muchos– temido momento.

Les deseo lo mejor,
JD