
Software Engineering er død
Som en, hvis officielle titeler "Senior Software Engineer" (nu behøver vi ikke at træde i, at jeg snart fylder 30...) blev jeg afsindigt nysgerrig, da Dorte Toft for nylig sendte mig i retning af en artikel i IEEE Software med titlen "Software Engineering: An idea whose time has come and gone".
Har jeg nu spildt tiden på ingeniørstudiet, monstro?
Artiklen indeholder noget så sjældent som en mands erkendelse af, at han tog fejl. Tom DeMarco skrev i 1982 bogen "Controlling Software Projects: Management, Measurement and Estimation", der blev lidt af en bibel indenfor et af de områder, der tilskrives klassisk Software Engineering, nemlig som titlen siger: Ledelse af softwareprojekter gennem at opstille og overvåge en række metrikker.
Hovedessensen af bogen kan groft sagt opsummeres i dens første og mest citerede sætning: "You can?t control what you can't measure." Korrekt, men som Tom DeMarco i IEEE-artiklen erkender, er tiden måske kommet til, at man gør op med paradigmet om, at det er så vigtigt at styre og kontrollere softwareprojekter.
Tom DeMarco tilføjer desuden en række pointer, som ikke burde være nyt stof for tilhængerne af agile metoder (eller almindelig omtanke):
- Måling og kontrol er ikke gratis - det koster både tid og penge.
- Man får ikke altid målt det, der er vigtigt.
- Medarbejderne performer bedre, hvis de ikke bliver holdt i (for) kort snor
Mange Open Source-projekter har jo i nyere tid demonstreret, at der kan laves glimrende produkter med et absolut minimum af kontrol.
Det kan derfor virke som gamle nyheder, at Tom DeMarco nu kommer på banen med disse synspunkter. Men jeg tager hatten af for, at en kapacitet på området erkender sine fejl - man kan blot håbe på, at det vil smitte af på de klassiske it-uddannelser, så fremtidige generationer af softwareingeniører m.fl. ikke skal tudes ørene fulde med glæderne ved vandfaldmodellen og uendelige bjerge af procesdokumentation.
For jeg køber til gengæld ikke artiklens definition af, at en sådan proces-fokusering skulle være definitionen af Software Engineering. Vi har i dén grad stadig brug for, at software bliver engineered = skabt med omtanke!
Anne-Sofie Nielsen er udviklingschef hos Kapow Software og har en baggrund som civilingeniør i informatik fra DTU. Har aldrig helt fået besluttet sig for at være en nørd eller ej.
Follow @femalenerdKommentarer (8)
1. Måling og kontrol er ikke gratis - det koster både tid og penge. 2. Man får ikke altid målt det, der er vigtigt. 3. Medarbejderne performer bedre, hvis de ikke bliver holdt i (for) kort snor
Gid, at undervisningsministeriet og forskningsministeriet ville erkende dette. Der bliver mere og mere måling og flere og flere restriktioner og rapportkrav, som koster en masse ressourcer, og som ikke efter min mening øger kvalitet eller produktivitet. Den eneste effekt er, at de parametre, man måler på, bliver forbedrede. Men at de parametre rent faktisk er synonyme med kvalitet er ret tvivlsomt.
Jeg synes, at der mere er tale om at Tom DeMarco vil omdefinere opfattelsen af, hvad Software Engineering omfatter, selvom han måske modsiger sig selv lidt:
"I’m gradually coming to the conclusion that software engineering is an idea whose time has come and gone. I still believe it makes excellent sense to engineer software. But that isn’t exactly what software engineering has come to mean."
Han er jo nok bare, ligesom hele den agile skole, kommet frem til at det er en god ide at sætte folk i fokus i stedet for processen:
"Rather, I’m advocating a management approach, one that might well steer the team toward agile methods, at least
toward the incremental aspects of the agile school."
Helt uden tal (metrics) klarer man sig nok ikke - der skal stadig estimeres og planlægges i hver iteration.
Men enig, dejligt at en person som DeMarco, kan se sagen fra "den anden side" også ;-)
Helt uden tal (metrics) klarer man sig nok ikke - der skal stadig estimeres og planlægges i hver iteration.
Enig, men "nyheden" består så i, at man ikke bevidstløst beregner og planlægger, men forinden vurderer, hvor det giver nytte for pengene.
@Torben:
En af de sjove ting i Tom Demarcos bog (som tilfældigvis var toiletlæsning hjemme hos mig i et par uger) er hans Heisenberg-princip i lettere modificeret udgave. Hvad du måler i en proces vil utvilvsomt blive påvirket af målingen.
Hvis du endvidere fortæller hvad din metrik er og bruger den til at vurdere effektiviteten af en gruppe mennesker, så medfører det banalt set at gruppen lokaloptimerer. Desværre er det sjældent ækvivalent med en global optimering.
Jvf Dilbert sekvensen hvor de fik bonus per fejl de fandt.
Wallys kommentar: "Jeg tror jeg vil skrive mig en rungstedtraktor i eftermiddag".
Poul-Henning
Dén HAR jeg set implementeret i en dansk virksomhed.
Resultat : Folk indsatte bevidst fejl, som de efterfølgende selv rettede med høj bonus til følge..
Jeg tror Tom DeMarco har begået endnu en fejl... Frihed, og kontrol, er ikke modsætninger. Kunsten er, at kombinere frihed med kontrol. I princippet, behøver medarbejderne ikke at opdage de "overvåges".
Men fjerner vi overvågningen, så overlades styringen til mafien. Så bliver det den største terrorist som vinder. Formålet med at "kontrolere", er netop at udelukke terrorisme.
Imidlertid medfører kontrol også ansvar - dem der kontrolerer, får ansvaret for produktet. Fjerner du kontrollen, så fjernes deres ansvar, og du får medarbejderansvar.
Medarbejderansvar fungerer også nogenlunde - men genneralt kan være fordele ved, at placere ansvaret et bestemt sted. Ulempen er, hvis disse så ikke tager ansvaret, og ikke forstår at løfte opgaven. I så fald, så vil det naturligvis langt bedre, at lade programmørerne tage det fulde ansvar, trods de med stor sandsynlighed er rejst og borte, når det går galt.
Lønningsmæssigt, vil det naturligvis også betyde noget. Har lederen ikke mere ansvaret, så går han lønmæssigt ned på samme niveau, som de andre i virksomheden. Med ansvar følger lønnen. Ingen ansvar - ingen løn.
Med kontrol, forstår jeg "aflæsning", altså det samme som at læse, eller verificere data. Ikke at skrive data.
Nogle forstår måske kontrol, som at skrive data - altså hvad vi kunne kalde at diktere, eller diktatur.
Hvis Tom DeMarco forstår kontrol som at "skrive data", altså at styre, og at udføre diktatur på medarbejderne, så medgiver jeg ham at frihed og kontrol er modsætninge. Men forstås kontrol, som at aflæse, så er det i princippet ikke destruktivt, og behøver ikke at ødelægge frihed.
Det som er destruktivt, er som regel når man begynder at vil styre. Dette kan i mange tilfælde betragtes som at skrive i data som ikke er sine egne, og dette medfører ofte fejl, og ustabilitet. Overvågning, og aflæsning, kombineret med at gøre det bedst mulige for medarbejderne (uddanne hvis der opdages mangler i evner og kunnen, eller give dem midler, hvis der opdages nogle mangler), er ikke det samme som at ikke give dem fuld frihed. At anvende overvågningen, til at give dem de opgaver de gerne vil have, kan også være eksempel på "positiv" anvendelse af overvågning.
Det er nødvendigt med en vis måling, hvis du skal tage ansvar. Jeg tror hellerikke, at nogle programmører tror, de kan få noget til at fungere, uden at have afprøvet og testet det de gør.
Problemet opstår, når du så ser en fejl. Er du dårlig, går du ind og retter fejlen. Du vil måske se, at en variabel får en forkert værdi, og ændrer denne med debuggeren. Kort tid efter, sker fejlen igen... Programmet forstod ikke en skid.
Her er kunsten, at anvende målingen positivt overfor medarbejderne, og overfor softwarens kvalitet. Det medfører, at medarbejderne måske skal videreuddannes, hvis det afsløres noget de ikke kan. Eller, at de måske skal have flere resourcer, såsom flere penge, mere tid, eller hjælpere til projektet, uden de måske selv har opdaget det. Disse tiltag, kan sammenlignes med, at vi løser problemerne for vores program - f.eks. at vi uddanner og løser fejlen, at vi måske tilfører større hukommelse eller større cpu kraft, for at løse flaskehalsen, osv. Overvågningsdataene - eller kontrollen - bruges nu positivt, til at få fejlen rettet, og ikke til at gå ind og ændre og modificere i data, i hvert enkelt tilfælde.
Det er vigtigt, at medarbejderne er "med", og den der tager beslutningerne. Så må med uddannelse, flere resourcer, måske udeligering af svære opgaver mv. sikres at de har bedst mulige vilkår, til at løse opgaven. Kontrol, er her en vigtig resource, til at kunne opnå det.
Desto mere af intelligensen, som ligger hos medarbejderen - desto bedre er det. En leder, har kun den intelligens, som hans medarbejdere har tilsammen. Lederens opgave er, at få noget ud af den. En leder, som dikterer, kan meget nemt være en dårlig leder. Meddens en leder der overvåger og måler, oftest er en god leder. En leder, som ikke hverken måler eller styrer, er næppe en rigtig leder, og en der ikke måler, er ikke en god leder. Er personen dygtig som ingeniør, er han måske en god senior, men kan han ikke aflæse og måle medarbejderne, vil han være dårlig leder.
At måle, og aflæse sine medarbejdere, mener jeg stadigt er vigtigt for at kunne lede og styre. Og det kan samtidigt gøres, uden at holde medarbejderne i "kort snor".
