Mistä ohjelmoija on tehty?
Tässä artikellissa käsittelemme kysymystä, mistä hyvä ohjelmoija on tehty? Hyvän koodarin löytäminen on tärkeää bisneksen kannalta ja yritämme hieman valottaa, mitä koodari tekee tai yleensäkään osaa tehdä.
Itseopiskelu vai koulu – mistä ohjelmoija saa pätevyyden?
Ei ole yhtä ainoaa, oikeata vastausta kysymykseen: mistä löytyy hyvä ohjelmoija. Hyvä koodari voi olla vasta yliopistosta valmistunut tietojenkäsittelytieteiden maisteri tai dippainssi. Koodari voi myös olla itseoppinut nörtti, joka hallitsee jo uusimmat tekniikat ennen kuin koulussa edes on kuultu niistä. Aina pelkkä tekninen pätevyys ei riitä. Ohjelmoijan täytyy osata tietokonekielen lisäksi puhua “asiakasta”, esittää suunnitelmansa johdonmukaisesti ja lopputuloksen täytyy olla asiakkaan hallittavissa.
Mitä hyvä ohjelmoija osaa?
Tämä on hieman sama kysymys kuin kysyisi, mitä kasveja puutarhuri osaa kasvattaa tai mitä ruokia ammattikokki osaa tehdä. Jokaisella on tietenkin omat vahvuudet ja suositukset. Tietysti sillä on hitunen vaikutusta, mistä ohjelmoija on itse kiinnostunut. Perusasioiden ja -tekniikoiden ollessa kunnossa hyvä ohjelmoija osaa kuitenkin tehdä melkein mitä vaan. Kyse ei ole ulkoa opituista koodaustaidoista vaan kyvystä soveltaa loogista ajattelua arjen käytännön ongelmiin.
Hyvä koodari osaa puhua asiakkaan kieltä
Ensimmäinen ongelma: asiakas ei ymmärrä, mistä koodari puhuu
Tämä saattaa kuulostaa itsestäänselvyydelta. Voin vakuuttaa, ettei asia ole suinkaan näin. Moni ohjelmoija on teknisesti pätevä ja hallitsee monia tekniikoita. Tunnin neuvottelun jälkeen asiakkaan kanssa asiakas ei olekaan yhtään viisaampi siitä, mitä hän on siis ostamassa, millä hintaa tai edes miksi.
Toinen ongelma: ohjelmoija pätee käyttäen liikaa ammattisanastoa
Muutamat koodarikaverit joskus ihmettelivät, miksi käytämme suomenkielisiä ilmauksia ammattisanastolle ja selitetään asiat auki. No juuri siksi, että asiakkaalla on oikeus tietää, mitä on ostamassa! Hienojen sanojen käytön – eli suomalaisittain lausuttujen englannin kielen lainasanojen, joita ei vain osata tai viitsitä suomentaa – sijaan kerrotaan mieluummin, mitä asiakasta on oikeasti saamassa.
Ratkaisu: asian sanominen niin yksinkertaisesti, että kaikki tietävät, mistä ohjelmoija puhuu
Tietysti voin kertoa, että nyt tietokanta vaatii utf-8 merkistön konvertoinnin, edessä on tietokantamigraatio, jolla on vaikutusta uptimeen ja palvelimelle pitäisi laittaa ssh private key tietoturvan parantamiseksi jne. Tämän jopa suurin osa asiakkaista ymmärtäisikin, kun on simppeliä kieltä. Ennemmin kuitenkin kerron, että nykyinen järjestelmä ei tue oikeanlaista ääkkösten ja erikoismerkkien käyttöä. Sen vuoksi haluaisimme tehdä muutoksen, jonka yhteydessä siirrämme tietokannan eri palvelimelle, mikä aiheuttaa lyhyen käyttökatkon. Samalla päivitämme tietoturvaa.
Mistä kielivalikoimasta pitäisi ohjelmoijan osaamisen koostua? Python, Java, PHP vai JavaScript?
Todennäköisesti kyllä. Usein koodarilla on kuitenkin pari suosikkikieltä, joilla helpoiten lähtee toteuttamaan projektia. Lähtökohta projektille kuitenkin on miettiä, mikä kieli soveltuisi projektiin parhaiten. Mikäli kyseessä on mobiiliapplikaatiota, silloin ehkä kannattaa harkita Javaa tai Kotlinia, jotta saa tehtyä natiiveja Android appeja.
Jos kyseessä on taas jokin koneoppimista vaativa ohjelmisto, ehkä silloin paras ratkaisu voisi olla Python. Python-kielessä on paljon valmiita kirjastoja, minkä vuoksi puheentunnistus, kohdennettu markkinointi ja kuvankäsittely onnistuu hetkessä.
Kielenä PHP on ollut paljon käytössä web-suunnittelussa, REST-rajapinnoissa ja vastaavissa. Monia sisällönhallintajärjestelmiä ja opetusalustoja, kuten WordPress ja Moodle, on toteutettu PHP:llä. Kielen ehdottomia hyviä puoli on, että sillä saa tehtyä nopeasti koodia ja kirjastoja löytyy hyvin.
Web-ohjelmoinnissa täytyy myös huomioida frontend eli se osa sivustosta, joka näkyy asiakkaalle. Asiakas ei todennäköisesti ymmärrä sivuston taustaprosesseista mitään. Asiakasta kiinnostaa, että lomakkeet näyttävät hyviltä, sivusto toimii nopeasti ja siellä on pientä grafiikka ja animoituja ominaisuuksia. Tähän auttaa, että HTML, CSS ja jQuery-perusteet ovat hallussa.
No miten se koodari nyt yhtäkkiä näitä kaikkea osaa? No ei välttämättä osaakaan. Kyse ei ole siitä, että kaiken osaa tehdä ulkomuistista vaan osaa lukea kuhunkin koodauskieleen liittyviä referenssejä. Kun osaa muutamaa peruskieltä, loppujen kielten syntaksi on helposti lähellä muita. Kun ymmärtää logiikan, millä ohjelma toteutetaan, kielellä ei ole niin väliä. Koodarin on hyvä kuitenkin tuntea useamman kielen perusteet, jotta projektin kannalta osaa valita parhaimman mahdollisen kielen.
Taitava ohjelmoija osaa tehdä aika-arvion
Ison projektin aikatauluttaminen on usein haastavampaa kuin pienen. Tämän vuoksi usein projektipäällikkö ottaa vastuun kokonaisaikataulusta ja jakaa projektin pienempiin osatehtäviin. Parhaassa tapauksessa tehtävät ovat erittäin selkeästi jaettu pieniin osioihin, jotka on nopeaa toteuttaa.
Pienet kokonaisuudet voi heittää suoraan ohjelmoijalle, kunhan ne ovat sisällöltään selkeät. Riittää, että projektipäällikkö on tehnyt esim. mallikuvan, minkälaisen sähköisen lomakkeen asiakas haluaa. Lisäksi kuvaukseen on lyhyesti kerrottu lomakkeen oikeellisuuden tarkistaminen tai En ole robotti -toiminnon käyttö. Tästä on helppo heittää aika-arvio, että lomake saadaan julkaisuun parissa tunnissa.
Onko ohjelmoija kallis, halpa vai edullinen?
Tämä riippuu siitä, mitä tarkoitetaan. Jos joku mainostaa tuottavansa halpaa koodia, mielikuvaksi piirtyy lopputuote, jonka käyttäjältä lentää ärräpäitä. Joskus tuntihinta voi olla halpa, mutta niin on myös työn laatu ja ulkonäkö.
Koodarin tuntihinta voi olla myös kallis silloin, kun tuotteen toiminnallisuus määrittelyä ei saada kohdalleen eikä koodari ymmärrä, mitä asiakas todellisuudessa haluaa. Tähän tietysti tarvitaan väliin projektipäällikkö selittämään koodarille asiakkaan tarpeet ja asiakkaalle koodarin tarpeet. Näin matalalla tuntihinnalla toimiva koodari voikin tulla yllättävän kalliiksi, kun projektiin menee paljon odotettua enemmän aikaa.
Sanoisin edullisen koodarin olevan sellainen, joka saa aikaan tulosta, mutta tuntihinta on kohdallaan. Jokainen itseään kunnioittava edullinen koodari haluaa saada aikaan hyvää ja toimivaa jälkeä. Hyvä koodari osaa myös huomioida tuotteen käytettävyyden ilman, että asiakkaan pitää joka välissä pyytää siihen korjausta. Tietysti myös saavutettavuus on tämän päivän avainsana, jotta kaikilla on yhtälainen mahdollisuus tuotteesta hyötymiseen.
Me olemme pyrkineet pitämään meidän tuntihinnoittelun kohtuullisena. Uudet yrittäjät ja startup-firmat ovat lähellä sydäntä, minkä vuoksi olemme tehneet myös projekteja alle normaalin hinnoittelun, jos aikataulut ovat vain antaneet myötä.
Opiskelu koodariksi
Olemme mielenkiinnolla seuranneet viimeaikaisia uramahdollisuuksia kehittyä koodariksi. Esillä on ollut kymmenen kuukauden kursseja, mistä ohjelmoija saa jo sellaiset perustiedot, että voi alkaa kehittyä työnohessa lisää. Nämä kurssit lupaavat valmistaa koodarin. Nämä ovat varmasti toimivia ratkaisuja, kunhan vain koodariksi ryhtyvällä on loogista ajattelukykyä, englannin kielen osaamista ja jopa hiemen sinnikkyyttä.
Nyt on tarjolla myös laadukkaita, avoimia ja ilmaisia verkkokursseja kaikille, jotka ovat kiinnostuneet ohjelmoinnista. Jos et halua palkata koodaria vaan tulla itse sellaiseksi, suosittelen tutustumaan mooc.fi-sivuston tarjontaan.