<?xml version="1.0" encoding="UTF-8"?>
<posts type="array">
  <post>
    <body>Den naturlige evolution har ramt rails. Keynote spekker David Heinemeier Hansson reflekterer over sine bedrifter og tanker gennem de sidste fem &#229;r med rails. Overvejelser omkring &#8220;mature software&#8221; 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&#229;dan en succes f&#248;lger en str&#248;m af modstridende interesser som vil fors&#248;ge at tr&#230;kke rails i forskellige retninger og DHH m&#229; 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&#230;rmeste fremtid.  
 
Keynote&#8217;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&#229;rlig ting, vi skal v&#230;re stolte af den legacy kode vi frembringer idet det ethvert stykke kode repr&#230;sentere vores stade p&#229; 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&#248;sningen i et anden lys. Det handler om egen udvikling af smag, viden og personlige pr&#230;ferencer. 

Indr&#248;mmet, jeg er ikke ubetinget stolt af de applikationer var med at fremstille omkring &#229;rtusindskiftet. Tiden kr&#230;vede store applikationsarkitekturer med mange lag. Det kunne jo v&#230;re at man ville udskifte hele business modellen, hvilket naturligvis aldrig er sket. Et par &#229;r senere blev design pattern det helt store og applikationerne var nu b&#229;de fyldt med logiske lag og vertikale design patterns. Mit st&#248;rste problem var dog med at begrunde hvorfor jeg som alle andre var med at &#248;del&#230;gge en masse applikationer med overengineered arkitektur. 

&quot;Se post om Overengineered-Software&quot;:/posts/118-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 &#229;r efter var de b&#229;de komiske, misvisende og samlet i wastebin klasser med underlig navngivning. Nu da man er blevet s&#229; meget klogere og ens subjektive vurdering er baseret p&#229; flere &#229;rs kodebase ser man ens arbejde i en anden kontekst. Kun rookie programm&#248;re h&#230;vder at de skriver perfekt kode og David havde ondt af dem som tror at rails l&#248;ser alle deres problemer.  

David citeret Joel Spolsky: &quot;God software tager 10 &#229;r at skrive&quot;, men omformuleres til: &quot;Virkelig vellykket software tager 10 &#229;r at skrive&quot;. Hvis du &#248;nsker at g&#248;re noget lykkes, du har i sinde at have arbejdet med det i lang tid. M&#229;let for alle b&#248;r v&#230;re at arbejde med software som tage 10 &#229;r at skrive, og v&#230;re glad for det. Et andet Joel Spolsky citat: &quot;Det st&#248;rste strategisk fejltagelse enhver software virksomhed kan g&#248;re: Omskriv al koden fra bunden&quot;. 

Der findes ikke en endegyldig l&#248;sning p&#229; legacy kode. Det er bevist at rene omskrivninger af kode ikke l&#248;ser store problemer men blot giver nye problemer. En god regel er at omskrive sm&#229; dele af koden og David har i tilgift et r&#229;d som lyder: &quot;Du er n&#248;dt til at forlade den kode du arbejder med i bedre stand en du fandt den&quot;. 

Legacy er ikke s&#229; slemt mener David, det holder dig &#230;rlig om dig selv og hvordan du udvikler dig som programm&#248;r.
</body>
    <category-id type="integer">3</category-id>
    <created-at type="datetime">2008-09-08T03:08:00Z</created-at>
    <id type="integer">119</id>
    <post-id type="NilClass">119</post-id>
    <published type="boolean">false</published>
    <tag-id type="NilClass">5</tag-id>
    <title>RailsConf  Europe 2008 Keynote</title>
    <updated-at type="datetime">2008-09-08T12:33:37Z</updated-at>
  </post>
</posts>
