Joel on Software

Joel on Software   Joel ohjelmistoista

 

Lisää suomenkielisiä Joel on Software -artikkeleita.

Lisää englanninkielisiä Joel on Software -artikkeleita.

Lähetä sähköpostia kirjoittajalle (vain englanniksi)

 

Tulitus ja liike


Kirjoittanut Joel Spolsky
Kääntänyt Jarno Virtanen
Muokannut Taina Prusti
Tammikuun 6., 2002

Joskus en vain saa mitään aikaiseksi.

Tulen kyllä toimistolle, pyörin ympäriinsä, tarkistan sähköpostin kymmenen sekunnin välein, luen veppiä ja teen jopa jotain aivottomia hommia kuten maksan laskuja. Mutta en vain pääse vauhtiin koodin kirjoittamisessa.

Tetris

Nämä tuottamattomuuden kaudet kestävät yleensä päivän tai pari. Mutta joskus on mennyt jopa viikkoja, etten ole saanut mitään aikaiseksi. Ei huvita, ei jaksa, ei nappaa.

Kaikkien mielialat heittelehtivät - toisilla se on lievää, toisilla taas merkittävämpää ja joskus jopa lamauttavaa. Nämä tuottamattomuuden kaudet näyttävät olevan yhteydessä synkempiin mielialoihin.

Mieleeni tulevat ne tutkijat joiden mukaan ihmiset vain kertakaikkiaan eivät voi kontrolloida mitä syövät, joten kaikki laihdutusyritykset kariutuvat yleensä nopeasti ja ihmiset jojoavat takaisin luonnolliseen painoonsa. Ehkä minäkään en voi ohjelmistokehittäjänä kontrolloida sitä milloin olen tehokas ja tuottava, ja minun täytyy vain hyväksyä sekä hiljaisemmat että tuottavammat ajat ja toivoa, että syntyneiden koodirivien keskiarvo on tarpeeksi hyvä pitääkseen minut kiinni leivänsyrjässä.

 

 
Go read The Onion for a while.
 
 

Mikä minut saa hulluksi on se, että ensimmäisestä työstäni lähtien olen havainnut, että ohjelmistokehittäjänä koodaan tuottavasti vain keskimäärin kaksi tai kolme tuntia päivässä. Ollessani kesäharjoittelijana Microsoftilla toinen kesäharjoittelija kertoi, että hän oli itse asiassa töissä vain kahdestatoista viiteen. Viisi tuntia, miinus ruokatunti, ja hänen ryhmänsä rakasti häntä, koska hän sai silti aikaiseksi keskivertoa enemmän. Olen itse havainnut vastaavaa. Minulle tulee hieman syyllinen olo kun näen kuinka ahkerasti kaikki näyttävät tekevän töitä, ja minä saan tehtyä vain kaksi tai kolme laadukasta työtuntia päivässä, ja silti olen ollut yksi ryhmän tuottavimmista jäsenistä. Tämän takia varmaan Peopleware-kirjassa ja XP:ssa vaaditaan, että ylitöitä ei teetettäisi ja pitäydyttäisiin normaalissa työajassa: he tietävät ettei se vähennä ryhmän tuottavuutta.

Mutta en minä murehdi niitä päiviä, jolloin saan "vain" kaksi tuntia töitä tehdyksi. Minua huolettavat ne päivät, jolloin en saa tehtyä mitään.

Olen ajatellut tätä asiaa paljon. Olen yrittänyt muistella aikoja, jolloin sain parhaiten aikaiseksi. Se oli varmaan silloin, kun Microsoft siirsi minut kauniseen, ylelliseen uuteen toimistoon, jossa oli suuret ikkunat, joista näkyivät kivipuutarhan kukkivat kirsikkapuut. Kaikki toimi. Kuukausien ajan tein töitä taukoamatta hioen Excel Basicin yksityiskohtaista määrittelyä -- monumentaalinen paperikasa, joka meni uskomattoman tarkkoihin yksityiskohtiin kuvatessaan giganttisen oliomallin ja ohjelmointiympäristön. En kirjaimellisesti lopettanut koskaan. Otin kannettavan mukaan, kun minun piti mennä Bostoniin MacWorldiin, ja dokumentoin Window-luokan istuessani mukavalla terassilla HBS:lla.

Ei ole vaikea antaa vain palaa, kunhan pääsee vauhtiin. Päiväni menevät usein näin: (1) menen töihin (2) tarkistan sähköpostin, luen veppiä, jne. (3) päätän, että voin yhtä hyvin mennä lounaalle ennenkuin aloitan työnteon (4) palaan lounaalta (5) tarkistan sähköpostin, luen veppiä, jne. (6) päätän että minun pitää lopulta jo aloittaa (7) tarkistan sähköpostin, luen veppiä, jne. (8) päätän uudestaan, että minun täytyy nyt todella aloittaa (9) käynnistän sen perhanan editorin ja (10) koodaan keskeytyksettä kunnes huomaan, että kello onkin jo puoli kahdeksan.

Jossain vaiheiden 8 ja 9 välillä näyttää olevan joku virhe, koska en aina pääse tuon kuilun ylitse. bike trip Minulle ainoa vaikea asia on aloittaminen. Liikkumaton kappale tuppaa pysymään liikkumattomana. Aivoissani on jotain äärimmäisen raskasta, jota on hyvin vaikea saada vauhtiin, mutta kun sen kerran saa pyöräytettyä täyteen vauhtiin, ei vaadi juuri yhtään työtä pitää sitä vauhdissa. Kuin polkupyörä, joka on varustettu pyöräretkelle -- kun aloitat pyörän polkemisen kaiken sen varustuksen kanssa, vaatii hirveästi työtä saada pyörä edes liikkeelle, mutta kun pääset vauhtiin ajaminen tuntuu yhtä helpolta kuin ilman varusteita.

Ehkä tämä on tärkeintä tuottavuudessa: aloittaminen. Ehkä silloin kun pariohjelmointi toimii, se toimii juuri siksi, että kun sovitte työskentelyn aloittamisesta kaverisi kanssa, samalla pakotatte toisenne aloittamaan.

Joel in the Army

Kun olin Israelin laskuvarjojoukoissa, eräs kenraali piti meille puheen strategiasta. Jalkaväen taisteluissa, hän kertoi meille, on vain yksi strategia: Tulitus ja Liike. Liikut vihollista kohti samalla tulittaen. Tulitus pakottaa vihollisen pitämään pään alhaalla niin, että hän ei voi ampua sinua. (Tätä sotilaat tarkoittavat, kun he huutavat "suojaa minua." Se tarkoittaa "tulita vihollista niin, että sen täytyy suojautua, eikä voi tulittaa minua kun juoksen tämän kadun yli." Se toimii.) Liike mahdollistaa alueiden valloituksen ja pääsemisen lähemmäksi vihollista, jolloin sinun ammuksesi osuvat varmemmin kohteeseen. Jos et liiku, niin vihollinen saa päättää mitä tapahtuu ja se ei ole hyvä asia. Jos sinä et tulita, niin vihollinen tulittaa sinua, olet motissa.

Tämä pysyi mielessäni pitkään. Huomasin, että melkein mikä tahansa sotastrategia, ilmavoimien dogfaiteista suuren mittapuun meritaktiikoihin, perustuu Tulituksen ja Liikkeen ideaan. Minulta vei toiset 15 vuotta tajuta, että Tulituksen ja Liikkeen periaatteeseen perustuu sekin miten asioita saa aikaiseksi elämässä. Täytyy liikkua vähäsen eteenpäin, joka päivä. Sillä ei ole merkitystä onko koodi huonoa ja bugista tai että kukaan ei halua sitä. Jos etenet koko ajan, koodaat tai teet korjauksia, niin aika on puolellasi. Tarkkaile vastustajasi suojatulitusta. Haluavatko he vain pakottaa sinut vastaamaan heidän yhteislaukauksiinsa niin, että sinä et voi liikkua eteenpäin?

Ajattele Microsoftin tekemien tietokantatekniikoiden historiaa. ODBC, RDO, DAO, ADO, OLEDB, nyt ADO.NET - Kaikki uusia! Ovatko nämä teknologisesti välttämättömiä? Vai tulosta epäpätevän suunnitteluryhmän tarpeesta keksiä tietokantojen käsittely joka helvetin vuosi uudestaan? (Se on todennäköisesti totuus, itse asiassa.) Lopputuote on kuitenkin vain suojatulta. Kilpailijoilla ei ole muuta vaihtoehtoa kuin käyttää kaikki aika porttaamiseen ja vauhdissa pysymiseen, aika, jota he eivät voi käyttää uusien ominaisuuksien tekemiseen. Katso tarkkaan ohjelmistojen maailmaa. Yhtiöt, joilla menee hyvin, ovat niitä, jotka ovat vähiten riippuvaisia isoista yhtiöistä ja joiden ei siten tarvitse tuhlata kaikkia resurssejaan siihen, että pysyvät mukana ja toistavat ja korjaavat virheitä, jotka ilmenevät vain Windows XP:ssa. Kompuroivat yhtiöt taas ovat niitä, jotka käyttävät liikaa aikaa siihen, että yrittävät ennustaa teenlehdistä mihin suuntaan Microsoft aikoo mennä tulevaisuudessa. Ihmiset huolestuvat .NET:stä ja päättävät suunnitella uudelleen koko arkkitehtuurinsa .NET:lle koska he luulevat, että heidän täytyy tehdä niin. Microsoft tulittaa kohti, ja se on suojatulta, niin että he voivat edetä ja sinä et, koska näin tätä peliä pelataan, kaveri. Aiotko tukea Hailstormia? SOAP:ia? RDF:ää? Tuetko niitä, koska asiakkaasi tarvitsevät niitä, vai siksi, että joku tulittaa sinua kohti ja sinusta tuntuu, että sinun pitää vastata siihen? Isojen yhtiöiden myyntitiimit ymmärtävät suojatulen merkityksen. He menevät asiakkaan luo ja sanovat "OK, sinun ei tarvitse ostaa meiltä. Osta parhaalta kauppiaalta. Mutta varmista että saat tuotteen, joka tukee (XML:ää/ SOAP:ia/CDE:tä/J2EE:ä), tai muuten olet Locked In The Trunk." Sitten kun pienet yhtiöt yrittävät myydä tälle asiakkaalle, he saavat kuulla vain kuuliaisen toimitusjohtajan toistavan papukaijana: "Onko teillä J2EE?" Ja heidän pitää tuhlata kaikki aikansa J2EE:llä rakentamiseen, vaikka se ei oikeasti kasvata yhtään myyntiä eikä anna heille mahdollisuutta erottautua joukosta. Se on checkbox-ominaisuus -- teet sen, koska tarvitset checkboxin joka sanoo että sinulla on se mutta kukaan ei käytä tai tarvitse sitä. Ja se on suojatulta.

Tulitus ja Liike tarkoittaa kahtaa asiaa FogCreekin kaltaisille yhtiöille. Sinulla täytyy olla aika puolellasi ja sinun täytyy liikkua eteenpäin joka päivä. Ennemmin tai myöhemmin tulet voittamaan. Eilen en saanut aikaiseksi muuta kuin hieman FogBUGZin väriskeeman parantelua. Se on ihan OK. Ohjelmisto paranee koko ajan. Joka päivä ohjelmistomme ovat parempia ja parempia ja meillä on enemmän ja enemmän asiakkaita ja se on kaikki millä on väliä. Niin kauan kuin emme ole Oraclen kokoinen yhtiö meidän ei tarvitse tehdä suuria strategioita. Meidän täytyy vain tulla töihin joka päivä ja - jollain konstilla - saada käynnistettyä se editori.

It's getting better all the time... o/~



Artikkeli on alunperin esiintynyt englanniksi nimellä Fire and Motion  

Joel Spolsky on Fog Creek Softwaren, pienen New Yorkilaisen ohjelmistoyrityksen, perustaja. Hän valmistui Yalen yliopistosta ja on työskennellyt ohjelmoijana ja esimiehenä Microsoftilla, Viacomilla ja Junolla.


Nämä sivut esittävät vain yhden henkilön mielipiteitä.
Kaikki sisältö Copyright ©1999-2005 Joel Spolsky. Kaikki oikeudet pidätetään.

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky