2007-12-31

Summering av det gångna året

Snart är 2007 till ända och det har i många avseenden varit ett händelserikt år för min del, särskilt nu på slutet eftersom jag avvecklat många åtaganden inför den föräldraledighet som tar vid efter nyår. Många böcker som jag läst, frågor jag funderat på och aktiviteter jag deltagit i och som jag tänkt blogga om har inte hunnits med. Jag tänkte därför ägna denna bloggpost åt en liten summering av böcker, föredrag och konferenser från det gångna året. Om du händelsevis skulle vilja veta mer om något av det jag här skriver om får du gärna lämna en kommentar om vad eller skicka ett mejl (se adress till höger) så kan jag återkomma med en mer ingående text.

Böcker

Det har blivit några böcker lästa under året, många nya men också några omläsningar.

Domain-Driven Design: Tackling Complexity in the Heart of Software av Eric Evans. En i många stycken underbar bok om objektorienterad analys och design med fokus på modellering av kärndomänen och ett allestädes närvarande språk. Rekommenderas varmt.

Patterns of Enterprise Application Architecture av Martin Fowler. Fowler har samlat ett 40-tal återkommande mönster för applikationsarkitektur gällande allt från skiktning ("layering") till O/R-mapping till Model-View-Controller. Boken innehåller dessutom en mycket intressant vägledning till hur man använder olika mönster när man utvecklar en enterpriseapplikation, hur man gör avvägningar mellan olika mönster, varför vissa mönster är mer lämpade för .NET än för Java m.m.

Head First Object-Oriented Analysis and Design av Brett D. McLaughlin, Gary Pollice och Dave West. Jag gillade Head Firsts bok om designmönster och tänkte att den här skulle vara lika intressant, men de grepp jag upplevde som tydliga och pedagogiska när det gällde designmönster blev i den här boken övertydlighet och upprepningar. Kanske har det att göra med att ämnet för denna bok är mer bekant och mindre tekniskt komplicerat. Möjligtvis mer intressant för OO-nybörjare.

The Pragmatic Programmer: From Journeyman to Master av Andrew Hunt och David Thomas. Pragmatiska programmernas bok är redan en klassiker och en ovärderlig följeslagare för den som vill ta steget från gesäll ("Journeyman") till mästare. Boken är fullspäckad med fina råd och praktiker hämtade från Andys och Daves långa karriärer som mjukvaruutvecklare; designprinciper, vilka verktyg man bör använda, sätt användarna i fokus, så bygger du ett framgångsrikt team, automatisera mera, lär dig ett nytt programmerinsspråk varje år och mycket mera. Principer och filosofi blandas med handfasta och konkreta tips.

Writing Effective Use Cases av Alistair Cockburn. En bibel för många kravanalytiker och intressant läsning för alla intressenter i ett mjukvaruutvecklingsprojekt. Cockburn (uttalas co-burn) har en pragmatisk och agil syn på användningsfall som ett (av många) praktiskt arbetsdokument, snarare än som en heltäckande kravspecifikation med detaljnivå motsvarande en användarmanual.

UML Distilled: A Brief Guide to the Standard Object Modeling Language av Martin Fowler. Bra introduktion till UML och objektorienterad analys och design som jag skrivit mer om här.

Software Estimation: Demystifying the Black Art av Steve McConnell. Författaren till Code Complete avmystifierar här tidsuppskattningens svarta konst och visar att realistiska tidsuppskattningar faktiskt är möjliga. Framför allt innehåller boken bra tekniker och tillvägagångssätt för att förbättra ditt projekts och dina egna tidsuppskattningar.

Peopleware: Productive Projects and Teams av Tom DeMarco och Timothy Lister. Vad gör vissa projekt och företag mer framgångsrika än andra? Mycket talar för att det överhuvudtaget inte handlar om teknik och processer, utan om människor. Peopleware sätter människorna i fokus och visar med hårda data hur man bäst organiserar arbetsmiljöer och team för att få fram det bästa av dessa människor. En mycket viktig och bra bok!

Agile Principles, Patterns, and Practices in C# av Robert C. Martin. Bob Martin, även kallad "Uncle Bob", var en av initiativtagarna till Agile Manifesto och en förgrundsfigur inom objektorientering och testdriven utveckling (TDD). Med boken "Agile Software Development, Principles, Patterns, and Practices" (2002) förde Bob Martin fram designprinciper som Single Responsibility Principle (SRP) och Dependency Inversion Principle (DIP), TDD, desinmönster och agil utveckling, framför allt till en Java- och C++-publik. Förra året (2006) gav han ut den här nya utgåvan anpassad, tillsammans med sonen Micah Martin, för C# och .NET. Förutom nämnda principer och mönster är boken full av konkreta kodexempel. En riktigt bra bok om god design, särskilt objektorienterad sådan.

Refactoring: Improving the Design of Existing Code, Martin Fowler. Ännu en modern klassiker av Fowler med stöd från bl.a. XP-grundaren Kent Beck. Boken innehåller bl.a. en mycket omfattande katalog med olika refaktoriseringar (sätt att förbättra kodens struktur och design utan att förändra dess beteende), en genomgång av så kallade "code smells" för att identifiera dålig design och en kort introduktion till enhetstester. Boken är en guldgruva med goda designprinciper, inte minst för ett objektorienterat angreppssätt.

Software Configuration Management Patterns: Effective Teamwork, Practical Integration av Stephen P. Berczuk och Brad Appleton. En mycket bra introduktion till configuration management med många bra mönster för versionshanteringssystem, till exempel Branching, Codeline Policy, Release Line och Private Workspace.

Working Effectively with Legacy Code av Michael Feathers. Det är egentligen underligt att det inte finns fler böcker som behandlar samma ämne som detta banbrytande verk: hur man steg för steg städar upp legacy-kod (i detta sammanhang liktydigt med dålig design, snårig kod och avsaknad av enhetstester) och ger den struktur och god design. Feathers bok innehåller en stor mängd tekniker för hur man åstadkommer detta och får sin legacy-kod testbar. Under resans gång lär man sig en hel del om god design och Feathers har dessutom ett mycket inspirerande tonfall i sin bok; det han föreskriver är inte bara möjligt, det är nödvändigt. Den här boken och Andreas Brinks föredrag och workshop under Developer Summit var vad som fick mig att faktiskt börja skriva enhetstester och använda TDD i legacy-projekt.

xUnit Test Patterns: Refactoring Test Code av Gerard Meszaros. Förutom en avsevärd samling mönster för automatiserade enhetstester innehåller den här boken också en rad "test smells" (jmf Fowlers "Refactoring" ovan) och en vägledning för hur man organiserar sina tester och för olika avvägningar mellan olika mönster (jmf Fowlers "Patterns of Enterprise Application Architecture" ovan). Det är den definitiva guiden till automatiserade enhetstester och därmed en oumbärlig bok för alla utvecklare.

Pair Programming Illuminated av Laurie Williams och Robert Kessler. En heltäckande introduktion till parprogrammering som med stöd i såväl forskningsdata som anekdoter från erfarna utövare berättar om förtjänsterna och fallgroparna i parprogrammering. Boken innehåller också gott om råd för hur man inför parprogrammering i en organisation, hur man (inte) parar ihop olika individer, hur man tar itu med olika problem förknippade med parprogrammering och, sist men inte minst, hur man parprogrammerar.

Test Driven Development: By Example av Kent Beck. Introduktion till testdriven utveckling av mannen som kan sägas ha uppfunnit tekniken (och Extreme Programming). Det är roligt att se hur Kent Beck faktiskt testdriver fram utvecklingen av JUnit och samtidigt använder det han skapar för att automatisera sina tester, men jag kan tyvärr inte säga att det är någon bra introduktion till TDD för nybörjare.

Refactoring Workbook av William Wake. En bra följeslagare till Fowlers "Refactoring" (se ovan), fylld med olika exempel och övningar. Lämpar sig väl för t.ex. en studiecirkel eller för den som läst Fowlers bok men behöver mer konkreta exempel för att bättre förstå hur man jobbar på det sättet. Boken är också en bra repetition av Fowlers bok eftersom den omformulerar flera motiveringar och code smells samt inför några nya. Bra om goda designprinciper mellan raderna.

Refactoring to Patterns av Joshua Kerievsky. Den som lärt sig designmönster genom böcker eller utbildningar blir ofta "pattern happy" och vill tillämpa sin nyvunna kunskap var helst det ser ut att vara möjligt. Resultatet blir ofta en onödigt komplicerad design. Den här boken visar hur det istället bör gå till; den lär dig identifiera problem ("code smells") där designmönster kan vara en bra lösning och visar dig hur du kan refaktorisera din kod till denna lösning.

Continuous Integration: Improving Software Quality and Reducing Risk av Paul Duvall, Steve Matyas och Andrew Glover. En komplett vägledning till Continuous Integration med allt från nyttan för olika intressenter till kodexempel för hur man faktiskt sätter ihop hela processen. Gott om råd för olika kodanalysverktyg, notifieringsmekanismer (som Ambient Orb) och annat som kan användas för att öka nyttan med CI.

Agile Retrospectives: Making Good Teams Great av Esther Derby och Diana Larsen. Derby och Larsen har omsatt sin omfattande erfarenhet av retrospektiv i ett ramverk och en bok full med olika tekniker och tips för ett lyckat retrospektiv. Jag hade förmånen att deltaga i en hel dags tutorial om Agile Retrospectives med Esther Derby på JAOO; läs mer om den här.

Pragmatic Unit Testing in C# with NUnit, 2nd edition av Andrew Hunt, David Thomas och Matt Hargett. Den här boken är en god introduktion till automatiserade enhetstester i C# med att bra fokus på hur och vad man bör testa. Den ger dig allt du behöver för att komma i gång med NUnit och innehåller även en del mer avancerade koncept. Tyvärr har boken ett svagt TDD-fokus och tycks reducera frågan om huruvida testerna ska skrivas först eller sist till en smaksak. Lite överraskande med tanke på att "pragmatiska programmerarna" i andra sammanhang starkt förordar TDD.

Software Craftsmanship: The New Imperative av Pete McBreen. McBreens bok är en uppgörelse med tunga processer och synen på mjukvaruutveckling som en industri där utvecklarna är utbytbara kuggar i en process där de mekaniskt implementerar systemanalytikernas ritningar. Hans alternativ är ett system där mjukvaruutveckling erkänns som ett hantverk och där kunskap och erfarenheter traderas från mästare till gesäll till lärling. En sådan utvecklare tar ett stort ansvar för kvalitet och genomförande, men ställer också krav på vilka kunder hon väljer att arbeta med och hur arbetet kan gå till (här bekänner sig McBreen, om än inte uttryckligen, till de agila metoderna). En mycket intressant och tankeväckande bok.

Fit for Developing Software: Framework for Integrated Tests av Rick Mugridge och Ward Cunningham. Jag har länge sneglat på Fit men aldrig kommit till skott eftersom jag inte jobbat i projekt där det varit möjligt/lägligt att automatisera acceptanstesterna. Kanske är det just det sistnämnda som gjort mig allt mer övertygad om att detta är vägen man måste gå, om än inte nödvändigtvis med just Fit. Efter att ha läst den här boken och tittat lite på Fit och Fitnesse kommer jag emellertid att slåss med näbbar och klor för att få använda det i nästa projekt. Fit är ett utmärkt sätt att involvera verksamhetspersoner i test- och utvecklingsarbete och därigenom få fram ett allestädes närvarande språk ("ubiquitous language") och en domänmodell (se DDD). Rekommenderas varmt, särskilt för dig som är intresserad av agil utveckling och DDD.

Implementation Patterns av Kent Beck. Jag hade höga förväntningar på den här boken och måste tyvärr säga att jag blev en smula besviken. Vissa av bokens implementationsmönster är mycket banala, t.ex. mönstret "Class" som säger att det är bra att placera data och beteende som hör ihop i en klass. På andra ställen ges mer komplicerade mönster mycket fåordiga förklaringar som gör det svårt att följa med i Becks tankegångar. Denna ojämnhet gör det svårt att bestämma en lämplig publik för boken: riktar den sig till nybörjare eller till mer erfarna utvecklare? Ingen av dem skulle jag säga. (När jag skulle klistra in länken för denna bok från Amazon.com ser jag att en recensent fångat samma känska som jag på ett mycket bra sätt.) Bokens största värde för mig ligger i att man i vissa mönster och motiveringar ändå får en inblick i filosofin bakom vissa goda designprinciper och en inblick i hur en riktigt duktig objektorienterad utvecklare tänker.

Practices of an Agile Developer: Working in the Real World av Venkat Subramaniam och Andy Hunt. Bra samling agila praktiker och principer, kärnfullt och bra sammanfattade i en rad korta kapitel. Mer för den agile nybörjaren än för den som redan praktiserat korta iterationer, Continuous Integration, TDD, o.v.s. i några år.

Extreme Programming Explained: Embrace Change (2nd edition) av Kent Beck och Cynthia Andres. Becks moderna klassiker i ny och helt omarbetad utgåva. En bra introduktion till agil utveckling och mycket bra om de principer och värderingar som vägleder många som fastnat för agila metoder. Gott om värdefulla tips och praktiker även för den som inte vill ta till sig allt i XP.

Managing Agile Projects av Kevin J. Aguano (editor). Intressant, om än något spretig, sammanställning av olika agila metoder ur framförallt ett "icke-utvecklarperspektiv", vilket inte på något sätt betyder att det är ointressant för utvecklare. En intressant del är det XP-kritiska kapitlet i slutet av boken, som även om det i sin tur stött på stark kritik är tankeväckande då även de agila metoderna naturligtvis behöver utmanas även i "de egna leden".

Föredrag och konferenser

Jag har tidigare rapporterat från Developer Summit och JAOO. När det gäller den sistnämnda har jag bara haft tid att ta upp de första dagarna så jag tänkte i korthet nämna några höjdpunkter från resten av dagarna här.

JAOO, 23-28 september i Århus, Danmark. Jag har tidigare rapporterat från de första dagarna på JAOO, fram till och med tisdag förmiddag, så jag tänkte här i korthet nämna några av höjdpunkterna från resten av konferensen.

Tisdag eftermiddag bjöd på en av de presentationer jag mest sett fram emot, Eric Evans om "Strategic Design: Making Models Work in Large Projects". Evans presentation infriade mina förväntningar. Jag blev omedelbart mycket förtjust i hans lågmälda och eftertänksamma framtoning och sätt att presentera. Han framstår verkligen som en underfundig och djupsinnig man. Jag hade även förmånen att åtnjuta en hel dags tutorial med Evans under rubriken "Domain Driven Development" på JAOOs sista dag (dag 5, fredag). Tyvärr överlappade denna tutorial delvis föredraget, även om han gick mer på djupet i dessa frågor under heldagen. Eric Evans förtjänar förstås en egen bloggpost, men tills vidare kan jag inte annat än starkt rekommendera någon av hans presentationer eller kurser.

Under tisdagen bevittnade jag även upprinnelsen till vad som skulle bli en stor "konferens-snackis" - Jim O. Copliens påhopp på TDD: "[it] will deteriorate your design". Dagen avslutades med en intressant analys av hur LINQ kan användas för DDD, förtjänstfullt utförd av Jimmy Nilsson och Kim Harding Christensen. De viktigaste slutsatserna var att LINQ to SQL är ett steg i rätt riktning och troligtvis kommer att göra att fler får upp ögonen för DDD, men presentatörerna saknade stöd för Value Objects.

Dag 3, onsdagen, spenderade jag till stor del på Bob Martins spår "Professional Developer" som innehöll många intressanta presentationer, bl.a. den alltid lika underhållande Kevlin Henney ("With Economy and Elegance") och Michael Feathers ("The Ethics of Error-Prevention"), en av mina favoritförfattare (se ovan). Jag hann också med en intressant case study från Guardian.co.uk där ThoughtWorks Erik Dörnenburg varit involverad i ett intressant projekt som inbegrep bl.a. DDD, Spring, AJAX och AOP. Dagen avslutades med två paneldiskussioner: en med den föga utmanande frågan "Does Architecture Quality Matter?" och en avslutande paneldiskussion under ledning av Martin Fowler där Erik Meijer, Eric Evans, Erik Doernenburg ("the three Eriks") och Esther Derby fick välja var sin höjdpunkt från JAOO att samtal vid. Av någon anledning kom mycket av samtalet att kretsa kring JavaScript, kanske lite oväntat med tanke på deltagarna.

Den fjärde dagen (torsdag) ägnade jag åt en hel dags tutorial med Kevlin Henney och Frank Buschmann: "Pattern-Oriented Software Architecture". Förvisso intressant, men på en lite väl abstrakt och hög nivå för att ge mig något mer direkt användbart. Jag kommer emellertid definitivt att läsa Henneys och Buschmanns bok och de andra i POSA-serien.

Femte dagen deltog jag som sagt i en tutorial med Eric Evans om "Domain Driven Development".

Förutom själva konferensen var det en trevlig fest på måndagen och ett lopp man kunde delta i under tisdageftermiddagen med efterföljande jazzkväll där vem som ville kunde gå upp och spela. Bland annat Roy Osherove (egenkomponerat) och Bob Martin (Jonathan Coultons "Code Monkey") gjorde framträdanden.

En rolig detalj som Johan Lindfors redan bloggat om är att han, Senior Developer Evangelist för Microsoft i Sverige, fick en lite Duke (Javas maskot) rakt i huvudet när Matt Thompson, som leder Suns "technology evangelism efforts worldwide" slängde ut dessa under sin keynoye på tisdagkvällen.

Något som verkligen hörde till höjdpunkterna på JAOO var min torsdagkväll. Efter dagens tutorial på SAS Scandinavian Center stötte jag i hotellbaren ihop med Bob Martin och en trevlig spanjorska som var volontär på konferensen. Efter ett par timmars drinkintag gick vi tillsammans med ytterligare en volontär vidare till uteserveringen på en italiensk restaurang som jag rekommenderat. Precis när vi skulle beställa mat kom plötsligt Michael Feathers gående och beslutade sig för att göra oss sällskap (han arbetar, från Florida, på Bob Martins Chicago-baserade företag ObjectMentor). Efter middagen vidtog en pubrunda där så småningom även Erik Dörnenburg anslut. Jag bombarderade dem naturligtvis med frågor under hela kvällen och försökte lära mig så mycket som möjligt från dessa erfarna utvecklare. Dessutom hade vi väldigt roligt också...

"How hard can it be?" med Andy Hunt. Valtech bjöd in till ett mycket underhållande föredrag med pragmatiska programmeraren Andy Hunt. Han hade precis varit på Öredev och passade på att dra samma presentation i Stockholm. Jag fick tyvärr aldrig chansen att prata med Andy under minglet efteråt, jag hade gärna frågat honom om de stora likheterna mellan hans föredrag och Erik Dörnenburgs och Dan Norths "How Simple Is Too Simple?" - bara en slump därför att de verkar inom samma område eller har de sneglat på varandra?

"SOA & Web Services" med Ole Matzura och Niclas Reimertz, Eviware. Det här är killarna bakom Open Source-verktyget soapUI. Det var ett intressant föredrag som däremot befästa mina fördomar (?) om att Java-världen i många sammanhang har en mindre mogen syn på vad SOA innebär som mestadels handlar om antingen web services och SOAP eller middleware som t.ex. Enterprise Service Bus (ESB).

"DDD, O/RM och lite TDD" med Jimmy Nilsson, factor10, som du kan läsa mer om här.

"Dependency Injection och Aspektorienterad programmering (AOP)" med Niclas Nilsson, factor10, som jag tidigare skrivit om här.

"Scrum i praktiken" med Henrik Kniberg, Crisp, som skrivit gratisboken "Scrum and XP from the Trenches". Bra och hands-on om Scrum och XP. Rekommenderas.

"Windows Workflow Foundation" med Fredrik Gunne, f.d. Microsoft, som du kan läsa om här.

"Pragmatic SOA" med Objectware (halvdag med olika presentatörer). Peter Tallungs nya bolag verkar onekligen intressant. På denna halvdag på Berns visade de ett moget SOA-tänk och väldigt intressanta implementationer på .NET-plattformen som såg ut att hålla en kvalitet man onekligen inte är bortskämd med: fullt med enhetstester och genomtänkt domänmodell. Och detta i en mycket väl genomförd SOA-lösning. Verkligen intressant och jag ser fram emot fler seminarier från Objectware.

"TDD i praktiken" med Joakim Holm som jag tidigare berättat om här.

"Learning from Legacy" med Andreas Brink, factor 10, som på mitt initiativ besökte Avega. Innehållet var ungefär detsamma som på Developer Summit men lite mer och ännu mer diskussion.

"Spelutveckling på DICE" med Henrik Karlsson, DICE. Otroligt intressant inblick i spelprogrammeringens heta värld. Henrik Karlsson berättade ingående om nya Battlefield och visade i en utvecklarversion av spelet för X-Box hur det han pratade om i teorin gestaltades i praktiken. Hur konstigt det än kan låta är jag dock relativt ointresserad av spelutveckling på utvecklarnivå - alldeles för mycket lågnivåprogrammering för min smak - jag föredrar faktiskt utveckling av affärsapplikationer. Men jag beundrar det arbete andra lägger ned; jag kan knappt förstå att de någonsin blir klara med ett spel med tanke på hur många detaljer det är att tänka på.

"MSF 4 Agile" med Michael Herkommer, Inexor. Jag var med och arrangerade en SweNug-sammankomst på Avega där Herkommer höll en intressant och engagerad presentation av hur man kan använda MSF 4 Agile med Team Foundation Server och Visual Studio Team System.

Det är allt jag hinner med just nu. Nu ska jag gå och ta fram champagneflaskan och göra mig redo för tolvslaget. Och för ett nytt år fyllt av nya böcker, föredrag och konferenser, spännande uppdrag, roliga hobbyprojekt och en hel del bloggande. Och föräldraledighet förstås...

Gott nytt år!

6 kommentar(er):

Henrik Engström sa...

Tjena,
Kul att läsa dina reflektioner kring 2007 och vad du har läst om, lyssnat på, etc.

Eftersom jag kommer från Javavärlden så kanske det inte är så lustigt att jag reagerar på dina kommentarer kring att SOA är omoget i Javavärlden... Jag hävdar raka motsatsen dvs att de stora drakarna inom Java (IBM, BEA, Oracle, ...) har en mer mogen syn på SOA än vad Microsoft har. I alla fall baserat på den inblicken jag har fått av vad MS tycker SOA är. Men det beror kanske på okunskap från min sida. Eller så beror det på att vi står på varsin sida och sanningen ligger i mitten?

Vi ses
//Henrik

PS. Läs gärna min blogg: http://r-c-r.blogspot.com DS.

Manuel Palacio sa...

Bra boklista. Jag har redan beställt några böcker som jag inte har läst

Ses

Joakim Sundén sa...

Henrik, det har sina nackdelar att sitta och blogga innan tolvslaget på nyårsafton. Jag tycks ha fått för mig att "Java-världen" är en enda organism som kan ha synpunkter på saker och ting... Dessutom omogna sådana.

Vad jag egentligen ville förmedla var mina erfarenheter från samtal/föredrag kring SOA med personer som tycks tro att det handlar antingen om web services och SOAP (jmf "JABOWS" (Just A Bunch Of Web Services, http://blogs.msdn.com/nickmalik/archive/2007/01/16/your-soa-is-jabows-just-a-bunch-of-web-services-and-i-can-prove-it.aspx) eller om produkter som t.ex. ESB. Dessa personer har företrädesvis haft Java-bakgrund. Vid närmare eftertanke beror det kanske på att det inte ens funnits microsoftare att diskutera dessa frågor med... :-)

Jämförelsen har hur som helst blivit orättvis när jag själv tyckt att "Microsoft-världens" syn på SOA varit synonym med sådant som förmedlats av personer som Don Box, Maarten Mullender och Pat Helland. Och när jag väl diskuterat SOA med andra microsoftare har det varit andra som certifierat sig som .NET-arkitekter hos Sundblad & Sundblad, med ett starkt fokus på SOA. Mer rättvist hade väl varit att jämföra med typ Kalle Svensson från Skövde.

Så, i korthet, de stora drakarna inom Java och Den Stora Draken Microsoft har nog lika mogen syn och "vanligt fölk" inom båda lägren har förmodligen relativt omogen syn på SOA.

Din blogg ser mycket intressant ut, jag prenumererar nu och ska genast kasta mig över ditt arkiv!

Marcus Hammarberg sa...

Sanslöst att du hunnit plöja så där mycket (böcker och konfererenser) på ett år.

Jag böjer mig i ödmjuk tacksamhet för en grym boklista dock. Kanske rent av hinner med en i år.

Ha det så bra

Mads sa...

Trivelig at du likte Objectwares foredrag. For de som er interessert ligger foiler etc. her:
http://www.objectware.no/sv/Om-Objectware/Nyheter-fran-Objectware/Fullsatt-Nastan-hundra-personer-var-i-Strindbergsalen-pa-Berns-for-att-lara-sig-mer-om-Pragmatic-SOA-den-16-november/

Takk,
Mads Nissen
http://weblogs.asp.net/mnissen

Mads sa...

Oops.. link ble feil:
Objectware Seminar: SOA i Praktiken