Vastaamme tänään kysymykseen, joka askarruttaa monia ohjelmistokehittäjien tehtävänkuvia lukevia henkilöitä: mikä oikein on full-stack developer tai full-stack programmer?
Lyhyesti "Full stack programmer" tarkoittaa ohjelmoijaa, jolla on taidot rakentaa ohjelmistoja alusta loppuun.
"Programmer" tarkoittaa ohjelmoijaa, eli henkilöä, joka kirjoittaa tietokoneelle käskyjä sen ymmärtämässä muodossa. Ohjelmoijan tärkeimmät taidot ovat looginen ongelmanratkaisu sekä kyky oppia ja hyödyntää laajoja, valmiita ohjelmistokirjastoja. Ohjelmistokirjastojen avulla valtaosa ohjelmoijan työstä on jo tehty. Työtä toki riittää silti ;)
"Stack" tarkoittaa eri teknologioiden pinoa. Tietokoneohjelmisto koostuu pinosta erilaisia teknologioita, jotka toimivat eri tasoilla. Tyypillisesti ohjelmoijan vastuualueet jaetaan front-end ja back-end -ohjelmoijan taitoihin. Front-end -ohjelmoija vastaa käyttäjälle näkyvästä osasta, kuten napeista, teksteistä ja muusta käyttöliittymän osista. Back-end -ohjelmoija vastaa esimerkiksi tiedon tallentamisesta, hakemisesta, ja ohjelmistologiikasta.
"Full-stack" tarkoittaa front-endin ja back-endin yhdistelmää. Full-stack programmer osaa siis luoda tietokannan, määrittää sille ohjelmistologiikan ja rakentaa käyttöliittymän ja ainakin alustavan ulkoasun. Full-stack developerin osaamiseen ei välttämättä aina kuitenkaan kuulu visuaalinen ja käyttökokemuksen suunnittelu.
*Teknologiapino ulottuu yleensä paljon pidemmälle ja syvemmälle - aina fyysisislle laitteille annettaville käskyille. Valtaosa ohjelmoijista työksentelee kuitenkin korkeamman tason kielillä - ts. ylemmällä logiikan tasolla. Alemmilla logiikan tasoilla käytetään enemmän työtä yksinkertaisten käskyjen antamiseen. Useimmat ohjelmoijista voivat kuitenkin käyttää valmiita ohjelmistokirjastoja alempien tasojen ohjelmoinnin sijaan
Yllä on kuvattu mitä "Full-stack programmer" tekee. Ammatin tärkeimmät taidot eivät ole kuitenkaan oman näkemykseni samat kuin perusedellytykset. Tätä ehkä kuvaakin yleisempi termi "full-stack developer" - ohjelmistojen kehittäjä. Hyvä full-stack developer on erinomainen kommunikoija ja hänellä on hyvä ymmärrys liiketoiminnasta. Full-stack developer osaa siis kääntää käytännön elämän vaatimukset koodiksi, mahdollisesti ohjelmistosuunnittelijan avustamana. Full-stack developerin keskeinen kyky on kokonaisuuden hallinta - ei ehkä niinkään nopeimpien tai muuten parhaimpien ohjelmistojen osioiden teko.
Hyvää suomennosta ei "full-stack developerille", "front developerille" tai "back-end developerille" ole, ja usein suomeksi puhutaankin full-stack devaajasta, frontti- tai bäkkidevaajista. Suorat käännökset olisivat ehkä "koko teknologiapinon ohjelmistokehittäjä", "käyttöliittymän ohjelmistokehittäjä" ja "taustajärjestelmien ohjelmistokehittäjä". Suorat käännökset eivät ehkä kuitenkaan yhtä hyvin kuvaa erotusta frontin, bäckin ja full-stackin välillä.