Opettele ensin HTTP

Tämä blogikirjoitus on tuntemattomasta syystä, luultavasti tarpeettoman itsekritiikin takia julkaisematta jäänyt luonnos vuodelta 2010. Koska se on täysin sellaisenaan ihan validi tänäänkin, niin julkaisenpa sen nyt.

Jos pitäisi antaa yksi neuvo aloittelevalle web-ohjelmoijalle, niin se olisi ehdottomasti: opettele ihan ensimmäisenä tuntemaan HTTP.

Erityisesti tänä Ajax-sovellusten aikakautena on äärimmäisen tärkeää osata seurata ja tulkita HTTP-liikennettä normaalin kehitystyön aikana tai kun selvitellään miksi web-sovellus toimii väärin. Jos et tiedä miten teet tämän, et oikein voi kutsua itseäsi web-ohjelmoijaksi.

URI, statuskoodit, Content-Type, välimuisti- ja proxymekanismit ja keksien toiminta ovat ensimmäisenä mieleen tulevia tärkeitä HTTP:n osasia. Ei riitä, että osaat nämä käyttämäsi sovelluskehyksen API:n tasolla.

Kun perusteet ovat hallussa, kannattaa ehdottomasti lukea RESTful Web Services. Se opettaa suunnittelemaan verkkopalvelut niin kuin HTTP on tarkoitettu toimivaksi. Railsin kehittäneen David Heinemeier Hanssonin sanoin:

Every developer working with the Web needs to read this book.

Vaikka kirja voisi olla paremmin kirjoitettu, sen sisältämä filosofia on niin oleellinen, ettei sitä voi jättää lukematta.

Hyvä haastattelukysymys web-ohjelmoijan paikkaa hakevalle voisi olla, että mikä kirjoitusvirhe on päätynyt HTTP-otsikkokentän nimeksi standardiin asti. No ehkä ei, mutta ainakin se on hauskaa knoppitietoa.

Kymmenen vuotta webiä tekemässä – mikä on muuttunut ja mikä ei?

Aika tarkalleen 10 vuotta sitten tänään aloitin ensimmäisessä alan työssäni. Päädyin sattumalta kesätöihin ja jäin sille tielleni. Vielä suurempi sattuma oli, että pääsin heti paikkaan ja seuraan, joka pystyi opettamaan paljon enemmän ja nopeammin kuin mikään koulu ainakaan tuohon aikaan. Se olikin hyvä, koska hädin tuskin osasin ohjelmoida jotain yksinkertaista Visual Basicilla ja HTML:ää osasin juuri ja juuri sen verran että olin saanut aikaan kehyksiä käyttävät kotskasivut.

Edelleenkään ei osata

Paljon on alalla muuttunut sitten. Tuolloin yksinkertaisiakin verkkopalveluprojekteja johdettiin kuin mittavia ja kankeita IT-projekteja oli totuttu vetämään. Tai sitten ei paljon ohjailtu, tehtiin vain mikä hyvältä tuntui, mikä saattoi joskus olla ihan järkevääkin. Rahaa kuitenkin poltettiin uskomattoman tyhmiin asioihin, näin jälkikäteen viisastellen.

Itse tekemisenkin osaaminen oli mitä oli. Valitettavasti osaaminen on edelleen mitä on, mutta on onneksi monelta osin silti kehittynyt. Edelleen ehkä isoin este hyvien verkkopalveluiden tekemisessä on se, että (visuaaliset) suunnittelijat eivät keskimäärin ymmärrä koodia ja ohjelmoijat ymmärtävät hyvin harvoin mitään verkkopalveluista. Pahimmillaan koko paketin vielä konseptoi totaalisen verkkoummikko mainosmies. Tämä lokeroituminen ei ole muuttunut juuri mihinkään ja on ehkä jopa pahentunut, osittain varmaan asioiden monimutkaistumisen takia. Ne, ketkä menevät tai ovat menneet tässä vastavirtaan, ovat tai tulevat olemaan voittajia.

Julkaisujärjestelmät kehittyneet yllättävän vähän

(Liian) monta julkaisujärjestelmää rakentaneena ihmetyttää, miten vähän nekin ovat tässä ajassa kehittyneet. Kankeita ja vaikeakäyttöisiä monstereita oli jo tuolloin ja niitä on edelleen, entistä pahempia suorastaan. Naapurin pojan heppoisia viritelmiä on nyt lukumääräisesti enemmän, mutta onneksi sentään ne ovat viime aikoina alkaneet karsiutua.

Uskon, että Ruby on Railsin kehittänyt David Heinemeier Hansson oli vuonna 2005 oikeassa, väittäessään että yleiskäyttöinen julkaisujärjestelmä on mahdoton unelma ja Railsin ja Djangon kaltaiset työkalut ovat ratkaisu. Yleiskäyttöisen julkaisujärjestelmän kuolemaa en silti ennusta. Vanhaan kirjoitukseen “The general-purpose CMS (pipe dreams, part II)” ei valitettavasti voi syvälinkittää ja sen olennainen linkkikin on rikki, joten vaikka nyt mennään vähän aiheesta ohi, niin tässä se kokonaisuudessaan. (Alkuperäinen juttu löytyy arkistosta etsimällä vaikka sanalla “CMS”.)

The general-purpose CMS (pipe dreams, part II)

As t approaches zero, people will realize that many types of software are non-sensical in their generalized form. I believe the time has come to mark a date in the not too distant future for celebrating the death of the general-purpose content management system.

In many ways, I believe it was always a pipe dream. Sort of like the high-level components that the industry has always sought. Or model-driven architecture/CASE tools. I believe all these fantasies can be summarized in a correlation of price and delusion:

The more expensive it is to create fresh software, the more appealing the mirage of generalization will appear.

And I think we’ve already seen the rise of its replacements for smaller segments of generalities. The blog is a much more specialized, much better alternative for a large group of problems that where previously considered content management. The same for the wiki.

We need even more narrow tools. While it’ll never reach zero, t is aiming enough in that direction to expose the fraud of ultimate generalization. So don’t accept the label of content. Nobody produces content. People write reviews, people write news, people write articles, people exhibits photos.

Try to realize, there is no content.

Toisaalta, ensimmäinen julkaisujärjestelmäni jostain vuodelta 2001 olisi edelleen ominaisuuksiensa puolesta ihan riittävä erittäin monelle saitille, jos vain syötteitä osaisi julkaista, eikä takuuvarmasti olisi vaikea käyttää. Paljon omia vanhoja visioitani on toteutumassa WordPressin seuraavassa 3.0-versiossa, joten ehkä toivoa myös ihmisille sopivilla, valmiiksi paketoiduilla julkaisujärjestelmillä on.

Tänään pilvipalveluilla kelvollisen verkkopalvelun tai -kaupan pieniin tarpeisiin ottaa käyttöön jopa ilman asiantuntijoitakin ja hassua kyllä lopputulos on usein monella tapaa paljon parempi kuin jos saman projektin menee tilaamaan isosta IT-talosta räätälityönä. 10 vuotta sitten lopputulos oli melkein poikkeuksetta susi ja GeoCitiesiä kummempia hostattuja palveluita ei tainnut juuri olla.

Liiketoiminta, jatkuva kehittäminen, optimointi ja analytiikka

Uusi liiketoiminta verkossa on kuin mikä tahansa muu uusi liiketoiminta: on erittäin vaikea nähdä ennalta, mikä toimii ja mikä ei. Siksi on kummallista katsella, kuinka lyhytnäköisesti verkkoliiketoimintaa usein kehitetään.

Alustaa valittaessa aliarvioidaan usein räätälöitävyyden merkitys. Kun tehdään oikeaa verkkoliiketoimintaa, on jokaisen pienenkin asian ketterällä säätämismahdollisuudella saavutettavissa todellista kilpailuetua. Homma ei ratkea niin, että kahden–kolmen vuoden päästä ostetaan toinen järjestelmä. Oikeasti räätälöitävät, mutta silti huimaa tuottavuutta tarjoavat sovellusalustat, kuten Django, Rails tai niiden lukemattomat jäljitelmät ovat tässäkin mielessä paljon nykyistä useammin oikea vastaus kuin monet julkaisujärjestelmät.

10 vuotta sitten täysin räätälöityjä saitteja tehtiin paljon nykyistä enemmän. Silloin yleisin virhe oli se, että kaikki tehtiin alusta asti itse, ja vieläpä moneen kertaan. Nyt yleisin virhe on se, että valmiiden tuotteiden liian pitkälle rajatut toimintatavat eivät jousta tarpeeksi, jotta pikkumuutokset olisivat tarvittavan kustannustehokkaita. Käyttäjät siis pannaan edelleen kärsimään, mutta eri syistä. 10 vuotta sitten tosin nuo ongelmat oli edes mahdollista korjata, mikäli asia tarpeeksi harmitti.

Optimointi alana on luonnollisesti sitten vuoden 2000 ottanut valtavia harppauksia, mutta outoa kyllä varsin harvassa ovat ne tahot, joilla optimointi tai analytiikan aito hyödyntäminen on oleellinen osa liiketoimintaa. Jopa ne tahot, jotka tekevät isoa liiketoimintaa verkossa Suomessa, tyytyvät seuraamaan lähinnä kokonaiskävijämääriä ja ovat vähän säätäneet etusivun titleään. Pitkälle ei valitettavasti ole päästy vuosituhannen alun GIF-hittimittareista ja avainsanaspämmistä.

Konseptit ja design

Verkkopalvelut ovat sisällöllisesti parhaimmillaan jotain ihan muuta kuin kymmenen vuoden takaiset meilläkin on verkkolehti -konseptit, mutta edelleenkin keskimäärin varsin ylhäältä alas tyhmälle kansalle -henkisiä. Sosiaalisesta tai yhteisöllisestä puolesta kyllä ollaan kiinnostuneita, mutta uskon, että lopullinen muutoksen aalto on vasta tulossa.

10 vuotta sitten muuta verkkoläsnäoloa ei ollut olemassakaan kuin oma saitti. Korkeintaan bannereita osattiin käyttää liikenteen ohjaamiseen. Tarve verkkopalvelulle tulee jatkossakin olemaan, mutta läsnäolo verkossa ei ole enää siitä kiinni ja on levittäytynyt paljon entistä laajemmalle.

Paljon on muuttunut myös web design. CSS:n yleistyminen on muuttanut niin sivujen koostoa kuin itse ulkoasujakin kahdeksan pikselin huonokontrastisesta fontista ja laatikkoleiskoista vapaampiin ja ilmavampiin tyylikkyyksiin.

Sivuja luettiin keskimäärin alitehoisilla koneilla, 800×600-resoluutiolla ja hitaalla modeemiyhteydellä. Kaikkialla läsnä olevasta Internetistä ei ollut tietoakaan, vaan sinne meneminen oli kokonaan oma rituaalinsa. Nämä tosiseikat oli liiankin helppo unohtaa, kun webiä tekevät eivät juuri kärsineet näistä rajoitteista ja tämä johti usein keskimääräiselle kävijälle lähes käyttökelvottomiin sivustoihin. Edelleen keskimääräinen yhteysnopeus unohdetaan, mutta ongelma on huomattavasti vähemmän dramaattinen.

Mennyttä

Noilta kymmenen vuoden takaisilta ajoilta kaipaan eniten sitä iloa, intoa ja ylpeyttä, mitä ala tuolloin itsestään löysi. Nyt tekeminen ei keskimäärin tunnu olevan enää niin hauskaa vaan paljon kaavamaisempaa ja virastomaisempaa. Rohkeaa yrittämistäkin onneksi on, mutta ryppyotsaisuutta on silti aivan liikaa.

Mutta mennyt aika ei palaa. On tämä intternet edelleen hienointa, mitä voisin kuvitella työkseni tekeväni.