Category Archives: Ohjelmistokehitys

Peliohjelmoijan osaaminen Part 1 – Kovilla taidoilla kovia tuloksia

peliohjelmoijan osaaminen kuvattu aivolohkoilla, joissa molemmat puolet kuvaavat pehmeitä ja kovia taitoja.

Pelien tekemiseen liittyy usein liittyy harmillisia stereotypioita ja mielikuvia kavereista tekemässä “vähän jotain koodaamista” kaverinsa kellarissa. Todellisuudessa pelien tekeminen on se salainen resepti joka rakentaa osaavimmat ohjelmoijat erilaisiin tarpeisiin. Peliohjelmoijan osaaminen voidaan jakaa sekä koviin teknisiin taitoihin että pehmeisiin, ihmisläheisempiin taitoihin. Tämä ensimmäinen osio keskittyy juurikin ohjelmoijan konkreettisiin, ”koviin” taitoihin.

Kovat taidot/Hard skills

Teknologiat

Tekninen osaaminen pelialan ohjelmoijilla on poikkeuksellisen vahvaa, koska heidän tulee hallita paitsi laitteistot, yleensä myös vähintään kaksi pääasiallista ohjelmointikieltä.

Muutaman pääasiallisen ohjelmointikielen hallitsemisen lisäksi pelejä tehtäessä ohjelmoijien tulee myös tutustua ja hallita useampia teknologioita myös alemmalta tasolta. Alemman tason hallitseminen antaa ohjelmoijille paremman kokonaisymmärryksen koko systeemin toiminnasta kuin mitä perinteinen ohjelmistokehittäjä välttämättä omaa.

Matematiikka ja fysiikka

Peliohjelmoijan osaaminen sisältää teknologisen osaamisen lisäksi myös reilusti laskutaitoa. Ohjelmoijalta vaaditaan erinomaista matematiikan ja fyysikan ymmärtämistä, sillä pelissä toteutetut 3D-grafiikat ja animaatiot ovat haasteellisuudeltaan reilusti perusohjelmoijan vaatimustason yläpuolella. 

Optimointi

Pelien tekemisessä yhdeksi tärkeimmäksi asiaksi nousee myös ohjelmoijan kyky optimoida. Järjestelmien äärirajoille vieminen ja toiminnan ylläpitäminen on jatkuvaa tasapainottelua ja juurikin pelikoodarit ymmärtävät sen, kuinka koodista saadaan puristettu viimeinenkin hyöty irti.

Työmallit ja toimintavat

Pelialalla on usein käytössä ketterät ohjelmistokehityksen työmallit perinteisen vesiputousmallin sijasta. Ketterät menetelmät ovat isossa roolissa kasvattamassa myös ohjelmoijan pehmeitä taitoja, kuten reaktiivisuutta ja ongelmanratkaisukykyä. Toimintatapojen kautta peliohjelmoijien osaamiseen kuuluvat myös toistuvat tottumukset etsiä virheitä (debugging) omista töistään.

Näppäilynopeus

Kyky kirjoittaa rivejä koodeja nopeasti, voidaan nähdä kovana taitona, koska se kehittyy kokemuksen ja harjoittelun myötä. Mitä nopeammin ohjelmoija kykenee tuottamaan tarkkoja koodirivejä, sen tehokkaampi hän on ja näin ollen myös pätevämpi.

Lue tästä myös peliohjelmoijan osaamista käsittelevän blogimme toinen osa koskien ohjelmoijien pehmeitä taitoja: https://zaibatsu.fi/peliohjelmoijan-osaaminen-part-2-pehmeilla-taidoilla-patevaksi/


Ketterä ohjelmistokehitys – miten ja miksi?

”Miten ohjelmistokehitys voi olla ketterää ja miten se eroaa perinteisistä kehitysmalleista?”

Erilaiset kehitysprojektit on perinteisesti toteutettu ns. vesiputousmallin mukaan: ensin tuote määritellään, sen jälkeen suunnitellaan, mitä seuraa toteutus ja viimeisenä testaus. Tällainen jäykästi määritelty ja jaoteltu projektin kulku ei jätä juurikaan tilaa muutoksille, joita yleensä jokaisessa projektissa tulee vastaan. Se tekee prosessista helposti hitaan, kalliin ja tehottoman.

Ketterä ohjelmistokehitys taas tarkoittaa käytännössä kehitysmenetelmiä, joissa lopullista tuotetta tai järjestelmää ei määritellä heti projektin alussa, vaan tuote muotoutuu jatkuvasti projektin edetessä, uusien toiveiden ja parannusten noustessa esille.

Niinpä tuotekehitys on ketterillä menetelmillä paljon joustavampaa ja sopeutuvampaa kuin perinteiset, jäykästi vaiheistetut kehitysmenetelmät.

Nykyään katsotaan ketterien metodien hallitsemisen olevan kriittinen osa ohjelmistosuunnittelijan osaamista ja jopa edellytys projektin laadukkaalle ja tehokkaalle toteuttamiselle.

Esimerkiksi ketterän kehittämisen työskentelymallista käy vaikkapa Scrum.

Scrumin tärkeimpiä piirteitä ovat sen sprintit ja backlog. Sprintit tarkoittavat Scrumissa nopeita työjaksoja, joiden aikana pyritään saamaan aikaan jokin valmis tuotos.

Backlog taas on lista, johon listataan kaikki projektin aloitustapaamisessa keksityt toteuttamiseen liittyvät työtehtävät. Projektin eteneminen ja toteutus tapahtuvat sen jälkeen käytännössä niin, että tehtävät poimitaan backlogista tehtäväksi ja projektia viedään eteenpäin sprintin sovitun keston ajan, jonka jälkeen se esitellään ja siitä kerätään palautetta ja toiveita asiakkaalta. Tämän jälkeen backlogia päivitetään ja luodaan uusia tehtäviä ja ne priorisoidaan uudelleen, minkä jälkeen aloitetaan uusi sprintti.

Oiva työkalu Scrum-työskentelyyn on Trello, joka mahdollistaa digitaalisten tehtäväkorttien luomisen projektitaululle, mistä niitä on helppo ja nopea päivittää ja jakaa kullekin tekijälle.

Miten juniori, keskitason ja seniori- ohjelmoijat eroavat?

Ohjelmistokehittäjistä puhuttaessa puhutaan usein junnuista ja senioreista, ulkomailla väliin mahtuu satunnaisesti “intermediate”-tittelikin, ja kaikki ymmärtävät suurinpiirtein, mistä puhutaan. Tässä artikkelissa tutkaillaan miten ohjelmoijat eroavat toisistaan ja edellä mainittuja termejä hieman perusteellisemmin .

Ohjelmistokehittäjien tasoa määritetään ainakin kahdelta suunnalta. Tarjouspyynnöissä se määrittyy useimmiten kokemusvuosina. Kollegoiden ja esimiesten kannalta oleellisempaa on kehittäjien kyky ratkoa ongelmia ja ottaa vastuuta, sekä se, mitkä teknologiat koodari hallitsee. Näin ollen siis, pelkät kokemusvuodet eivät pelkästään määritä kunkin ohjelmoijan tasoa ja titteli voi heijastaa muutakin kuin virkaikää.

Junioritaso/ Junior Developer

Junioritasolla tarkoitetaan yleensä niitä ohjelmoijia, jotka ovat juuri valmistuneet koulusta ja aloittelevat työelämässä. Yksi yleinen määritelmä on, että junioreita ovat ne devaajat, joilla on alle kaksi vuotta kokemusta ohjelmointityöstä.

Kokemusvuosia osuvampi määrittely junioritasolle on se, että “juniorius” linkittyy kokemuksen lisäksi henkilön tapaan ajatella projekteja sekä tehtävien töiden laajuuteen ja niiden suorittamiskykyyn. Juniorille toimiva koodi ja hyvä koodi tarkoittavan yleensä samaa ja työtehtävinä hän kykenee suorittamaan yksinkertaisia projekteja, nojaten tarvittaessa jonkun apuun ja ohjaukseen.

Keskitaso / Intermediate Developer

Keskitason ohjelmoija on yleensä noin 2–5 vuoden kokemuksen omaava tekijä, joka kykenee ottamaan haltuunsa monimutkaisempia tehtäviä ja laaja-alaisempia projektivastuita. Keskitason ohjelmoija kykenee myös ottamaan kokonaisen projektin vastuulleen, mikäli projekti on suhteellisen pieni.

Keskitason ohjelmoijat voivat olla teknisesti hyvinkin taitavia ja kykenevät ratkaisemaan monimutkaisempiakin ongelmia. Suurin ero keskitason ja junioritason tekijän välillä tulee teknisen osaamisen ja ongelmanratkaisutaidon kehittymisen myötä, kun taas keskitason ja seniorin eroksi osoittautuukin useimmiten ajattelumaailman kehittyminen.

Senioritaso/Senior Developer

Senioritason ohjelmoija omaa lähemmäs 10 vuoden ohjelmointikokemuksen. Senioritason ohjelmoija on oppinut hallitsemaan kehityssyklin ja on myös ekspertti omissa teknologioissaan.

Senioritason ohjelmoija kykenee autonomiseen työskentelyyn sekä ottamaan suunnittelu-  ja delegointivastuuta projektista. Seniori kykenee myös toimimaan mentorina keskitason ja junioritason ohjelmoijille. Seniori on ajattelultaan kehittynyt ja ymmärtää, kuinka kasvulle on aina tilaa ja kuinka hyvä sovellus on sekä toimiva että valmis uudelleen käytettäväksi ja kehitettäväksi.

Senioritason ohjelmoija on myös osaava ja tehokas ongelmanratkaisija. Hän ymmärtää, etteivät kaikki ongelmat ratkea heittämällä koodia sitä päin: sen sijaan seniori osaa ratkoa ongelman työskentelemällä yhdessä tiimin kanssa ja katsoo ongelmaa koodin käytön ja uudelleenkäytön näkökulmasta.

Ohjelmoijan osaamisen neljä keskeistä ulottuvuutta

Stevan Popovic listaa ohjelmoijan senioriteetin keskeiset tekijät ansiokkaassa artikkelissaan ”Arcs of Seniority” seuraavasti:

Siinä kun juniorin täytyy tukeutua useammin toisiin ja kysyä neuvoa, seniori pystyy itsenäisempään työskentelyyn.
Juniorin huomio keskittyy pääasiassa omiin tehtäviin, kun taas seniorin työn vaikutuspiiri on laajempi ja hänen täytyy miettiä myös oman työn vaikutusta toisten työhön.
Juniori koodaa pääasiassa yksittäisiä toimintoja. Seniori osaa ajatella koodiansa enemmän arkkitehtuurina ja rakenteina.
Juniorin harteille annetaan vastuuta maltillisesti, mutta kun osaaminen kasvaa, kasvavat myös auktoriteetti ja annetun vastuun määrä.

Front end tutuksi alle 200 sanan – Lue lyhyt tietoisku aiheesta

Havainnollistaa työntekijämme työtämässä front endiä toimistolla

Vaikka onkin hyvin todennäköistä, että suurin osa blogimme vierailijoista on ennestään perehtynyt frontendin käsitteeseen, koimme silti tarpeelliseksi kertoa lopuillekin, että mikäs ihme se sellainen front end nyt sitten oikein todellisuudessa onkaan. 

Kaikilla verkkosivuilla on yleisesti ottaen kaksi puolta, sekä front end että backend. Nämä tunnetaan myös nimillä selainpuoli ja palvelinpuoli. Frontti eli selainpuoli on tässä yhtälössä kaikki se koodi, joka ajetaan verkkoselaimessa eli käyttäjän silmien edessä ja jonka kanssa käyttäjä voi olla tekemisissä. 

Frontendiä ja sen eri osia voidaan toteuttaa eri ohjelmointikielien avulla. Tällainen ohjelmointikieli on muun muassa JavaScript. Saatat myös törmätä käsitteisiin  “HTML” ja “CSS”, jotka taas ovat merkintäkieliä. Konkreettisena esimerkkinä frontendistä verkkosivulla ovat muun muassa sen rakenne (HTML), ulkoasu (CSS)  ja selaimessa tapahtuvat toiminnat (JavaScript). 

Peukalosääntönä usein asia yksinkertaistetaan juurikin siten, että front end on kaikki ne komponentit, jotka ovat lähellä loppukäyttäjää ja joiden kanssa tämä on tekemisissä,  kun taas front endin vastinpari backend on kaukana loppukäyttäjästä omalla serverillään.

Tässä oli lyhyt tietoisku frontendista! Toivottavasti teksti antoi teille jotain uutta tai toimi vanhan kertauksena!

Lue lisää fronttikehittäjiemme vuokraamisesta täältä: https://zaibatsu.fi/frontend-kehitys/

Lisäksi laajempi selittävä teksti frontin ja backendin eroista: https://fi.sawakinome.com/articles/software/difference-between-frontend-and-backend-3.html