ClustrMaps

The roadrunner is back as never before! See also: My homepage or my very obsolete site
If by any means entries in my blog are considered to be harmful or damaging, please let me know (add comment) or just mail me. In this (unhopely) case I will remove or change the contents.

Thursday, February 21, 2008

Managers die programmeren

Zie deze url: http://dutch.joelonsoftware.com/PainlessSpecs/3.html

Wie schrijft specs?

Ik zal je wat Microsoft geschiedenis vertellen. Toen Microsoft serieus ben te groeien in de laat 80-er jaren, had iedereen daar De Mythische Man-Maand (The Mythical Man-Month) gelezen, een klassieker op het gebied van software management. (Als je die niet gelezen hebt beveel ik je die van harte aan.) Het grote punt van dat boek is dat wanner je meer programmeurs aan een al uitlopend project toevoegd, het nog later klaar zal zijn. Dat is omdat waneer je n programmeurs in een team hebt, het aantal communicatie-paden n(n-1)/2 is, en dit groeit met O(n2).

De programmeurs bij Microsoft waren bezorgd hoe nu grotere en grotere programma's te schrijven, als de algemene stelling van die tijd was dat programmeurs toevoegen het alleen maar slechter maakt.

Charles Simonyi, lange tijd "chief architect" bij Microsoft, stelde het meester programmeur concept voor. Het idee was zo ongeveer dat één programmeur verantwoordelijk was om alle code te schrijven, maar dat hij kon terugvallen op een team van junior programmeur als "code slaven". In plaats van zich zorgen te maken over het debuggen van elke fuctie hoefde de meester programmeur slechts de prototype van elke functie te schrijven plus een beschrijving wat deze functie moet doen, en dan kon een van de junior programmeurs deze implementeren. (Simonyi was dan uiteraard de meester meester programmeur.) De term "meester programmeur" was een beetje te middeleeuws, dus Microsoft noemde zoiemand "programma manager".

Dit was dus bedoeld om het mytische man-maand probleem op te lossen, omdat niemand meer met iemand anders moest spreken -- elke junior programmeur sprak alleen met de programma manager, en dus groeide de communicatie met de snelheid O(n) inplaats van O(n2).

Nu, Simonyi kent wellicht de Hongaarse Notatie maar hij kent Peopleware niet. Niemand wil een code slaaf zijn. Het systeem werkte in het geheel niet. Uiteindelijk ontdekte Microsoft dat, ondanks die mytische man-maand, je toch nog slimme mensen aan een team kan toevoegen en sneller kan werken, alhoewel met verminderde marginale waarde. het Excel team had 50 programmeurs toen ik daar werkte, en het was marginaal meer productief dan een team van 25 zou zijn geweest -- maar niet twee keer zo productief.

Het idee van meester/slaaf programmeren werd afgebouwd, maar Microsoft had nu al die mensen rondlopen met de titel "programma manager". Een slimme man met de naam Jabe Blumenthal vond toen de functie van de programma manager opnieuw uit. Vanaf toen zou de programma manager eigenaar zijn van het ontwerp en de spec van het produkt.

Sindsdien verzamelen programma managers bij Microsoft de requirements, zoeken uit wat de code moet gaan dien, en schrijven de specs. Er zijn gewoonlijk ongeveer 5 programmeurs per programma manager; deze zijn verantwoordelijk voor de implementatie die de programma manager als spec heeft uitgeschreven. Een programma manager moet ook de marketing, documentatie, het testen, de localisatie, en alle andere vervelende details coördineren, iets wat een programmeur zich niet mee bezig moet houden. Daarbij moeten programma managers bij Microsoft de "big picture" van de firma in het hoofd heben, terwijl de programmeurs vrij zijn om zich op de bits en de bytes te concentreren.

Programma managers zijn van onschatbare waarde. Als je al eens geklaagd hebt over hoe de programmeurs meer geïnteresseerd zijn in de techniek dan in de marketability, dan heb je een programma manager nodig. Als je al eens geklaagd hebt over het feit dat mensen die goede code kunnen schrijven niet behoorlijke Nederlandse zinnen kunnen bouwen, dan heb je een programma manager nodig. Als je al een geklaagd hebt over hoe je produkt alle kanten opdrijft zonder een klare visie, dan heb je een programma manager nodig.

No comments:

Blog Archive