techdays 2011 millainen on ketterä kehittäjä? tieturi/heikurinen
TRANSCRIPT
1
#td2011fi
#td2011fi
Millainen on ketterä kehittäjä?
2
#td2011fi
Tieturi
#td2011fi
3
#td2011fi
Tekninen toimintaympäristö• VBA, VB.NET ja VSTO• TFS, VS Test Manager• Specflow, Nunit, CodedUI
#td2011fi
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
4
Helsinki, Tampere, Turku, Tukholma, Göteborg | www.tieturi.fi
Liiketoiminta kehittyy, kehity sinäkin!
Millainen on ketterä kehittäjä?
29.3.2011Copyright © Tieturi
Mietintää
• Koodin laatu ei ole noussut odotetusti ketterien menetelmien myötä• Mm. Scrum Alliance on määritellyt Certified Scrum Developer
sertifikaatin
• Ketterien tiimien olemassaolo ei takaa työtapojen yhtenäisyyttä
• Määrittelyjä käytetään ja kaivataan yhä edelleen• Käyttötapaukset• UML kaaviot ja mallit• Lukemattomia erilaisia dokumenttimalleja
29.3.2011 Copyright © Tieturi 8
5
Conwayn laki (1968)
• ...organizations which design systems ... are constrained to produce designs which are copies of the
communication structures of these organizations.
29.3.2011 Copyright © Tieturi 9
Kehittäjien prototyypit
29.3.2011 Copyright © Tieturi 10
6
Hinta
4.1.2011 Copyright © Tieturi 11
€
Toiminnallisuudenmäärä
Ohjelmisto, joka ei ole ylläpidettävä
Korkealuokkainenohjelmisto- käsityötä
Ohjelmointityön ”reality check”
• Työn aloituskynnys on tehty mahdollisimman matalaksi• Mitään formaalisti määriteltyä standardia koodaajan ammatille ei
ole• Työ on usein parhaimpien valmiiden moduulien etsintää• Rimaa odotustasojen suhteen on laskettu
• Kuluttajat tottuneet puolinaisuuteen• Tarkka koodaus ei maksa itseään
• Ohjelmat vaihtuvat• suurimman osan koodista käyttöaika on lyhyt• Rakkaussuhde jää lyhyeksi
• Koodaamista tapahtuu/tarvitaan paljon tuotantoprosessin tukea varten• Testaus, UI automaatiot, protot …• Työn tarkka määrittäminen on hankalaa
29.3.2011 Copyright © Tieturi 12
7
Tuloksia ?
• Kaunista koodia, kuka kaipaa?• Mikä on ohjelmoijien sitoutuminen?• Oman työn rajojen tarkka määrittely on vanhoilla
roolimalleilla hankalaa• On paljon paikkoja, joissa tarvittaisiin hyviä koodaajia,
mutta• Kokevat työn liian triviaaliksi• Työstä vain osa on koodausta
29.3.2011 Copyright © Tieturi 13
Tarvitaan uusi määritys kehittäjän työlle
Ketterä kehittäjä
• Siirtää informaatiota• Moduulilta toiselle• Ohjelmistolta käyttäjälle• Kehittäjältä toiselle• Kehittäjältä testaajalle
• Siirto on hänelle pääasia, ei väline• Ohjelmakoodi on yksi tapa
siirtää informaatiota• On yleensä nopein ja luotettavin
kaveri siirtämään tietoa• Saa tyydytystä onnistuneesta
siirrosta
29.3.2011 Copyright © Tieturi 14
8
• Ei vakiinnuta työtä ennen kuin informaatiota on siirretty riittävästi
Työtavat
Suorituskyky
Ketterästä kehittäjästä
29.3.2011 Copyright © Tieturi 15
Konteksti
Design
Arkkitehtuuri
Laajennukset
Kierroksen tavoite
TDDHyväksyntä
kriteerit
Nopea tuotantoon
siirto
Simuloitu jäähdytys (simulatedannealing)
29.3.2011 Copyright © Tieturi 16
9
Suunnittelumenetelmien tunteminen
29.3.2011 Copyright © Tieturi 17
Architecture models
DDD
DSL
UML
OOA/OOD
Valmiiden ratkaisujen tunteminen
• Sovelluskehykset• Ratkaisumallit• Algoritmit• Kokoelmat
29.3.2011 Copyright © Tieturi 18
10
Tekninen edelläkävijä
• Päivittää tietonsa uusista• Työvälineistä• Työtavoista• Työskentelytavoista
• Pyrkii muutokseen näissä samoissa asioissa• Motivaation ylläpito
• Tietää ettei uusi tieto siirry• … pelkkiä piirrelistoja läpikäymällä• … puolustamalla totuttua
29.3.2011 Copyright © Tieturi 19
“Continuous attention to technical excellence and good design
enhances agility.”- Periaate ketterästä julistuksesta
Certified Scrum Developer
• Srcrum Alliance:“A Certified Scrum Developer is someone who has
demonstrated through a combination of formal training and a technical skills assessment that he or she has a working
understanding of Scrum principles and has learned specialized agile engineering skills”
29.3.2011 Copyright © Tieturi 20
11
Agile engineering skills (ScrumAlliance)• Test Driven Development (TDD)• Continuous Integration• Refactoring• Version-control usage skills (branching/merging)• Principles of Agile architecture• Acceptance test driven development (ATDD)• Pair Programming• Collboration in agile teams and between several teams
29.3.2011 Copyright © Tieturi 21
Ketterä kehittäjä
• Piirtää sen ensiksi
• Käyttäjät ymmärtävät sen tällä tasolla
• Ohjelmisto siirtää tietoa tällä tasolla
• UI elementit antavat meille jotain millä kommunikoida
29.3.2011 Copyright © Tieturi 22
PaperiTauluVisioPowerPointSketchFlow
12
Ketterä kehittäjä
• Luo UI:n jos mahdollista• Luo pisteen, johon formaaleja määrityksiä voidaan kiinnittää• Esim. WPF sovellus
29.3.2011 Copyright © Tieturi 23
Ketterä kehittäjä tuntee rajansa
• On tietoa, käyttäytymistä, jota en …• … halua tai pysty näkemään• … pysty käsittämään• ... tiedä
• Varmistaa, että tiimin testaajille ja tiimin ulkopuolisille jää aikaa tutkia näitä
• Hyväksymiskriteeristä voidaan yhteistyöllä muuttaa koodatuiksi• Hyväksyntätestien ohjaama
testaus (ATDD)29.3.2011 Copyright © Tieturi 24
Yksikkötestit
Automatisoiduthyväksyntätestit
TutkivatestausAsiakas
pilotointi
13
Ilmaistaan toiveet yhteistyöllä
• Käyttäjätarinat (User Stories) ilmaisevat kaivatut tiedonsiirrot (keskustelut) • As a <application role>• I want <some feature or behavior>• So that <I get some benefit>
• Skenaariot ilmaisevat mitkä siirrot toteutetaan• Given <some initial context>• When <this happens>• Then <this should be the result>
29.3.2011 Copyright © Tieturi 25
Käyttäjätarina esimerkki
29.3.2011 Copyright © Tieturi 26
Feature: Kameleon StartsJotta Kameleon olisi käytettävissäkäyttäjänähaluan, että Kameleon käynnistyy kun Käynnistän Officen
Scenario: Word käynnistyy ensimmäisenäGiven Mikään Office tuote ei ole käynnissäWhen kun käynnistän Word sovelluksenThen Kameleon ribbonin tulisi latautuaAnd Kameleon ribbonin tulisi olla näkyvilläAnd Kameleonin tulisi olla käyttövalmiina
14
Skenaarioiden kohdetaso
• Ketterä kehittäjä valitsee tarpeen mukaan• Kuka tarvitsee dokumentaatiota?
29.3.2011 Copyright © Tieturi 27
Given a user finds a document …
Given the button was clicked …
Given Customer xml is valid format …
Given Connection is secured…
Given the Name property is null …
Given the record exists …
Suoritettavat vaatimukset
• Vaatimusten ilmaisemista niin, että ne ovat myös testejä• BDD (Behaviour driven development)
• Onnistumisen edellytykset• Miellekkäitä, merkitseviä, informatiivisia kaikille osapuolille• Näyttävät yksiselitteisesti, että vaatimus on täytetty• Luovat pohjaa testattavalle suunnittelmille• Pysyvät yksinkertaisina
29.3.2011 Copyright © Tieturi 28
15
Suoritettavien vaatimusten käyttö
• Yhdistä testit skenaarioidenkuvamien keskusteluidenaskeliin
• Testit raportoivat vian• Testit menevät läpi• Keskustele tuloksista asiakkaan
kanssa• Lisää ja tarkenna skenaarioita
keskustelujen mukaan
29.3.2011 Copyright © Tieturi 29
As aI wantSo that
As aI wantSo that
GivenWhenThen
Suoritettavien vaatimusten ajo
• StorEvil – .NET BDD kirjastohttp://link.pluralsight.com/4n4z
• SpecFlow –.NET BDD kirjastohttp://link.pluralsight.com/3uwd
• Cucumber – BDD Ruby ja IronRubya vartenhttp://link.pluralsight.com/56j7
• Gherkin – DSL http://link.pluralsight.com/46nm
• StoryTeller - .NET native alternative to Fitnessehttp://link.pluralsight.com/5vdn
29.3.2011 Copyright © Tieturi 30
StoryQMspec
…
16
Ajo SpecFlown välityksellä
29.3.2011 Copyright © Tieturi 31
On tiimipelaaja
• Kuuntelee muita aktiivisesti• Kysyy muilta, jos ei tiedä
• 30 minuutin sääntö:Älä koskaan mieti yksin enempään kuin 30 minuuttia
• Luottaa muihin• Kertoo muille mitä on tehnyt, mitä osaa
• Helpompi löytää se joka osaa auttaa
• Kohde ei ole sidottu, työskentelee siellä missä on tiedonsiirtotarve.• Esimerkki: Asiakkaalla on jatkuva tarve tietää toimiiko se
edelleenkin niin kuin ennenkin
Adoption of Agile Software Development Practices - version 3 1
325.4.2011
17
Yhteenveto
• Ketterä kehittäjä• On tiedonsiirron ammattilainen• Ei ihastu tapaan siirtää tietoa, vaan siihen jos viesti meni perille• Käyttää kaikkia käytettävissä olevia keinoja tiedon välittämiseen• On ketterä projektin alussa• Mahdollistaa, että muutkin voivat siirtää tietoa
29.3.2011 Copyright © Tieturi 33
Tieturin kurssitarjontaa
• Certified Scrum Developer (englanniksi)• 3 päivän kurssi• Ote kurssikuvauksesta
• .
29.3.2011 Copyright © Tieturi 34