Micro-posts sobre #refactoring

Samman Coaching

Buscando katas para un curso, encontré esta web de la Samman Technical Coaching Society. Es un recurso muy valioso para cualquier persona que se dedique de una forma u otra a la formación técnica, ya sea dentro de equipos de empresas, en coding-dojos, etc.

Technical coaches work with software development teams to help them adopt better coding practices. The Samman method is a concrete approach that many technical coaches use. This website is designed to help people who do technical coaching and is maintained by the Samman Technical Coaching Society. This site shares materials you can use for Code Katas and Learning Hours, as well as many supporting materials. We also have official Training courses.

Samman Coaching

Tidy First? A Personal Exercise in Empirical Software Design

Kent Beck tiene la virtud de expresar de una forma concisa conceptos complejos. Y eso es lo que hace en este libro. Tidy First? no llega a las 100 páginas, pero propone todo un arsenal de técnicas y fundamentos con las que mejorar el código de un proyecto de software empezando hoy mismo.

Literalmente: en la parte I explica los Tydings: pequeños refactors que puedes aplicar nada más leer cada uno de sus breves capítulos.

La parte II se dedica a cuestiones de organización. Cómo gestionar esta limpieza de código para que no se convierta en un viaje sin retorno.

La parte III explica por qué funciona esta aproximación al diseño de software.

Hay que decir que nosotros también tenemos un libro bastante decente sobre el tema, que por cierto estamos actualizando.

Software design is an exercise in human relationships.

Tidy First? A Personal Exercise in Empirical Software Design

Some economics of refactoring

Buscando información histórica sobre la técnica Golden Master, me encontré con el blog de Johan Martinsson, que tiene esta entrada en la que compara el retorno de inversión del refactoring según cuando lo hagas.

The return of investment comes directly after the refactoring. It’s an investment opportunity we cannot miss! We’re almost certain to at least break even, and in the shortest period of time.

Some economics of refactoring

Breaking out of legacy with 3P

Me ha llamado la atención esta receta 3P de Johan Martinsson. A la hora de iniciar el trabajo en una historia de usuario o tarea:

  • Empezaremos protegiendo el comportamiento existente con los tests que sean necesarios (Protect).
  • Luego refactorizaremos para que la nueva funcionalidad se pueda introducir fácilmente (Prepare)
  • Cuando tenemos esto, desarrollamos la nueva funcionalidad con TDD (Produce):

This is where the idea of the 3Ps comes in, where we not only bring the investment closer to the benefit, but also we are the foremost beneficiaries of the tests just wrote and the refactoring we just did! This has the added benefit that any ill-conceived tests and refactoring are immediately brought to the attention of just the right person to fix the issue.

The idea is simple, for each story break down the work into:

  • Protect
  • Prepare
  • Produce

Breaking out of legacy with 3P

Understanding Legacy Code with TCR

Una sesión de live coding con Kent Beck y Kelly Sutton explicando cómo puedes usar el workflow Test Commit Or Revert para probar hipótesis sobre un código que no conoces.

Consiste en ir escribiendo pequeños tests con el comportamiento que supones o esperas. Si aciertas, el test se queda. Y, si no, el test desaparece.

Oh… we lost it. We are so sad.

Understanding Legacy Code with TCR

From 0% to Cleanly Refactored 100% tested code

En este live coding, Llewellyn Falco introduce diversas técnicas para realizar un completo refactoring, pero es que además usa Test Commit Or Revert para asegurar que cada paso que da mantiene la funcionalidad.

Estas técnicas son:

  • Test combinatorio para obtener 100% de cobertura rápidamente.
  • Code Coverage como guía.
  • Refactorings probados que no necesitan tests.

The difference between a good programmer and a great programmer is that the great programmers are extremely lazy

From 0% to Cleanly Refactored 100% tested code