Ohjelmistot vs. bakteerikasvustot

Mielenkiintoinen ajatus nousi aamulla; intuitiivisesti, ohjelmistojen kehityksen nopeudesta.

Ohjelmistot ovat koodia, siis tekstirivejä. Tietysti rivit pitää osata kirjoittaa, eli niillä kuvataan oikeastaan tekoja (algoritmit) ja asioiden välisiä suhteita (tietorakenteet). Käytännössä sillä, mikä alusta tai teknologia valitaan (C, Java, JavaScript, Ruby, Python, …), ei muuta tätä yksinkertaista faktaa.

Kun palikoita on riittävästi laitettu pinoon, jonoon ja kyljelleen, syntyy ohjelmisto.

Alunperin ajattelin pelkästään ohjelmiston kehitystä nosteen ja vastuksen avulla, tästä syntyisi aika helposti se kuuluisa S-käyrä, jossa on kaksi “tasoa”: tukitaso ja katto.

Ajattelin tuollaista S-käyrää, biologista. Biologisen populaation kasvussa on neljä vaihetta:

  1. kasvuolosuhteisiin mukautuminen
  2. kasvun alku
  3. nopean kasvun aika
  4. kantokyvyn saavuttaminen, kasvu pysähtyy

S-käyrä on hieman eri kuin (talouden nousuaikoina, “good times”) käytetty hockey stick, jossa usein kuvataan eksponentiaalista jonkin asian alkukasvua. S-käyrässä ei edes kuvitella, että kasvu olisi ikuista – olettaen ceteris paribus.

Biologisesti esimerkiksi bakteeriviljelmät ovat usein aluksi täysin eksponentiaalisella kasvulla eteneviä. Koska viljelmän kasvu perustuu solun jakautumiseen, ja jokainen solu jakautuu keskimäärin tietyn ajan kuluttua, saadaan sama ilmiö kuin ydinräjähdyksessä: ketjureaktio. Sitten, jonkin ajan kuluttua, kuitenkin bakteeriviljelmässä tulee rajoite vastaan: yksinkertaisimmillaan tuo rajoite voi olla tilanpuute, tai esimerkiksi ravinnon puute. Tai tautien lisääntyminen populaatiossa. Rajoitteet pakottavat tasapainotilan, jossa syntymä ja kuolema ovat yhtä suuria. Näin populaatio ei pääse kasvamaan tietyn määrän yläpuolelle.

(Palaan muuten myöhemmin tähän pieneen nyanssiin; “koon” käsite bakteeriviljelmässä vs. ohjelmistossa)

Analogioita?

Ohjelmistoissa aivan kuten bakteeriviljelmässä alkuunpääseminen on tutun kuuluista:

1. The Lag phase
   During lag phase, bacteria adapt themselves to growth 
   conditions. It is the period where the individual bacteria
   are maturing and not yet able to divide. During the lag phase
   of the bacterial growth cycle, synthesis of RNA, enzymes and
   other molecules occurs. During the lag phase cells change
   very little because the cells do not immediately reproduce
   in a new medium.

Hetkonen? Nyt tuntui tutulta! Mikä vaihe on kyseessä ohjelmistoprojektissa, kun bakteeriviljelmässä tapahtuu ylläolevaa?

Viritän muutamia kysymyksiä seuraavaa osaa varten.

  • jos ohjelmistojenkin kehitys alkaa hyytyä, miksi silti projekteja tehdään usein monien vuosien ajan?
  • onko ohjelmistolla samanlainen absoluuttinen raja kuin bakteeriviljelmällä?
  • miten isoja oikeat ohjelmistot ovat?

Ideoita? Paina kommenttia! Kiitos, ja jatkuu osassa 2.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.