About
fv_2007
Agile innovative developer with deep insight into lots of platforms, technologies and protocols. Absolute “early adopter” in Web 2.0 technologies and more. Large professional network and eagerly talking about architecture, strategy, design patterns, restful ressources, object-oriented thinking and modeling languages such as PML. Special interest in programminglanguages constructs, knowledge on languages like Smalltalk, Erlang, Java, Clojure, Scala, Ruby... read more
Follow
Feedfavicon
Comments
Language

RailsConf Europe 2008 Keynote September 08, 2008 03:08 over 2 years ago

Den naturlige evolution har ramt rails. Keynote spekker David Heinemeier Hansson reflekterer over sine bedrifter og tanker gennem de sidste fem år med rails. Overvejelser omkring “mature software” og fastholdelse af kundesegment spiller en betydede rolle. Rails er nu et fuldt etableret produkt som er alment accepteret bredt over hele verden i det lettere applikationssegment. Med en sådan en succes følger en strøm af modstridende interesser som vil forsøge at trække rails i forskellige retninger og DHH må med sin karakter bibeholde kontrol over udviklingen og jeg tror at keynoten var ment til at stabilisere forventninger og krav til rails i den nærmeste fremtid.

Keynote’n handlede om menneskets naturlige udviklingsproces over paradigmet, vi vil alle blive klogere med tiden! DHH laborere over hans version af konceptet legacycode og konkludere at al kode bliver legacy lige efter den er konstrueret. Men det skal ikke betragtes som en dårlig ting, vi skal være stolte af den legacy kode vi frembringer idet det ethvert stykke kode repræsentere vores stade på tidspunktet. David mener at koden er statisk men at vi som mennesker forandre os i forhold til koden. Vi udviklere vores syn og opfattelse af opgaven og ser hurtigt derefter løsningen i et anden lys. Det handler om egen udvikling af smag, viden og personlige præferencer.

Indrømmet, jeg er ikke ubetinget stolt af de applikationer var med at fremstille omkring årtusindskiftet. Tiden krævede store applikationsarkitekturer med mange lag. Det kunne jo være at man ville udskifte hele business modellen, hvilket naturligvis aldrig er sket. Et par år senere blev design pattern det helt store og applikationerne var nu både fyldt med logiske lag og vertikale design patterns. Mit største problem var dog med at begrunde hvorfor jeg som alle andre var med at ødelægge en masse applikationer med overengineered arkitektur.

Se post om Overengineered-Software

For at illustrere sin pointe omkring legacy kode benyttede DHH muligheden for at vise nogle eksempler fra den tidlige rails kodebase. Han detekterede nogle sjove konstruktioner, de var naturligvis perfekte da de blev skrevet men nu flere år efter var de både komiske, misvisende og samlet i wastebin klasser med underlig navngivning. Nu da man er blevet så meget klogere og ens subjektive vurdering er baseret på flere års kodebase ser man ens arbejde i en anden kontekst. Kun rookie programmøre hævder at de skriver perfekt kode og David havde ondt af dem som tror at rails løser alle deres problemer.

David citeret Joel Spolsky: “God software tager 10 år at skrive”, men omformuleres til: “Virkelig vellykket software tager 10 år at skrive”. Hvis du ønsker at gøre noget lykkes, du har i sinde at have arbejdet med det i lang tid. Målet for alle bør være at arbejde med software som tage 10 år at skrive, og være glad for det. Et andet Joel Spolsky citat: “Det største strategisk fejltagelse enhver software virksomhed kan gøre: Omskriv al koden fra bunden”.

Der findes ikke en endegyldig løsning på legacy kode. Det er bevist at rene omskrivninger af kode ikke løser store problemer men blot giver nye problemer. En god regel er at omskrive små dele af koden og David har i tilgift et råd som lyder: “Du er nødt til at forlade den kode du arbejder med i bedre stand en du fandt den”.

Legacy er ikke så slemt mener David, det holder dig ærlig om dig selv og hvordan du udvikler dig som programmør.


By Frank Vilhelmsen - 3 tags: berlin railsconf conference - Add comment