Av : pontus.bergoo | 2013-08-21 07:38

Det börjar som en intuition nere från magtrakten, någonting som gnager och inte känns bra. De visste inte hur rätt de hade, Martin Fowler och Kent Beck, som myntade uttrycket code smell, eller så var det just precis det de visste.

Nåväl, jag har identifierat något ställe i koden som gnager och luktar och börjar refaktorera. Ibland är refaktoreringen enkel och snabb att åtgärda, ibland finns det så många nästlade beroenden så att jag inte på något enkelt sätt kan refaktorera. Det finns en refaktoreringsmetod som heter Mikado som jag har börjat använda som är ett strukturerat sätt att nysta upp och refakorera kod med snåriga beroenden. Om min uppdragsgivare låter mig hållas och fortsätta att följa min intuition så börjar det hända saker. För mig är refaktoreringen ett sätt att lära känna mjukvaran och göra den till min. Och till slut så börjar mjukvaran tala. Det är en djupt kreativ process som är väldigt tillfredsställande och personlig.

I ett tidigare liv studerade jag filmvetenskap och skrev en uppsats om filmen Metropolis och då hände samma sak. Det kan också hända när jag studerar in ett musikstycke med min kör, Boo Cantabile. Noterna på pappret börjar tala eller snarare sjunga. När jag lägger pussel händer samma sak. I början är allt kaos. Efter hand så kan man börja se mönster och sortera bitarna efter något system. Sedan ser man underavdelningar och vid en viss punkt börjar pusslet tala och lägger sig i stort sätt själv. Programmering är ett hantverk mer än något annat.

Tyvärr finns det bland uppdragsgivare, projektledare och produktägare sällan förståelse för den här kreativa processen. Det är sådant fokus på att prestera funktionalitet till nästa sprint eller deadline på ett kortsiktigt sätt. Då är det väldigt svårt att undvika att bygga upp teknisk skuld. Jakten på säljbar funktionalitet är mjukvaruutvecklingens svar på kvartalskapitalism. Jag har varit och är en stark förespråkare för agil utveckling men ser också risken för kortsiktighet. Hur kan det komma sig och hur kan man bemöta det då?

Ibland är ett utvecklingsteam hårt pressat av deadlines och kan inte samla kraft för att göra några djupdykningar i koden, utan tvingas att fortsätta att bygga upp en teknisk skuld. Jag vet vad som borde göras – det skulle gagna uppdragsgivaren på lite längre sikt – men jag kan inte göra något åt det. Det är som när man är stressad och tvingas att bröstandas istället för att andas med magen – en andning som är bättre förutom i extrema nödsituationer.

Ofta kommer pressen från utvecklarna själva så som Henrik Kniberg så träffande uttrycker. Vi är ett otåligt släkte och ofta är pressen ett hjärnspöke. Men ibland beror oförståelsen helt enkelt på bristande kompetens hos de som bestämmer. De vet inte vad som skiljer bra från dålig mjukvara och har inte klart för sig vad teknisk skuld innebär. Det krävs skickliga programmerare till det som dessutom kan sprida sina insikter till hela teamet. En bra ledare har antingen denna kunskap eller har tillräcklig tillit till utvecklarna i teamet och låter dem hållas. Vid de tillfällen som jag har sett riktigt bra mjukvara skapas, eller har skapat den själv, så har det tyvärr ofta skett tack vare att någon genial programmerare “flyger under radarn” och programmerar i smyg utan ledningens vetskap. Varför är det så? Det är något som i bästa fall uppskattas i efterhand men sällan belönas medan det sker.

Och det här är en av de verkligt stora riskerna med agil utveckling. Det är lätt att suboptimera. Eller är det så att det är något som drabbar omogna organisationer? Agil utveckling är ju ett i många stycken kraftfullt verktyg som kanske alltför många anammar okritiskt, vilket gör att de kastar ut barnet med badvattnet.

Av : daniel.gasinski | 2012-10-21 12:55

JavaOne 2012 avslutades med pompa och ståt för några veckor sedan. I denna text ska jag redogöra några observationer jag gjort under konferensen.

 

Java behöver förbättras och man är öppen med det. Under konferensen har det skojjats friskt om gamla versioner av EJB och Struts, men även dagsaktuella problem med datum- och tidhanteringen.
Det talades mycket om vikten att involvera sig i Javas utvecklingsprocessen för att språket ska bli bättre. Ett sätt att engagera sig är att bidra med kodförbättringar. För att göra det enklare har man avsevärt förenklat kompileringen av Open JDK. Kompileringen som förut kunde ta veckor tar nu 10 minuter. Men det finna andra hinder som måste överbyggas för att underlätta för “code-comitters”. Java används globalt vilket innebär svårigheter för utvecklare med andra modersmål än engelska. Ska utvecklare världen över kunna bidra till förbättringar krävs det att de kan kommunicera i forum och på e-postlistor. Jag har själv ställts inför språkproblemet när koden jag arbetat med varit kommenterad på ett språka jag inte kan läsa.

 
En annan observation under konferensen var att man försöker få flera att bli intresserade för Java genom att visa på andra tillämpningsområden för språket. Vi åhörarna har under några sessioner bjudits på mer lättsmälta användningar jämfört med den, för många, systemtunga vardagen. Bland annat har det demonstrerats vad som går att göra med Java hemma, till exempel styra robotar och tända släcka lampor. Kanske är tanken att utvecklaren introducerar språket för sina barn under leksamma former. Robot-temat återkom även på den avlsutande talet där en större robot åkte runt på scen. Med programmerade sensorer skulle den åka runt och ändra kurs när den närmande sig scenkanten. Tyvärr misslyckades det och den fångades innan den slog i marken. Kan det ses som en metaform för de tidigare nämnda förbättringar som Java behöver?

 
Konkurrensen från andra språk och tekniker gjorde sig påmind under konferensen. Ett exempel är “hotet” från HTML5 . Javas pappa, James Gosling, demonstrerade ett skrivbordsprogram för övervakning av båtar och poängterade att detta aldrig skulle gå att göra i HTML5. Men det påpekades från flera talare att utvecklare inte behöver stå inför valet mellan Java och HTML5. JavaFX (efterträdare till Swing) erbjuder webbvy-komponent i vilken det går att köra HTML5. På så vis går det att använda delar av en kodbas i både webb och skrivbordsprogram. Konferensens namn till trots gavs andra JVM-baserade språk utrymme, till exempel Clojure, Groovy och Scala. Under en session om framtidens Java sades följande “i Java 8 kommer du kunna göra det du gör idag på ett sätt som är enklare och har färre rader kod. Men ännu bättre blir det med dagens Scala”. Generellt var attityden till Scala uteslutande positiv.

 
Överlag tycker jag att konferensen hållit en mycket hög nivå på innehållet, mycket tack vare duktiga talare. I februari är det dags JFokus, en konferens som tidigare bjudit på internationellt erkända talare. I jämförelse står sig JFokus bra och jag ser fram emot fler lärorika dagar.

 

Javas pappa James Gosling och Jag

 

 

Av : daniel.gasinski | 2012-10-03 18:55

Just nu pågår JavaOne, världens största Java-konferens. San Francisco badar i sol och taxibilar med reklam för konferensen visar vilken Twitter-hashtag som gäller. Konferensens sessioner är utspridda på olika håll i staden men nås enkelt till fots. Sessioner går att lägga till i ett eget schema och ger då en garanterad plats i sessionssalen. Varje insläpp kontrolleras genom skanning av det personliga besökskortet och allt fungerar smidigt så länge tekniken inte strular. Strular gör även det trådlösa nätverket. Det är ofta är oåtkomligt vilket drabbar talarna och deltagarna som kan inte nå sessionsschemat i mobilen. Istället erbjuds man skriva ut det på papper, något som känns lustigt med tanke på typen av konferens.

 

Själva innehållet på konferensen håller ofta en hög nivå och många gånger behandlas det allra senaste; den ena tekniken ska släppas i veckan, den andra nästa år (t.ex. JavaEE 7). Många av talarna är själva dom som är med och utvecklar den teknik som presenteras, vilket är häftigt. Flera av talarna har bett besökarna att komma med återkoppling och påverka det som ska släppas. Det måste vara ett tecken att även besökarna är kunniga människor. Bland annat har självaste Scala-pappa Martin Odersky suttit i publiken, samt flera duktiga kunder jag jobbat tillsammans med hemma i Stockholm. Detta sammantaget får konferensen att kännas som en smältdegel.

Värt att nämna är de sessioner som har bjudit på det där lilla extra. Allt filmas och följande är verkligen värda att se online

  • John Brook m.fl. om EASEL-projektet som gör det möjligt att sätta ut brytpunkter direkt i IDEn istället för att gå omväg via exempelvis Firebug.
  • Venkat Subramaniams humoristiska tips och tricks i Scala för den som inte blivit övertygad att lära sig språket.
  • Kevin Nilsons tips om hur html5 kan testas automatiskt i alla webbläsare, inklusive respektive webbläsares olika versioner.

Av : Karl Dickson | 2011-05-09 07:47

Vi på Mejsla har haft en härlig helg med mycket hackande (och lite mejslande) kombinerat med sol, god mat och trevligt umgänge. Vi har under ledning av Lars Westergren åter använt det mycket uppskattade unconference-formatet och tillsammans har vi hunnit gå igenom ett ganska stort antal verktyg, tekniker och ramverk:

  • ShowOff: Som Powerpoint fast i Markdown-format med möjligheter att t.ex. bädda in Javascript. Perfekt för utvecklare, i synnerhet om man vill göra presentationer om programmering eftersom det finns bra stöd för syntax highlighted code.
  • Cucumber och RSpec: Spännande och bra verktyg för BDD (Behaviour-Driven Development). Utmärkt för att kunna skriva ”läsbara tester” på hög nivå som för t.ex. webbtjänster.
  • Node.js: ”Coolt!” Ett ramverk för att skriva servrar och serverapplikationer i Javascript. Fantastiskt smidigt sätt att få upp en server. Och extra bra vid integrationer.
  • Java SE 7: Vi tittade på Project Coin och den nya filhanteringen i NIO.2. I Coin ingår bl.a. funktioner som förbättrad och förenklad felhantering, ett visst stöd för härledning av typer samt automatisk resurshantering (äntligen – jag som har saknat destruktorerna i C++ sedan jag gick över till Java i slutet av 90-talet).
  • Android: ”Här finns allt som saknades i Java ME!”. Och det är enkelt att komma igång tack vare riktigt bra dokumentation och lysande exempel. Schysst med bra stöd för test.
  • Java bytecode: På samma sätt som det är viktigt att förstå ram-minnesmodellen för att vara expert på C/C++ är det viktigt att förstå JVM:en och Java bytecode för att vara expert på de språk som finns för Javaplattformen. Vi dekompilerade kod och undersökte resultatet.
  • Scala: En snabb genomgång för dem som ännu inte hunnit titta på Scala. Det bästa från funktionella språk och skriptspråk utan att ge avkall på statisk typning eller objektorientering. Tyvärr med en komplexitet som i vissa avseenden påminner om den i C++.
  • Groovy: Ytterligare ett språk för Javaplattformen. Ett skriptspråk med dynamisk typning men för övrigt mycket likt Java, så det är lätt att komma igång med för Javautvecklare. Och med finesser som t.ex. closures och inbyggt stöd för reguljära uttryck som gör att det blir mer kraftfullt och enklare att använda.
  • Go: Ett experimentellt språk som Google utvecklar och använder för att t.ex. ersätta C/C++. Go kombinerar typsäkerhet och hög exekveringshastighet på flerkärniga processorer med högnivåfunktioner som automatisk skräpsamling.
  • Fossil: Ett distribuerat versionshanteringssystem med inbyggd webbserver, wiki och ärendehanteringssystem.

Självklart hinner man inte komma in på djupet i allt detta under en helg, men det är en stor fördel att i grupper hjälpas åt med att komma över de initiala trösklarna som finns för nästan alla tekniker och verktyg.

Tack för en mycket trevlig helg, alla som var med!

Av : Marie Arnell | 2010-10-19 20:35

Lördagen den 16 oktober stod Mejsla värd för ännu en intressant unconference day där den drivande personen bakom detta var vår egen Lars Westergren som även var moderator för dagen. Listan med föreslagna ämnen var lång och ett par av de ämnen som blev valda att diskuteras under dagen var Lift, Guava och Mirah.

Då listan fortfarande har en massa intressanta ämnen kvar,  hoppas jag att det inte kommer att dröja länge innan nästa unconference day går av stapeln.

Mer detaljer och Lars Westergrens reflektioner hittar du på Lars blogg.

Sida 1 av 312...Sista »