Wouti 0.1

Henkilökohtainen koodausspurttini pääsi ensimmäiseen etappiinsa. Sain Woudin ensimmäisen version julkaisukuntoon, ja se löytyy osoitteesta wouti.fi. Phew.

Wouti
Tiesin alusta saakka, että en ole tekemässä kirjanpitosoftaa. Koko tuotteen ydinajatus on, että on tärkeämpää seurata kassaa mieluummin tonnin tarkkuudella kuin eurolleen – yksittäisten hilujen seuraaminen on lillukanvarsiin takertumista, kun tavoitteena on huolehtia kassan riittävyydestä. Tämä tarkoitti toisaalta sekä senttien jättämistä laskelmista, että tarkastelun rajoittamista vain viikkotasolle päivätason sijaan. Koska olen pyöritellyt saman tuotteen raakaversiota Google Docsissa jo monta vuotta, itselleni oli aika selkeää miten asioiden tulisi toimia.

Tuotteen lanseerausta hidasti hieman se, että kirjoitin koko softan kerran uusiksi. Tämä tapahtui siksi, että ensimmäisellä kerralla en ihan vielä tajunnut miten tietorakenteet olisi kannattanut tehdä. Toisella kerralla syvennyin myös enemmän TDD-ohjelmoinnin (Test Driven Development) käytäntöihin, mikä tarkoitti tietenkin lisätyötä. Testejä kertyi yli 400 kpl, ja koodia on vain 1/3 testien määrään verrattuna. Versionhallinnan käyttäminen (GIT) auttoi kun pari kertaa tuli kunnon facepalm-hetki.

En halunnut käyttää aikaa muuhun kuin itse ydinasiaan. Ylläpito on Herokussa, jolloin on paljon vähemmän huolia ylläpidon suhteen. Itse wouti.fi -sivusto on Google App Enginessä (sama homma, ei ylläpitohuolia), maksuliikenteessä käytän Stripea (joka on tajunnanräjäyttävän helppokäyttöinen ja turvallinen kokonaisuus – luottokorttitiedot eivät edes käväise oman palvelimen kautta) ja support-ticketit menevät ZenDeskin kautta.

Kenelle Wouti on tehty?

Wouti sopii parhaiten kasvuhaluisille yrityksille, joilla on jo palkkalistoillaan joitain työntekijöitä ja joiden kuukausittaiset tulot ja menot vaihtelevat sen verran että pelkkä takapuolituntuma ei enää riitä. Woudin avulla saa vähän tavallista enemmän mielenrauhaa, kun näkee visuaalisesti kassan tilanteen.

Mitä seuraavaksi?

Nyt Wouti on siinä kunnossa, että sitä voi käyttää ydinongelman ratkaisemiseen, eli kassavirran hallintaan. Listalla on paljon kehitysideoita, ja lisää voi ehdotella. Seuraavana valmistuu useamman käyttäjän tilit ja alvien automaattilaskelma.

Toivottavasti mahdollisimman moni suomalainen yritys ottaa Woudin käyttöön! :)

Valitsin ohjelmointikielen logon perusteella

Kun kerroin opettelevani koodaamaan, sain vähän vaihtelevaa palautetta. Osa ihmetteli, enimmäkseen hämmästeltiin. Pari ruojaa jopa antoi ymmärtää, että paree olisi jos keskittyisin vain toimaroimaan. Hah! Samalla logiikalla voisi sanoa, että toimarin ei kannata opetella kirjanpitoa tai mitään muutakaan. En uskonut.

En osaa ohjelmoida millään ohjelmointikielellä edes keskikertaisesti. Se on myös vahvuuteni. Tylysti todettuna voisi sanoa, että olen sen verran uuvatti, etten ole oppinut vielä aivan kauhean huonoja tapoja joista pitäisi kovalla vaivalla hankkiutua eroon. Mielessäni oli kyllä selkeä kuva erilaisten ohjelmointikielien parhaista ja huonoista puolista (on todella opettavaista kuunnella koodarien henkistä pissauskilpailua parin oluen jälkeen).

Ruby
Pitkällisen – noin puoli päivää kestäneen – harkinnan jälkeen päädyin valitsemaan ohjelmointikieleksi logon perusteella Rubyn ja frameworkiksi Ruby on Railsin. Toki katselin muitakin vaihtoehtoja: Java haisi liikaa isojen monoliittyritysten maailmalta, Pythonin asentamiseen onnistuin tuhraamaan liikaa aikaa (taas), PHP:tä en haluaisi kosketella enää ikinä ja Node.js on tyypillistä JavaScript-oksennusta.

Iso syy Rubyn valitsemiseen oli myös Linda Liukas. Ohjelmointikielen valinneet ihmiset kertovat paljon itse ohjelmointikielestä. Kaikkien muiden ohjelmointikielten ekosysteemit ovat kauhean äijämäisiä. Ruby ja Ruby on Rails ovat ainakin marginaalisesti vähemmän sitä itseään.

Tykkään myös Rubyn filosofiasta. Ruby on ohjelmointikielenä suunniteltu vähäisimmän hämmennyksen periaatteella (käänsin itse, anteeksi), eli ohjelmointikieli on suunniteltu mahdollisimman ymmärrettäväksi ja ennen kaikkea, kivaksi. Yukihiro Matsumoto, Rubyn kehittäjä kertoo syntyprosessista:

Often people, especially computer engineers, focus on the machines. They think, ”By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something.” They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.

Ohjelmointikielen valinnan jälkeen oli aika käydä hommiin. Sen sijaan että olisin vain juossut nettiin etsimään uusimpia tutorialeja, hyppäsin Pragmatic Studion RoR-kurssille. Se kannatti. Videopohjainen kurssi kesti pari viikkoa, ja sinä aikana tuli opittua perusasiat. Kurssin lisäksi vetäisin pari Ruby-kirjaa ja sitten siirryinkin mutustelemaan testipohjaisen ohjelmointimetodiikan saloja. Stack overflow on myös tullut tutuksi.

Ja miltä nyt tuntuu? Hyvältä. Kirjoitin Woudin ihan itse, ja sitten kirjoitin sen uudestaan kun tajusin millaista rapaa olin tehnyt. Nyt sitten hion viimeisintä versiota beta-julkaisukuntoon.

Uusien asioiden opettelu kannattaa aina. Sinäkin voit valita ohjelmoinnin opettelun – tai minkä hyvänsä muunkin uuden asian opettelun – sohvalla löhöämisen sijaan. Mikset aloittaisi jo tänään?

Miksi toimarin pitää osata koodata?

Edellinen tunnustukseni ja siitä seurannut päätökseni on herättänyt hieman hilpeyttä teknologisesti orientoituneessa tuttavapiirissäni. Kriittisempiäkin äänenpainoja on tullut, ja pari on jopa osoittanut selkeitä ahdistuksen merkkejä.

”Miksi sä opettelet koodaamista kun osaat jo pyörittää firmaa?”

Erittäin hyvä kysymys.

Moni näki asian jotenkin (ehkä koodarille tyypillisesti, heh) ehtolauseena. Jos opettelen koodaamaan, se on jotenkin pois toimarin osaamisesta. Jos taas toimaroin, en voi koodata. Maailma on täynnä esimerkkejä teknologisesti osaavista toimitusjohtajista (isojen ja tunnettujen esimerkkien lisäksi esimerkiksi Dropboxin perustaja, joka kirjoitti firman tuotteen ensimmäiset koodirivit junassa matkalla Bostoniin) sellaisiin, joiden suurin teknologinen kontribuutio on ollut printterin tukkiminen (Ali Baban perustaja on opettaja, eikä LinkedInin perustaja ole koodari taustaltaan).

Onneksi todellisuus ei ole ihan niin mustavalkoinen, ja jonkun kompetenssin lisäopettelu ei automaattisesti syö toista.

Miksi toimitusjohtajan kannattaa sitten osata koodata?

  1. Teknisen kehityksen haasteita ja tradeoffeja on helpompi ymmärtää, ja pystyy tekemään valistuneempia päätöksiä.
  2. Paskapuhemittarin kalibrointi. Yleensä aivan käsittämätön työmääräarvio paljastuu puutteellisesta kommunikaatiosta johtuvaksi virhearvioinniksi, ja tällöin kauppa voi lipsahtaa helposti ohi ylihinnoittelun vuoksi.
  3. Asiakkaan liiketoimintaongelmiin pystyy tarjoamaan parempia ratkaisuja. Sen lisäksi asiakastarpeiden kommunikointi yrityksen sisällä on helpompaa.
  4. Myyminen on kustannustehokkaampaa. Mitä vähemmän tarvitsee käyttää yrityksen kehittäjien aikaa tarjouspyyntöjen lanaamiseen (ethän vain tee tarjouksia kysymättä asiantuntijoiltasi?), sitä enemmän heillä on aikaa ja energiaa tuottavan työn tekemiseen.
  5. Koodaaminen on hyvää aivojumppaa. Kuten kirjoittaminenkin, koodaus pakottaa ajattelemaan asioita abstraktioiden kautta, jolloin kokonaisuuksia ja syy/seuraussuhteita on helpompi ymmärtää.

Pitäisikö toimarin sitten olla firman paras koodari? Ei todellakaan. Jos toimari on firman paras koodari, firma on aika nopeasti entinen firma. Entä pitäisikö toimarin tehdä tuottavaa työtä? Tarvittaessa. Toimarin homma on muutenkin lanata kaikki ritilän välistä tippuvat tehtävät, joten riittävästä osaamisesta on vain etua. Onko se sitten parasta mahdollista ajankäyttöä? Ei välttämättä. Toimarilla on koodailuakin tärkeämpiä velvollisuuksia, erityisesti tällaisia ovat markkinointi, myynti, erilaisten prosessien hallinta ja rekrytointi. Niistä ei voi lipsua edes siksi, että koodailu tuntuu kivalta.

Mistä kulmasta asiaa sitten katsookaan, koodaamisen opettelusta on vain hyötyä. Ehkä kysymys ei olekaan pitäisikö toimarien osata koodata, vaan pitäisikö koodarien osata toimaroida?

Kaikki kirjoitukset löytyvät blogiarkistosta.