Wednesday, August 18, 2004

48. juhlapostaus

Laitan blogin pariksi viikoksi tauolle, sillä eräs tärkeämpi asia painaa päälle. Reilun kuukauden päästä tapahtuu merkittävä muutos nykyiseen, pystyyn kuolleeseen elämäntapaani; ja muutokset tunnetusti aina stimuloivat.

Edellinen viiko oli tapahtumaköyhä, mutta kävin sentään perjantaina juomassa ja kuuntelemassa musiikkia. Juominen on tärkeää kahdesta syystä: ensinnäkin, että säilyisi edes jonkinlainen kosketus muun maailman menoon. Toiseksi, rappion katseleminen - jota panu ansiokkaasti kuvaa - saa koodaamisen tuntumaan paljon mielekkäämmältä ja vähemmän tylsältä puurtamiselta.

Lavalla soitettiin metallia. Koska musiikkilaji oli vähemmän tuttu, kaikki bändit kuulostivat suurinpiirtein yhtä hyviltä, ja konseptin uutuus teki tilaisuudesta vähemmän tylsän.

Koskapa en asiasta mitään tiedä, en viitsi edes yrittää analysoida sitä. Oikeasti se oli vain aasinsilta sarjakuvastrippiin, jossa tiivistyy metallin koominen puoli. Tässä toinen hauska strippi. (Order of the stick on muutenkin hauska, mutta paritallyclips ei)

Sunday, August 08, 2004

Top Secret

Neuvostoliitolla oli 70- ja 80-luvuilla erittäin laaja biologisten aseiden ohjelma. Sen pääorganisaatio oli nimeltää Biopreparat, jossa työskenteli n. 35000 henkeä. Biopreparat valmisti ihmisiä tappavia biologisia aseita sotaa varten. Biopreparatin lisäksi oli muita organisaatioita, mm. maatalousministeriön alaisena toimiva karjantappoaseita valmistava osasto, sekä KGB:n alainen salamurha-aseita valmistava osasto.

Ken Alibek toimi 90-luvun alussa Biopreparatissa hyvin korkeassa asemassa, kunnes loikkasi Yhdysvaltoihin. Jenkkilässä hän kirjoitti teoksen "Biohazard", josta tämänkin postauksen tiedot ovat peräisin.

Sverdlovsk on venäläinen kaupunki, jonka lähelle oli sijoitettu paiseruttopommeja (anthrax) valmistava tehdas. Valmistusprosessi oli sellainen, että ensin paiseruttobakteerit idätettiin ravintoliuoksessa, jonka koostumus oli optimoitu paiseruton lisääntymiselle. Kun itäminen oli edennyt riittävän pitkälle, liuos laitettiin sentrifugiin (linkoon), joka monikymmenkertaisti paiseruttokonsentraation. Sitten tämä liuos kuivatettiin ja jauhettiin hienoksi aerosoliksi. Aerosoli varastoitiin pommeihin.

Pommien toimivuus oli testattu eläinkokeilla. Jotain niiden tehosta kertoo mitta-asteikko, jolla vertailtiin erilaisten biologisten agenttien tehokkuuutta (agentti = vaikuttava aine): Kuinka monta kiloa agenttia tarvitaan, jotta tauti tarttuisi neliökilometrin alueella puoleen populaatiosta? Huolimatta tuulesta, huolimatta hapen bakteereja tuohoavasta vaikutuksesta sekä huolimatta laimentumisesta, biologisilla aseilla pystyttiin saastuttamaan laajoja alueita.

Neuvostoliitto oli allekirjoittanut 1972 sopimuksen, joka kielsi biologisten aseiden valmistuksen. Siksi ohjelma haluttiin pitää salassa. Ken Alibek ei voinut kertoa vaimolleen edes sitä, että hän valmisti biologisia aseita (vaimon arvaus oli, että mies työskenteli ohjelmassa, jossa yritettiin kloonata ihminen).

Sverdlovskin paiseruttotehtaalla tapahtui 1979 onnettomuus, jonka seurauksena ympäristöön levisi paiseruttoa. Koska virallisesti mitään ohjelmaa ei ollut, niin ensisijainen prioritetti oli painaa asia villasella. Tästä syystä mihinkään toimiin ei ryhdytty, ennen kuin ihmisiä alkoi hakeutua sairaalaan paiseruttotaudin takia.

Se, että ihmisiä alkoi kuolla, ei muuttanut prioritetteja. Edes sairaanhoitohenkilökunnalle ei kerrottu, että kyseessä oli paiserutto. (vrt. kun tshetseenit hyökkäsivät Moskovaan bolshoi-teatteriin ja ottivat panttivankeja, ja turvallisuusjoukot tainnuttivat porukan jollakin aerosolilla. Taaskin salassapito oli tärkeämpää kuin kansalaisten henki, ja sairaanhoitohenkilökunnalle ei kerrottu, minkälaiset vastalääkkeet voisivat olla tehokkaita aerosolimyrkytystä vastaan.) Tuohon aikaan Boris Jeltsin oli alueella jonkinlainen pääjehu, ja edes hänelle ei kerrottu asioiden todellista laitaa.

Sepitettiin valhe mädästä lihasta. Mätä liha mainittiin epidemian syyksi kaikissa virallisissa tiedotusvälineissä. Kertomus pysyi aina samanlaisena, eikä sille esitetty vaihtoehtoisia kertomuksia, joten sen on täytynyt olla melko vakuuttava kaikille muille, paitsi paikallisille silminnäkijöille. Ulkomaiset tiedustelujärjestöt tiesivät satelliittikuvien perusteella, että Sverdlovskissa oli biologisia aseita valmistava tehdas, joten heitä selitys ei vakuuttanut.

Salailu ulottui jopa Biopreparatin sisälle. Vain kaikkein korkeimmassa asemassa olevat kuulivat asiasta virallista tietä. Alibek ei vielä 1979 kuulunut tähän sisäpiiriin.

Alibek kuuli ensimmäisen maininnan Sverdlovskin onnettomuudesta vasta monta kuukautta jälkeenpäin. Sen jälkeen hän joutui keräämään tiedot epävirallisia kanavia pitkin, suullisina kertomuksina ja huhuina. Siinä missä Nasan raketille tapahtunutta onnettomuutta analysoitiin lehdistössä kyllästymiseen asti, niin Sverdlovskin onnettomuutta ei analysoitu kunnolla edes organisaation sisällä. Tämä ei tarjoa hyvää pohjaa samojen virheiden välttämiseen tulevaisuudessa.

Tarkoituseni oli vertailla Sverdlovskin salailua länsimaisissa yrityksissä harjoitettavaan salailuun. Ensin ainut yhteinen piirre: Jos jokin menee pieleen, niin tapahtunutta ei analysoida vastaavien virheiden välttämiseksi tulevaisuudessa. Firmoissa tämä johtuu siitä, että kaikenlaiset epäonnistumiset ovat huonoa PR:ää. Epäonnistuneista projekteista kuulee vain suullisia huhuja. Virallisessa tiedotuksessa epäonnistumiset selitetään eufemismeilla, joita on mahdotonta aavistaa epärehellisiksi, jos ei ennestään tiedä asioiden oikeaa laitaa.

Tähän yhtäläisyydet sitten loppuvatkin. Pieleen mennyt softaprojekti on vakavuudessaan mitätön verrattuna kuolemaan johtavaan onnettomuuteen.

Toiseksi, länsimaissa voi ostaa vapailta markkinoilta oppaita, joissa analysoidaan muissa yrityksissä tapahtuneita epäonnistumisia, riskitekijöitä ja puutteita. Nämä analyysit lienevät kahdesta syystä parempia, kuin mitä koettujen epäonnistumisten paikallinen analyysi voisi tuottaa. Ensinnäkin, niiden kirjoittajat ovat tottuneita ilmaisemaan itsensä kirjallisesti. Toiseksi, he ovat perehtyneet
alan aikaisempiin käsityksiin.

Jos muuten tiedät jonkin hyvän teoksen kaupallisen byrokratian todellisista toimintamekanismeista, niin lähetäppä vinkki.

Sunday, August 01, 2004

Keskustelu kasvokkain

Seuraa kolmiosain kirjotus kasvokkaisesta keskustelusta. Alustuksena kannattaa lukea Tommin terveen keskustelun kritiikki.

Ensimäisessä osassa väitetään, että monologinen keskustelutyyli, jossa viisas kertoo ja tyhmä kyselee, vältää monet kasvokkaiskeskustelun sudenkuopat. Toinen osa referoi, mitä eräs ohjelmistotuotannon klassikko sanoo keskustelun roolista ohjemointityössä. Kolmas osa spekuloi, mitkä keskustelun ominaispiirteet ovat seurausta siitä, että keskustelu on nopeaatempoista.

Monologit (1/3)

Menin eräänä päivänä terassille, ja pöytään ilmestyi kaksi nuorta naista. Kävi ilmi, että he olivat viettäneet puoli vuotta Nepalissa vapaaehtoistyöntekijöinä. Loppuajan kyselin heiltä erilaisia asioita Nepalista. Referoin nyt sen, minkä muistan.

Nepalin ilmasto on paljon kuumempi kuin Suomessa. Kylmimmilläänkin lämpötila pysyi pari astetta plussan puolella.

Suurin kaupunkin on Katmandu, jossa on puoli miljoonaa ihmistä. Yhteiskunta on aika kehittymätön ja maatalousvaltainen.

Vuoristo haittaa erilaisen infran rakentamista. Joihinkin kyliin ei ole edes kunnollista autoteitä. Lisäksi mutavyöryt katkovat teitä. Tieverkko Nepalin ja Intiaan välillä on hyvä, mutta tiibetiin yhteydet ovat harvemmassa.

Toinen heistä kertoi viettäneensä aikaansa kylässä, jossa lähin puhelin oli kahden tunnin kävelymatkan päässä. Hän ei sanonut olevan tuon olevan poikkeuksellista eristäytymistä, vaan että kylä oli melkein puhelinverkossa kiinni.

Nepalilaiset ovat uskonnoltaan hinduja tai buddhalaisia. Nepalissa on voimassa kastijärjestelmä. Vaikka se on kielletty laissa, se vaikuttaa silti lähes kaikkeen. Sukunimi annetaan kastin mukaan. Ihmiset eivät mene naimisiin eri kastiin kuuluvien kanssa. Kuulemma he tiestivät kaikkien kavereidensa kastit. Alimman kastin ihmiset tekevät kaikki kurjat työt. Kuulemma monet alimman kastin ihmiset katsovat ansaitsevansa osansa. Maatalousmaassa myös liiikkuvuus on vähäistä.

Esimerkkeinä projekteista he mainitsivat lukutaito-opetuksen sekä erilaisten lääketieteen ammattilaisten koulutuksen kyliin.

Keskustelu sujui niin, että minä kysyin ja he vastasivat. Voisi sanoa, että keskustelu oli monologinen, koska siinä ei väitelty eikä kyseenalaistettu mitään. Tällaisella keskustelulla on monia suotuisia piirteitä.

Ensinnäkin, se ei ole turhauttavaa paskanjauhantaa, niin kuin kovin moni keskustelu. Toiseksi, kun keskustelu on alkanut, siihen liittyminen ei edellytä tietoa keskustelijoista (lokaalia tietoa) vaan kenellä tahansa voi olla tarvittava tietämys. Kolmanneksi, keskustelun päätyttyä kumpikin keskustelija voi olla tyytyväinen: toinen on lisännyt tietomääräänsä ja toinen on antanut itsestään positiivisen vaikutelman. Neljänneksi, siinä ei ole motivaatiota valehdella eikä käyttää sellaisia face-to-face -eleitä, joita Tommi hyvin perustein moitti.

Tällainen keskustelu edellyttää, että joku henkilö tietää riittävän paljon jostain sellaisesta asiasta, josta muut ovat kiinnostuneita. Tämä lienee kaikkein vaikein reunaehto. En muista osallistuneeni tällaiseen keskusteluun monologin pitäjänä. Toinen edellytys on, että keskustelu saadaan aluilleen, ja aihe löydetään monien muiden aiheiden joukosta. Kolmanneksi, tavitaan kysyjä jolla on riittävät tiedot kysymiseen, mutta ei niin paljon tietoa, että vastaukset olisivat tylsiä. Esim. ammatillisista asioista puhuminen kaattuu usein juuri kolmanteen kohtaan.

Monologin ongelmana on se, että se asettaa puhujat epäsymmetriseen asemaan. Tutustumiskeskustelussa ihmiset yleensä haluavat kokea toisensa tasa-arvoisiksi. Tyhmällä ei siksi ole välttämättä kärsivällisyyttä kysyä, ja viisaas saatta miettä, mitä mieltä hänen on käyttää aikaansa tutustuakseen tyhmempään.

Toiseksi, monologi voi olla rasittava tilanteessa, jossa toisella henkilöllä ei ole mahdollisuutta lähteä pois. Tämä korostuu tilanteissa, joissa osapuolet ovat alkujaan epäsymmetrisessä asemassa, ja monologi vain korostaa sitä.

Illalla menin juomaan. Syntyi juuri sellainen puhetilanne, jota Tommi aiheellisesti moitti. Alkoholia oli veressä liikaa, ja faktapohja olematon.

[Intuitio sanoo, että jokin tässä kirjoituksessa mättää: Jos monologit olisivat oikeasti elinkelpoisia, niitä harrastettaisiin enemmän.]

The Role of Conversation in Software Engineering (2/3)

In the programming literature, conversation is considered a double-edged sword. One the one hand, programming includes plenty of ?tacit? knowledge, which is easy to transfer in face-to-face discussion, but difficult to transfer with documentation. On the other hand, programmers are more effective in quiet and peaceful work spaces.

First of all, many programming tools have features, which you may not find alone. The filename completion in Windows 2000 is a good example: many people learn about it from peers, rather than from discussion groups or documentation. Also many people learn to use a debugger only after someone shows them how debugging works, even if it is in prominent place in the menus of their text editors. In addition, there are many platform-specific, tool-specific and software-specific skills which you typically learn from peers. When a programmer starts working with a new platform without guidance, it may take considerable time to sort these out.

Peter Naur's essay ?Programming As Theory Building? claims that one essential part of programming is building so-called ?theory of the program?, which is ?a theory of how certain affairs of the world will be handled by, or supported by, a computer program?.

Naur gives a good example:

"The compiler had been developed by group A for language L and computer X. Now another group B wanted to write a compiler for language L + M, a modest extension of L, for computer Y. The group B decided that the compiler for L developed by the group A would be a good starting point, and made a support agreement with group A. This support included full documentation, annotated program text, additional written design discussion and personal advice. The arrangement was effective and B managed to develop the compiler they wanted.

In the present context the important issue is the personal advice from group A on how to implement the extension M to the language. During the design phase group B made suggestions on how the extensions should be implemented and submitted them to group A for review. In several major cases it turned out that the solutions suggested by group B were found by group A to make no use of the facilities which were not only inherent in the structure of the existing compiler but were discussed at length in its documentation, and to be based instead on additions to that structure in form of patches that effectively destroyed its power and simplicity. The members of group A were able to spot these cases instantly and could propose simple and effective solutions, framed entirely within the existing structure. This is an example of how full program text and additional documentation is insufficient in conveying to even the highly motivated group B the deeper insight into the design, that theory which is immediately present to the members of group A.

Later, the compiler developed by group B was taken over by other programmers of the same organization, without guidance from group A. Information obtained by a member of group A about the compiler resulting from the further modification of it after about 10 years made it clear that at that later stage the original powerful structure was still visible, but made entirely ineffective by amorphous additions of many different kinds. Thus, again, the program text and its documentation has proved insufficient as a carrier of some of the most important design ideas.?

After this, Naur starts telling the characteristic features of this insight. First of all, the insight is formed when the programmer writes the program, or modifies the program under guidance from someone who has this insight. Secondly, it is not ?What there is? type of knowledge, but ?How to? ?knowledge: How certain behaviour can be achieved while preserving the essential features of the program. My experience is that documentation is almost always ?what there is? type of knowledge: lists of modules, the responsibilities of each module, lists of requirements which the system fulfills etc.

Thirdly, the insight is essentially tacit: It can't be fully documented. Transferring the insight requires interactive discussion. Fourthly, iss characteristic feature is accountability: A person with the insight is able to answer background questions about the program, like the division of responsibility between classes, the reasons for choice of parameters for functions etc.

Fifthly, for a person without the insight, it is difficult to modify the program. Naur says that a program is ?alive? if there are programmers with the insight available to make modifications to the program. A program is ?dead? if the insight has been lost from the organization. A dead program can be run and used, but modification is problematic: Program resurrection is risky and unproductive.

The negative aspect of conversation is simpler. Joel sums it up (behind the link, the actual essay starts at the middle of the text). Basically, when a programmer is interrupted, it takes 15 minutes for him to get back to full concentration. There is also statistical data which shows that a programmer with a well-defined task can accomplish it more quickly in peaceful and quiet environment with no interruptions.

"Agile Software Development" draws some conclusions from this. Programmers in the same project should be placed near each others so that they can overhear each others' discussions. This way, they are more likely to have similar view about the theory of the program. Geographically distributed teams are bad but when they can't be avoided, special attention should be paid to communication. Two unrelated working groups should not be placed next to each other on landscape offices, since this creates "noise" talk which only disturbs.

(Note to casual readers: The other parts of this series about face-to-face conversation have nothing to do with software.)

Nopea keskustelu (3/3)

Tärkein ero kirjoittamisen ja keskustelun välillä on keskustelun nopeus.
Keskustelun tuoksinassa ei juuri ehdi muotoilla mielipiteitä, ja faktojen tarkistaminen on sula mahdottomuus. Jos ei halua olla tuppisuuna, pitää kehittää jokin keino generoida puppua nopeasti. Yleisimpiä ratkaisuja ovat:

1) Ei puhuta oikein mistään aiheesta. Tämä on OK, sillä keskustelun tarkoitus on useammin sosiaalinen kuin tiedollinen.

2) Puhutaan aiheista, jotka eivät vaadi minkäänlaista päättelyä, ja jotka ovat tuttuja lähes kaikille. Tyypillistä kahvipöydässä.

3) Puhutaan aiheesta, johon keskustelijat ovat perehtyneet. Tämä toimii juuri niin kauan kuin myös toinen osapuoli on perehtynyt aiheeseen. Se ei toimi tuntemattomien kanssa.

4) Käytetään rujoja karikatyyrejä ja stereotypioita. Tyypillistä poliittisessa keskustelussa.

5) Monologit, joissa toinen on perehtynyt johonkin aiheeseen, ja toinen tietää riittävästi ollakseen kiinnostunut.

Uskon, että jonkin mielipiteen puhuminen vaatii sen kääntämistä puhuttavaan muotoon. Tähän liittyy kaksi vaihetta.

Ensinnäkin, pitää tietää mitkä asiat ovat tärkeitä ja puhumisen arvoisia. Tämä on relevanssifiltterin tehtävä. Uuden aihealueen relevanssifiltteri kehittyy ainoastaan olemalla muiden ihmisten seurassa ja kuuntelemalla heidän juttujaan.

Toiseksi, tarvitaan tulkintarepertuaari. Pitää olla jokin kielellinen käsitejärjestelmä, jolla aihealueen saa sanalliseen muotoon. Tulkintarepertuaarit voidaan jakaa online-repertuaareihin ja offline-repertuaareihin. Ero on siinä, että online-repertuaareja voi käyttää lennossa keskustelukumppanin sanomisten kommentointiin. Online-repertuaarit ovat joko melko yksinkertaisia tai sitten puhuja on perehtynyt asiaan niin hyvin, että pystyy tekemään päättelyä lennossa. Offline-repertuaarit vaativat pohtimista ja puntarointia, joka on niin aikaavievää, ettei sitä voi tehdä keskustelussa.

Puhuminen siis edellyttää sitä, että havainnot tai tieto käännetään sanottavaan muotoon käyttäen jotain tulkintarepertuaaria. Valotanpa sitä esimerkeillä.

Huumori: Tunnettuihin fraaseihin perustuvassa tilannekomiikassa vitsiniekka on painanut mieleen jonkin humoristisen one-linerin sekä muodostanut jonkinlaisen käsityksen reunaehdoista, joiden täyttyessä sutkaus on hauska. Sanottavaan muotoon kääntäminen on sen pohtimista, millaisessa tilanteessa sutkaus on hauska. Jos tätä vaihetta ei ole tehty, niin henkilö pystyy tunnistamaan vitsin ja nauramaan sille, mutta hän ei pysty sutkauttamaan sitä itse.

Kirjoista puhuminen: Yleisin tapa on luokitella kirjat akselilla tykkään / en tykkää. Vaikka nuo esineet sisältävät satoja sivuja tekstiä, niin vain marginaalisen pieni osa tästä tekstistä tulee käännetyksi puhuttavaan muotoon - ellei kirja ei vetoa johonkin sellaiseen tulkintarepertuaariin, joka on lukijalle erityisen tärkeä.

Puheet: Puheen valmisteleminen on asian kääntämistä puhuttavaan muotoon puhtaimmillaan.