Posts Tagged ‘yrkesstolthet’

Destroy, erase, improve

måndag, augusti 25th, 2008

Nu har det varit tyst här ett tag igen. Jag har ägnat sommaren åt extrajobb, studier inför tentan i C4, samt jobb på nästa version av lagen.nu, som nu börjar närma sig “färdig”-stadiet. På ferenda.lagen.nu finns en betaversion av siten, och de utåt sett viktigaste nyheterna är att formgivningen är fräshare, samt att rättsfallsreferaten nu finns med i fulltext.

Men den stora nyheten bakom kulisserna är att kodbasen till 90% är helt omskriven, och att den nu är öppen källkod under BSD-licensen. Det har tagit lång tid - betydligt längre än det tog att utveckla den ursprungliga versionen - och frågan som inställer sig är om det verkligen var en sån lysande idé? Det finns två förhållningssätt till att slänga gammal kod och skriva om den från scratch — Joel säger att det är en av sakerna you never should do, medans Fred menar att man ska plan to throw one away; you will, anyhow.

De flesta utvecklares första impuls när de sitter med en kodbas som vuxit till en ogenomtränglig röra är att slänga skiten och starta om. Det är för det mesta en dålig idé, inte minst för att det inte finns någon garanti för att man inte hamnar i samma sits tre år senare, när man är klar. Men eftersom det är mycket roligare att bygga nytt än att reparera gammalt skrivs ofta system om från scratch, trots att det skulle varit mycket billigare att steg för steg rensa i det gamla röriga systemet.

Så varför skrev jag då om koden? På grund av glädje och skam. Glädje, eftersom lagen.nu inte har någon affärsplan, några inkomster ellern några krav på företagekonomiskt rationell styrning. Det är ett hobbyprojekt som jag sysslar med för att det är kul, och det har varit mycket roligare att skriva nytt än att rota runt i den gamla koden. Skam, för att det hela tiden har varit meningen att släppa koden fri, och den gamla koden var helt enkelt för dålig för att visa för folk. En kompis har teorin att det här är anledningen till att inte mer kod är öppen — det är helt enkelt för pinsamt.

Beslutet att släppa koden fri, tillsammans med en viss andra systemet-effekt, har gjort att jag i varje steg i utvecklingen har funderat kring det bästa sättet att göra en viss sak. För att slippa skämmas måste man helt enkelt skriva så bra kod som man någonsin kan. När jag skrev det första systemet var jag ganska grön på python, och försökte mest komma på något sätt att göra samma sak. Det tar mycket mer tid att göra rätt än att göra snabbt — särskilt i början – men känslan av yrkesstolthet gör att det är värt det.

Det betyder inte att det inte finns en massa fulheter i koden. Jag är inte superstrukturerad, och inte min kod heller. När jag kommit på ett visst mönster för att göra saker överanvänder jag det gärna, fram till att jag kommer på nästa mönster. Och namngivning samt övrig kodstandard ska vi inte prata om. Men grunden är stabil. Arkitekturen är ganska enkel att förklara, även om det är många (drygt 9000) rader kod. Jag tror att en ny programmerare kan sätta sig in i det hela ganska snabbt, och att det kan vara ett ganska kul system att vara med och bygga på.