torsdag, januari 15, 2009
Scrum i Praktiken
---------------------------------------------------
Scrum sägs vara en enkel metod för att hantera komplexa projekt. Det stämmer väldigt bra. Grunderna i Scrum är enkla att beskriva och enkla att förstå. Svårigheten är kanske att veta hur man ska använda den i ett verkligt projekt. Hur använder man Scrum i en organisation som annars kanske jobbar enligt vattenfallsmetoden? Hur anpassar man sig till en organisation som har en fungerande releasehantering enligt t.ex. ITIL?
En del i enkelheten i Scrum är att det bara finns tre olika roller: Scrum master, produktägare och utvecklare.
• Scrum mastern ansvarar för att processen följs och agerar mentor eller coach till teamet och produktägaren.
• Produktägaren är den person som prioriterar kraven efter affärsvärde och styr vad som ska utvecklas i produkten eller systemet.
• Utvecklare är medlemmarna i teamet som ansvarar för att leverera. Det spelar ingen roll om din expertis är inom programmering, arkitektur eller test, i Scrum benämns du ändå som utvecklare.
Sprintar
All utveckling inom Scrum sker inkrementellt i iterationer som kallas för sprintar. Längden på en sprint är individuell men mellan 14 och 30 dagar. I början av projektet kan man experimentera med olika sprintlängder. Det är dock viktigt att sedan bestämma sig och hålla sig till samma sprintlängd. Anledning till att jag tycker att man ska hålla en given sprintlängd är för att man vill ge teamet en känsla över hur långt man ska ha kommit efter en viss tid in i sprinten. Det underlättar också när man estimerar då man enklare kan använda sig av teamets hastighet.
Den första dagen i en sprint spenderar teamet tillsammans med produktägare och Scrum master för att komma fram till vad teamet ska leverera när sprinten är slut. Dagen är uppdelad på två möten, ett där teamet och produktägaren förhandlar om innehållet och ett där teamet tidsuppskattar och bryter ned kraven till uppgifter. Efter dag ett lämnar Scrum över kontrollen till teamet och kräver bara att en gång per dag få status om hur projektet går. Detta sker genom ett dagligt möte som varar max 15 minuter där teamet lämnar status till varandra om hur arbetet fortskrider.
Nu ska teamet börja jobba. Klockan tickar… Bara 29 dagar kvar till en potentiellt levererbar produkt ska vara klar. Vad ska vi göra nu? Hur ska vi kunna leverera den kvalitet som förväntas? Hur ska vi kunna testa den här funktionen som har beroende mot andra externa system som vi inte har tillgång till? Frågorna hopar sig och som sagt… tick tack, tick tack...
Fokus och ostördhet
I det här läget är det många som tar hjälp av eXtreme Programming för att t.ex. få till automatiserade byggen, enhetstester och kontinuerlig integrering. Scrum säger väldigt lite om vad som händer i sprinten, utan betonar att teamet ska lämnas ostört och få möjlighet att fokusera på leveransen. Scrum och XP fungerar väldigt bra tillsammans även om XP i sig är en helt komplett metod. Det som skiljer XP från många andra agila metoder är att den ger väldigt många rekomendationer till vad teamet kan göra under en iternation.
Utbildningar
På marknaden idag finns det en del utbildningar som riktar sig mot Scrum masters men få som riktar sig mot utvecklare i ett Scrum-projekt. Då menar jag inte själva utvecklingen i C#, VB.NET eller Java, utan snarare vad man kan göra för att förbättra kvaliteten och öka produktiviteten i leveranserna. För just produktivitet betonas väldigt tydligt i Scrum.
Ett exemple på en sådan utbildning är Scrum i Praktiken på Addskills. Den kursen riktar in sig mot just teammedlemmar i ett Scrum-projekt. Första dagen handlar om Scrum och om estimering och andra dagen handlar om practises från XP.
Själv gick jag min Scrum Master-utbildning på Citerus i Uppsala med Tobias Fors och Mikael Lundgren och det var en helt fantastisk kurs som jag varmt kan rekomendera.
Någon som har gått eller sett någon annan utbildning i Scrum som inte är någon av de officiella Certified Scrum *-utbildningar?
onsdag, januari 14, 2009
Ny blog!
Den nya bloggen heter Surface Developer. Vad den kommer att handla om känns överflödigt att berätta!
Jag har valt att skriva Surface Developer på engelska av den anledningen att det känns som att det här kan finnas en internationell skara läsare.
Mina första inlägg har handlat om problemen att få Surface SDK´n att fungera på Windows 7 men nu är det klart!
måndag, januari 12, 2009
Dags för Windows 7
Sedan var det dags för installation av Office Ultimate och då dök det hittills enda problemet upp. Sedan länge har jag haft Daemon Tools som favoritprogram för simulering av cd-drive men den installationen fungerade inte. Datorn hamnade bara i en oändlig omstarts-loop…
Efter en stunds letande hittade jag en rekommendation att använda PowerISO tillsammans med Windows 7 och det visade sig fungera alldeles utmärkt. Än så länge har jag inte sett några begränsningar i den gratisversion som jag laddade ner.
Installationen av Office funkade perfekt. Jobbets version av F-secure, anslutning till domänen på och konfigurering av Outlook fungerade också smidigt.
Beta 1 av Windows 7 finns publikt tillgänglig för nerladdning samt genom ett msdn-abonnemang. Den helt publika länken kommer att finnas tillgänglig tills de kommer upp till 2,5 miljoner nerladdningar och installationen slutar fungera efter den 1 augusti 2009. Men innan dess har ju i alla fall beta 2 kommit så då får man ta resan en gång till.
Hittils så är känslan av Windows 7 bara positiv. Den känns mycket smidigare och snabbare än Vista. Har faktiskt otroligt liten koll på vad som är nytt men det lär visa sig...
torsdag, januari 08, 2009
Tillbaka!
Har medvetet varit så frånkopplad som möjligt under ledigheten och fick börja dagen med att skriva upp en lista med allt som måste göras. Enklaste sättet att ta reda på det är att gå igenom senaste månadens mail och lägga. Tyvärr funkar jag så att det som inte finns i ett mail, det finns inte. Så drygt 800 mail senare känner jag mig lite mera uppdaterad. (nej, jag har inte läst alla idag…)
På listan hamnade saker som att planera lite utbildningar, teamkonferens, skriva till blogginlägg, avsluta personer som tyvärr valt att sluta på Connecta och planera för såna som börjar nästa vecka.
Det verkar dock som att andra har jobbat medan jag varit ledig för det har hänt saker sista veckorna!
Windows Azure
I ett av mina många mail fanns inbjudningskoderna till Windows Azure Services så nu ska det bli kul att testa det på riktigt också. Passande nog har min artikel om Windows Azure, som jag skrivit för Addskills, också publicerats. Den finns med i årets kurskatalog. Där finns också min kollega Hans Sterby med som har skrivit en artikel om F#.
Månadens profil på MSDN
I höstas blev jag intervjuad av Johan Lindfors på Microsoft vilket resulterade i att jag blev månadens profil i december. Grymt kul!
TechDays
Den 17 och 18 mars kommer Microsofts konferens TechDays att hållas i Västerås och under julledigheten har siten fått ett uppdaterat innehåll. Nu finns en hel del av sessionerna och talarna med. Från Connecta får ni hålla utkik efter fyra talare på tre sessioner:
• Varför F# och vad är funktionell programmering? – Hans Sterby
• SharePoint Workflows, experiences from the field – Daniel Karlsson (med Mattias Lindberg från Microsoft)
• Runda gränssnitt i en fyrkantig värld - Hur man kan kombinera styrkan i WPF för rika gränssnitt med Office 2007 – Pelle Johansson & Björn Eriksen
Missa inte chansen att delta i vad jag tror kommer att bli en riktigt bra konferens på (nästan) hemmaplan.
Projectplace
Från januari kommer jag att börja skriva inlägg på Projcetplace blogg. Projectplace har funnits sedan 1998 och erbjuder ett webbaserat projektverktyg. Det är den webbplats jag brukar referera till när man säger att Software As A Service är något nytt. Där kommer jag att skriva om allt möjligt som har med agile och Scrum att göra.
Microsoft Surface!
Nu är det äntligen klart. Vi kommer att beställa ett Surface-bord till Connecta! Mycket mer om detta senare!
lördag, november 29, 2008
Rendering i WPF
När det gäller rendering av grafik i WPF pratar man om att den sker i olika lager, eller tiers. Ett tier definieras av vilka möjligheter och vilken prestanda grafikhårdvaran har på den dator som kör applikationen och desto högre tier man kör på desto bättre prestanda får man. WPF har tre olika Tiers.
Tier 0: På tier 0 har man ingen hårdvaruacceleration utan all rendering utförs av mjukvaran och exekveras på datorns CPU. Man hamnar på tier 0 om man har en DirectX-version lägre än 7.0.
Tier 1: På tier 1 har man delvis tillgång till hårdvaruacceleration. Minnet på grafikkortet måste vara +30MB och versionen av DirectX är större än 7.0 och mindre än 9.0.
Tier 2: Här har man hårdvaruacceleration på alla element som har stöd för hårdvarurendering. T ex så dök det upp stöd för hårdvarurendering av bitmap effects som Blur och DropShadow. För att komma upp i tier 2 måste man ha DirectX-version som är högre än 9.0, minst 120MB grafikminne samt lite andra grejer.
DirectX
Den senaste version av DirectX för XP är nio och Microsoft har sagt att de bara kommer att släppa DirectX 10 för Vista (och senare). Det finns en version av DirectX 10 för XP men den är inte från Microsoft. Vilken version som körs av DirectX får man enklast fram genom att köra dxdiag från en commandopromt.
RenderCapability
För att ta reda på vilket tier man exekverar på kan man använda sig av RenderCapability.Tier. Den returnerar en Int32 som man får göra en right-shift-operation på för att få reda på vilket tier den motsvarar.
RenderCapability.Tier returnerar följande för respektive lager:
Tier 0: 0
Tier 1: 65536
Tier 2: 131072
och koden för att göra en right-shift är:
var tier = (RenderCapability.Tier >> 16).ToString();
Microsoft har en bra beskrivning av vad som skiljer de olika lagren på http://msdn.microsoft.com/en-us/library/ms742196.aspx
fredag, november 21, 2008
Parallellisering
Det är inte direkt någon nyhet att processorutvecklingen den senaste tiden går mot fler kärnor istället för snabbare processer. Intels snabbaste processor för desktop ligger idag på 3,2GHz och har fyra kärnor. Tidigare har man kunnat förlita sig på ”the quake optimization rule” men det kommer inte att funka längre. För att skriva applikationer som drar nytta av processorerna måste vi som utvecklare ge oss in i parallellisering. Det kommer också att komma stöd för parallellisering i ramverket genom Parallel Extensions. På PDC tidigare i år var det inte mindre än nio sessioner om parallel programming.
Teamet på Microsoft som jobbar med frågorna har en blog och en site med gott om information.
Om det är någon som undrar vad ”the quake optimization rule” är så är det ett utryck jag hörde Ted Neward säga på .NET Rocks. Tänk dig att någon säger till dig att din applikation går för sakta. Du tar en vecka på dig och kollar igenom koden och sedan säger du att du behöver ca 18 månader på dig för att dubbla prestanda. Du får godkänt på projektet och kan sedan gå hem och spela Quake i 18 månader och vänta på nästa generations processor.
Det här baserar på Mores lag men det kommer inte att fungera längre om vi inte har applikationer som drar nytta av alla dessa kärnor.
tisdag, november 11, 2008
Nyheter i Visual Studio 2010
Idag efter Keynote på TechEd blev jag lite nyfiken på att labba lite med Visual Studio 2010. Jason Zander visa på lite nyheter som jag tänkte kolla in. Så ikväll när jag kom till hotellrummet laddade jag in den CTP av Visual Studio 2010 som finns att ladda ner och här är lite grejer som jag hittade:
- När man ska skapa ett nytt projekt i VS2008 så ligger alla templates för Visual Basic på den lite undanskymda platsen Other Languages. Nu har den flyttats upp och ligger bredvid C#. En liten förändring men ack så viktigt för att VB-utvecklarna ska känna sig lika viktiga.
- Implicit Line Continuation. Jason visade lite vb-kod idag och visade då hur man kunde plocka bort Line Continuation-tecknet. När man läser på så visar det sig att man inte längre behöver använda sig av det för många, vanligen förekommande, fraser. Dvs det går inte alltid att ta bort det. Ett exempel när man inte längre behöver det är i LINQ. Så när man tidigare fick skriva:
Dim procs = From p In Process.GetProcesses() _
Where p.ProcessName.StartsWith("s") _
Select p
kan man nu helt enkelt ta bort de tecknet på varje rad.
Dim procs = From p In Process.GetProcesses()
Where p.ProcessName.StartsWith("s")
Select p - VB får nu också en del som kom i C# 3.0 som Auto Implemented Properties och Collection Initializers.
- Den stora nyheten i C# är ju så klart möjligheten att hantera dynamiska typer men mer om det en annan gång.
- En nyhet i Visual Studio är att man kan generera klasser, metoder och properties direkt från kod. Det innebär att man först kan skapa ett unit test och där skapa en instans av ett objekt som inte finns (ännu). Sedan använda sig av den smart tag som dyker upp och väljer att generera den klassen. Man får då upp en dialogruta där man får välja i vilket projekt den ska skapas och vilken synlighet den ska ha. En bug här är dock att om man har sitt testprojekt och sin klass som testas i olika namespace så kommer det genererade klassen att hamna i fel namespace. För er som använder er av ReSharper så är det här så klart ingen nyhet ;-)
- En annan nyhet i Visual Studio är de verktyg som finns för att lätta få en överblick över ett projekt. T ex finns det en funktion som kallas Architecture Explorer. Med hjälp av den får man en överblick över hela sitt projekt med alla referenser och kan använda det diagrammet för att navigera i sin lösning. Bilden nedan visar ett AssemblyDiagram. De olika pilarna visar på var det finns beroenden och bredare pilar betyder ett större beroende.

Jag tror att den här typen av diagram kommer att bli väldigt bra verktyg framöver just för att få en bättre överblick över ett projekt. Jag skulle kunna tänka mig att ladda in ett existerande projekt bara för att få ut ett sådant diagram för att t ex använda i en dokumentation.
måndag, november 10, 2008
Certified at TechEd
Jag har förberett mig ganska länge, läst, sett den en-timmes "cram session" som finns tillgänglig online och labbat och googlat en hel del. Jag tycker att det brukar funka rätt bra om man kollar på Skills Measured och sedan läser på och labbar om de olika delarna. När jag gick igenom alla frågor så trodde jag att jag skulle hamna runt 800 poäng men jag lyckades skriva 982! Tror bara jag hade en fråga fel.
Done that, been there, got the t-shirt... Den här gången var det en t-shirt med texten Certified at TechEd Developers Barcelona.
Så nu är det dags för lunch och sedan är det Keynote med Jason Zander.
Ja just det... nu ska parentesen bort. Hasse är på väg hit så från imorgon är vi full styrka på plats.
söndag, november 09, 2008
Stuck in SharePoint-land!
Det var en del nya labbar, bla annat en om hur man skapar Silverlight 2.0 Webparts i SharePoint som var riktigt bra. Det var en del fel i materialet som vanligt och hela labben gick inte att slutföra. Jag fattar inte vad de som korrekturläser och kollar labbarna håller på med.
Som alltid är allt väldigt välordnat och infrastrukturen fungerar felfritt.
Som jag skrev i ett tidigare inlägg så verkar TechEd EMEA lite nerprioriterat i år och det märks också en del konstnadsbesparingar. T ex så får vi som jobbar här fått en tom väska. Det brukar annars vara fyllt med goodies och det ryktas om att lunchen vid två av dagarna bara är en lite lunch-påse istället för den buffé som normalt dukas upp.
lördag, november 08, 2008
På väg till TechEd!
Det känns som att årets TechEd har kommit lite i skuggan av PDC och att alla announcements redan är gjorda så det ska bli spännande att se vad de har att komma med på Keynote på måndag.
Årets uppställning från Connecta består av undertecknad, Magnus Hjelmqvist och Daniel Joelsson. Magnus kommer att fokusera på Microsoft Dynamics och allt som har med IT-driven affärsutveckling medan Daniel kommer att fokusera på sessionerna om arkitektur, Entity Framework, Visual Studio 2010, LINQ och C#. Själv kommer jag att försöka se lite av Best of PDC, en hel del om WPF och säkerligen några arkitekturdragningar. Har också hört rykten om att Mikael Deurell ska sjunga på scen under Tess Ferrandez dragning och det får man ju inte missa.
Tyvärr kunde min kollega Hans Sterby inte följa med i år. Han var uttagen till att jobba i labbarean men tack vare det helt rätta beslutet att prioritera familjen så blir han kvar hemma.
I år kommer ni att känna igen oss från Connecta genom våra fina tröjor (om jag nu får de andra att använda dem). Hasses fick bli i parentes eftersom att han inte är med...

Veckan kommer att bli ganska fullpackad. Det börjar med labb-genomgång imorgon kl 09.00 då jag också får tilldelat vilka pass jag får samt vilka labbar jag kommer att jobba med. Förra året var det SharePoint som gällde men i år hoppas jag på WPF eller ADO.NET. På tisdag kväll är det Architect Chillout Session med Mikael Deurell och på onsdag är det Country Drinks.
På torsdag kommer min sambo ner och spenderar helgen tillsammans med mig för att sedan åka hem på söndag. Jag stannar dock kvar och deltar i Visual Studio Team System Partner Summit från söndag till tisdag. Det kommer att bli en liten konferens för de partners till Microsoft som är med i Team System Inner Circle och kommer att ha talare som Sam Guckenheimer, Brian Harry och Ivar Jacobson.
Det kommer att bli tio otroligt spännande och inspirerande dagar men oj oj vad jag kommer att sakna mina barn!