E il tip numero quattro tratto dal libro The Pragmatic Programmer. Continua con la seguente frase:
Fix bad design, wrong decisions, and poor code when you see them
Perchè si parla di Broken Windows? Per capirlo riporto una parte della storia introduttiva legata al tip:
In inner cities, some buildings are beatiful and clean, while others are rotting hulks. Why? Reasearcher in the field of crime and urban decay discovered a fascinating trigger mechanism, one that very quickly turns a clean, intact, inhabitated building into a smashed and abandoned derelict.
A broken window
One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment - a sense that powers that don't care about the building. People start littering. Graffiti appears. Serious structural damage begins. In a relative short space of time, the building becomes damaged beyond the owner's desire to fix it, and the sense of abandonment becomes reality.
Per il resto della storia vi consiglio, se non l'avete già fatto, di leggere l'ottimo libro.
Ma vediamo qualche caso concreto in cui ho visto situazioni di questo genere:
- Fare commit del codice con uno unit test che non passava. Dopo un pò un altro membro del team si è trovato nella stessa situazione, ma visto che ce n'era già un altro ha fatto anche lui il commit ed in poco tempo la percentuale di test che non passavano è cresciuta notevolmente.
- Un altro caso riguarda i warning di compilazione, fai un commit con un warning perchè in quel momento per pigrizia o urgenza non ti va di metterlo a posto, ad un certo punto un altro membro del team si trova nella stessa situazione e compie lo stesso misfatto. Da qui a decine di warning ignorati il passo è breve.
- Non parliamo poi del design basta che uno rompe l'incapsulamento dei layer e sembra aver aperto la strada per compiere i più efferati accoppiamenti tra classi, un groviglio da cui poi è veramente difficile uscirne.
Potrei continuare, con la Coding Convention, non segnare i bug su un sistema di traking, non scrivere il test prima del codice, ecc., ecc.
Anche a voi è capitata una situazione del genere? Come ne siete usciti? Avete imparato come team la lezione per il futuro?