Man lever så länge man lär

Inlägg taggade ‘testdriven utveckling’

Bangalore: dag 6

Tisdag. Det skulle bli en tidig morgon eftersom teamet tillsammans manuellt skulle stresstesta applikationen en aning och då lånade kundens utvecklingsmiljö innan de själva skulle hinna komma till jobbet. För oss här i Indien är det förstås inte särskilt tidigt alls. Vi testade mellan halv elva och halv ett, ungefär. Alltså mellan sex och åtta, svensk tid. Själva testandet verkade gå rätt bra (det hände inget anmärkningsvärt), men det krävde konstant fokus på det jag hade för händerna. Jag är inte riktigt van vid det. Jag är van vid att kunna hoppa lite hit och dit mellan uppgifterna och bloggvärlden och allt annat som plötsligt poppar upp i skallen. Men det var säkert bara nyttigt för mig att tvingas fokusera.

Apropå fokusera tycker jag att det går lite bättre med det nu. Jag har lyckats hålla tankarna samlade och skriva ihop i alla fall ett utkast till designdokument. Och genomföra en teknisk session kring ett utvalt område inom applikationen vi jobbar med. Sessionen kring testdriven utveckling har blivit framflyttad till i morgon, så vem vet… jag kanske rentav lyckas förbereda något. En liten presentation.

Jag tänkte mig att jag utgår från de gamla vanliga frågorna: vem, vad, när, hur, varför, och pratar kring dem. Och sedan räknar jag kallt med att spontana diskussioner uppstår.

  • Vad är TDD och varför ska man använda den metoden?
  • Hur och var passar TDD in (eller inte) i vår verksamhet?
  • Var hittar man mer information?

Jag tror att det kommer att funka bra att prata runt de punkterna. Min misstanke är att det här är en session som kommer att dra ut på tiden för det verkar som om flera i teamet är väldigt intresserade av ämnet och de har fått några boktips sedan tidigare. Jag föreslog samma böcker som jag själv har köpt, varav jag inte ens hunnit läsa ut den första ännu. Min tanke är att läsa ut den medan jag är här och så lämna den här på kontoret, så att intresserade teammedlemmar kan låna och läsa av hjärtats lust. Jag känner inte att jag absolut behöver behålla den. Mig har den hittills inte gett så mycket nytt, även om jag fått en bra påminnelse om precis hur extremt (pun intended!) arbetssätt det är. Om man ska använda det fullt ut, vill säga. Det kräver ju, i alla fall för mig, ett förändrat tankesätt. Och det innebär en utmaning som också gör det intressant. Jag gillar utmaningar. Alltså, jag gillar utmaningar som jag får välja själv. Påtvingat är betydligt jobbigare.

Det är lustigt, det här med tid. Och med hunger. Allt verkar funka lite annorlunda här i Bangalore. Visserligen börjar vi jobba senare än vanligt, men hungern infinner sig inte alls på samma sätt. Halv två säger magen att det är lunch och så kommer vi ändå inte iväg förrän närmare två. Och så jobbar vi vidare och plötsligt är klockan halv åtta, som nu, och kanske borde vi sluta jobba. Men det känns inte som kväll. Antar att det delvis har att göra med kontorslandskapet där vi sitter. Det är luftkonditionerat och ett femtontal meter till närmaste fönster. Varav det heller inte finns särskilt många. Så jag har ingen som helst känsla av utomhuset.

Redan i morse kändes det varmt, och känslan bekräftades när vi lunchade med den lokale arkitekten på samma ställe som igår, d.v.s Pyramid en liten bit bort, bortanför konkurrentens kontor. Enligt vädersiten var det som mest +33 C idag fast de hade lovat +36 C – jag känner mig lurad! Inte.

Idag åt vi indisk mat – vi hade ju guide som kunde hjälpa oss att undvika de starkaste maträtterna. Biryani-ris med tre olika såser, två sorters ”bröd” varav den enda var riktigt intressant – som en kanelbulle fast i kompakt och väldigt smörig deg, inlagd citron (stark)… ja, ungefär så. Åt jag, alltså. Det var riktigt gott och jag kunde inte ens bestämma mig för vilken av såserna som var godast. Den röda påminde lite om taco- eller kebabsås, tyckte jag. Den gulaktiga… ja, jag vet inte alls vad den påminde om men god var den. Den vita var yoghurtbaserad, mild, och kom väl till pass när man ätit av den röda som det var lite mer sting i. Jag tror nästan att jag så smått börjar vänja mig vid de indiska smakerna och därmed också uppskatta dem. Jag gillade inte sushi första gångerna jag provade heller.

Indisk lunch på Pyramid

Både när jag käkade och nu när jag skrev om det glömde jag kycklingen – det där röda i facket nere till vänster. Det brukar ju annars vara ingrediensen ”non-veg” som är det viktigaste för mig. Jösses, jag håller kanske på att bli indisk!

Hem från jobbet promenerade vi idag också – tror nog att det fortsätter så under resten av vistelsen här för det är riktigt skönt att komma ut när man suttit instängd i kontorslandskapet hela dagen (bortsett från solskenspromenaden på lunchen). Och utanför hotellet stod vår vanliga vän, dörrmannen. Än så länge har det varit samma kille hela tiden – om inte den andre ser exakt likadan ut, är precis lika trevlig och använder samma namnbricka. Han är faktiskt ledig på måndagar, förresten. Vi frågade om det i morse på vägen ut. Den som är nyfiken lär sig.

Till middagen deklarerade jag att jag hade fått nog av indisk mat och lik förbaskat beställde jag en indisk rätt från menyn. Bad att få den inte så spicy och fick då en lammgryta med knappt någon styrka alls. Bara lite. Precis den sortens enkla och okomplicerade rätt jag ville ha. Till den drack jag ett glas indiskt rödvin, som var ganska lätt. Kanske lite för lätt för min smak egentligen, men helt okej.

Eftersom vi hamnat i engagerat samtal om jobbangelägenheter förflyttade vi oss till puben för att fortsätta det över varsin drink. Förhoppningsvis fastnade åtminstone några av de bra tankar och idéer som dök upp under samtalet så att de kan komma till användning i vårt dagliga arbete, både nu och framledes.

Det är fascinerande med samtal. Det spelar nog inte så stor roll vad de handlar om för så länge de är äkta, ärliga och uppriktiga har de en förbluffande förmåga att expandera universum och åstadkomma mirakel. Och som den käre Johan skrivit i underrubriken på sin blogg: Dialog är att tänka tillsammans.

Det är delvis därför jag starkt förespråkar parprogrammering. Jag tror på det. Och det står helt klart att jag behöver läsa på lite mer fokuserat om XP.

Jag hoppas få kollegorna här att vilja jobba, och därigenom växa, tillsammans mot ett gemensamt mål. Ett plus ett blir nämligen mer än två, så länge de inblandade parterna agerar utifrån det allmänna bästa snarare än ett egenintresse.

Jag vill att spiralen alltid ska rotera åt rätt håll, om det är möjligt.

Tankar kring att jobba testdrivet

Innan jag tagit mig samman och stigit upp i morse låg jag och tänkte på testdriven utveckling, funderade på vad jag vill, kan och ska säga om det hela till teamet på tisdagens eftermiddagssession. Insåg lite väl sent att jag behöver förbereda mig inför detta eftersom det är just en session och jag nog förväntas föreläsa lite. Ämnet är ”Approach to test driven development” och sessionen är bokad på en timme men omfattar även ett annat ämne (som jag dock tror kommer att vara snabbt avhandlat). Undrar om jag borde göra några bilder till det, kanske?

Varför jobba testdrivet? Det handlar delvis och förstås om att säkra kvalitén, både vid den ursprungliga utvecklingen och vid framtida underhåll av koden. Testerna utgör också dokumentation av funktionaliteten, genom att den berättar om hur det är tänkt att koden ska fungera. Men det är inte bara det där klassiska om kvalité på existerande kod, för delvis handlar testdrivet också om att uppmuntra bra design – för att skriva tester behöver man tänka efter före, inse vad som faktiskt är viktigt. Vilken funktion man ska ha och hur den ska kunna testas/verifieras. Och då nästan tvingas man strukturera koden på ett sätt så att den blir testbar. Och eftersom du skriver testerna först, innan någon kod är skriven, så blir du inte styrd av en existerande, möjligen dålig, design. Det blir rätt och bra från början.

Som jag ser på saken hamnar man rent generellt i en god spiral när man jobbar testdrivet. Man uppmuntrar till bra (eller i alla fall renare och därmed bättre) design, dokumenterar funktionaliteten samt säkerställer densamma.

Sedan man väl fundera på det hur det går att applicera de testdrivna tankarna på just min och vår verklighet, i vardagen. Jag tror att det är nästan omöjligt att fullt ut använda testdriven metodik eftersom vi ju inte jobbar så agilt (lättrörligt) som många av oss skulle önska. Processer, processer, processer. Och de här processerna i kombination med geografisk utspriddhet och utvecklarnas relativa oerfarenhet gör att man behöver göra och dokumentera design på en ganska detaljerad nivå. Det är ett frustrerande arbetssätt för när man gör den där designen så gör man ju nästan hela jobbet ändå – och det bara för att kunna skriva ned vad man gjort, d.v.s. vad utvecklaren ska göra. Eller förlåt, det här handlar nog när jag tänker efter mer om programmerare än utvecklare.

Men min tro här kan förstås också bottna i omotiverad pessimism och svårigheter att lita på andras förmåga. Det går förmodligen att göra mycket mer än vad jag tror och det är väl något jag får försöka ta med mig, diskutera med kollegorna och uppmuntra dem att fundera på. Att försöka få alla att jobba eller i alla fall tänka testdrivet, om än inte i absurdum – det ska ju ändå göra saken bättre. Vi måste vara pragmatiska och komma ihåg att varje litet steg är ett steg i rätt riktning.

Där jag främst ser att vi kan jobba testdrivet är väl i underhållet av applikationen. Att vi när det kommer in en felrapport först skriver en test som bekräftar att felet existerar, samt kanske även kod som testar närliggande funktionalitet – i den mån den inte redan finns. Det är ju inget ovanligt fel att man testar precis exakt det som är fel, men inte det som är rätt. Vilket emellanåt gör att felet visserligen blir rättat, men rättningen medför nya fel som nedlusar den tidigare felfria koden med fel. Typ ungefär så. Jag gillar negativ testning, och betraktande av saker ur flera aspekter. Jag kollar och dubbelkollar de flesta svar jag tvingas leverera. Och så gör jag även när jag jobbar, så klart. Jag testar från flera håll när det går.

Well, nu har jag skrivit ned lite av vad jag funderat och funderar på. Kommentera gärna – feedback är bra! Jag borde nog ha tänkt på att blogga om det här för länge sedan för då hade jag haft en större chans att få in kommentarer jag kunde ha nytta av i mitt faktiska arbete. Som det är nu tror jag det är få intresserade av ämnet som kommer att hinna läsa detta. Men man vet aldrig – om man inte lägger ut någon krok blir det svårt att få napp, som jag brukar säga. Eller inte.

Själv ska jag nu gå upp och sätta mig vid poolen, med mina slipade solglasögon och båda böckerna om testdriven utveckling. Kanske även baddräkten, förresten.

Bokbeställning: Testdriven utveckling

Igår beställde jag två böcker om testdriven utveckling:

Den här gången var det dock inte jag som betalade.

Medan jag väntar läser jag min Pragmatic Unit Testing. Den känns så där, än så länge, men jag har inte hunnit så långt. Jag skulle hellre läsa Piraterna, men den boken råkade jag ju glömma ute i förorterna förra helgen.

Etikettmoln