lördag 27 november 2010

Att vara en (för) bra scout...

"The good boyscout rule" betyder att man ska lämna lägerplatsen lite bättre än man fann den. Applicerat till mitt område innebär det att man ska snygga till kod man träffar på lite i taget, så att det successivt blir en bättre kodbas. När jag hörde om denna regel i Robert C. Martins bok "Clean Code" lät det ju helt logiskt. Och det är det. Att hela tiden snygga till den kod man springer på gör saker bättre...

Men (ja, det låg väl ett MEN i luften) det finns problem med att tänka såhär.

Som utvecklare slåss jag hela tiden med instinkten att göra om saker. Göra saker bättre. Göra saker rätt.
Betänk följande situtation och känn om den känns bekant:

Du får i uppdrag att utveckla Feature A. Att göra den rakt upp och ner tar väl någon timme, högst. Men sisådär en kvart in i utforskandet av den befintliga koden har antalet högljudda "nämen va f-n?!" och "WTF!?" blivit så många att du tänker att du kunde gjort det här bättre, snyggare, mer rätt. Ok, du börjar refaktorera. Timme nummer tre in i din omdesign börjar det likna nåt, men det är inte riktigt klart. Bara en stund till... och en till... Till slut har du gjort om designen, men har forfarande inte gjort Feature A klar. Dessutom har du hittat ännu fler saker att göra om och ett antal saker som gör din omdesign omöjlig om inte dessa andra saker också fixas till....

Känns det igen? Här hamnar jag jämt.

Att vara en bra scout som utvecklare kräver en stor dos disciplin. Att kunna göra om lite i taget. Att inse att allt inte kan göras som du vill. Att släppa ifrån dig saker som inte är perfekta. Allt för att få jobbet gjort.

Ok, så vi behöver bli bättre på att lägga band på våra kreativa lust och våra utsvävningar. Men samtidigt är våra instinkter om vad som inte är bra säkerligen befogade. På något sätt måste de komma upp och åtgärdas. Bara inte nu. Inte på bekostnad av Feature A. Inte på bekostnad av sprinten eller projektet.

Kanske är hemligheten att lägga en kvart på att beskriva problemet man hittat i den befintliga designen. Dokumentera det, lägg det i teamets backlog och gå vidare. På det sättet kanske man får ro i den kreativa själen samtidigt som man bibehåller sprinten och projektets fart.

Jag förespråkar inte att man helt bortser från kvalitet, tvärtom. Men rikta insatserna rätt. Exempelvis släpper jag inte på rutiner som unit testing, "clean code" eller "separation of concerns" bara för att trycket är hårt. Det vore bara dumt. Men nyckeln ligger i att ta sig framåt på ett kvalitetsmedvetet sätt utan att helt köra av vägen.

Här ligger vårt paradox:
Vi måste se målet - gå mot det - men utan att tumma på våra principer.
Vi måste bibehålla våra principer - men utan att avvika från målet.

Att vara utvecklare är svårt. Men roligt!

Over and out!
Dagens kodarmusik: Tom Colontonio - Nighthawk (Original mix)

3 kommentarer:

  1. Fantastiskt, kunde inte sagt det bättre själv. Just "jag slåss hela tiden med instinkten att göra om saker. Göra saker bättre. Göra saker rätt" är något jag konstant får arbeta med.

    SvaraRadera
  2. Håller med dig MEN allt handlar inte om utveckling! Alla förändrningar måste regressionstestas vilket medför längre testfaser och, ibland, försenade leveranser...

    Har du några tankar om detta?

    /Bistro

    SvaraRadera
  3. Att ändringar alltid innebär mer testning och mer jobb är oftast ett faktum. MEN... Utvecklar man testdrivet och skriver enhetsternerna först vågar man ändra utan art riskera att förstöra nåt. Tyvärr är ju långt ifrån all existerande kod där ute under test... Jag är en varm förespråkare av TDD och jag tror att det, och andra kvalitetssäkringar som code contracts, är den enda vägen för oss utvecklare.
    Alla har vi känt smärtan av att fixa en sak och paja två andra. Alla har vi också känt smärtan av att inte våga ändra just av rädslan ATT paja...

    Så, ändringar kan oftast inte tas på nog stort allvar, men vore det inte befriande att bygga mjukvara i en miljö som sa ifrån när vi orsakade regression?

    Utvecklare - vakna upp och inse att vi är proffs. Väl betalda proffs som förväntas producera kvalitet. Jämt.

    Så tänker jag kring det.

    SvaraRadera