10x-ohjelmoijat ovat nykyään kuuma keskustelunaihe ohjelmistoteollisuudessa, joten ajattelin, että olisi hyvä idea jakaa näkemykseni tähän liittyen.
Hon rehellisesti sanottuna en tiedä tarkkaa määritelmää 10x-ohjelmoijalle, mutta oletan, että sillä viitataan hypertuottaviin ohjelmoijiin (mikä ei välttämättä kuvaa täsmälleen 10-kertaista tuottavuutta, mutta merkittävää tasoa lähelle 10-kertaista tai jopa yli 10-kertaista).
Pohjautuen muutamaan menestykseen, joita minulla oli toimittaessani erittäin suuria ohjelmistoja startup-yrityksille ja yrityksille, sekä työkokemukseeni muutaman huippuluokan kehittäjän kanssa, voin jakaa joitakin näkemyksiä tästä aiheesta.
10x-ohjelmoija silloin
20-30 vuotta sitten kehitetyt ohjelmistot olivat toiminnallisuuden, tietoturvan, suoritustehon ja skaalautuvuuden osalta paljon yksinkertaisempia nykyaikaisiin ohjelmistoihin verrattuna. Toisaalta tuohon aikaan oli saatavilla vain kourallinen kirjastoja tai kehyksiä, joilla kaikki toiminnallisuudet voitiin toteuttaa.
Siten 20-30 vuotta sitten kirjoitettuihin ohjelmistoihin liittyi huomattava määrä ohjelmointityötä.
10x-ohjelmoijan määritteleminen tässä yhteydessä on verrattain helppoa. Ero 10x- ja tavallisten ohjelmoijien saman toiminnallisuuden toteuttamiseen käyttämän ohjelmoinnin ydinpanostuksen välillä.
10x-insinööri nyt
Ennen kuin menemme tarkempiin yksityiskohtiin, tehdään yksi asia selväksi: ohjelmistokehitys on monitahoinen prosessi, ja ohjelmointi on vain yksi osa-alueista, joilla voidaan myötävaikuttaa nykyaikaisten ohjelmistojen kehittämiseen.
Koska sekä kuluttajat että organisaatiot käyttävät ohjelmistoja yhä enemmän, erityisesti Internetissä, ohjelmistot ovat hyvin monimutkaisia, ja saattaa olla järjetön päätös rakentaa jotain tyhjästä. Rehellisesti sanottuna, ellei kyse ole täysin uudesta alustasta tai käyttöjärjestelmästä, nykyaikaisten ohjelmistojen kehittämiseen tarvittava ydinohjelmointi on vähemmän intensiivistä verrattuna vanhempiin ponnisteluihin.
Vaikka ohjelmointitietämys ja -panostus on edelleen hyvin tärkeää, suurenmoisen ohjelmiston (virheettömän, turvallisen ja myytävän) rakentamiseen tarvittava panostus on insinöörityössä.
Nykykontekstissa siis 10x ohjelmoija ei ehkä tuo paljon arvoa alalle, mutta 10x insinööri luo hyvin laajan vaikutuksen kehitysprosessiin.
Lisään tähän vielä omat 3 senttiäni.
1. He käyttävät työkaluja parhaalla mahdollisella tavalla
Ohjelmistokehitys on monitahoinen prosessi, johon liittyy paljon erilaista työtä. Koodauksen lisäksi siihen liittyy ponnisteluja prosessin dokumentoinnista tietojen muotoiluun, lokitietojen lukemisesta raporttien lähettämiseen, automaattisesta testauksesta manuaaliseen testaukseen, monimutkaisesta virheenkorjauksesta ongelmien manuaaliseen tutkimiseen ja niin edelleen ja niin edelleen.
Tästä valtavasta ponnistuksesta voidaan tehdä erittäin tehokas käyttämällä oikeita työkaluja ja alustoja (jotka sopivat asiakkaan budjettiin ja muihin rajoituksiin).
Editorit
Ohjelmiston kirjoittamiseen liittyy yksi tai useampi editori, joista osaan viitataan myös nimellä IDE (Integrated Development Environment). Nykyaikaiset IDE:t, kuten Visual Studio tai Eclipse, tarjoavat suuren määrän toimintoja, jotka tekevät kehittäjistä tuottavia, mutta merkittävä osa näistä ominaisuuksista ei ole useimpien kehittäjien tiedossa.
Suosituissa IDE:issä on myös kaupallisia ja ilmaisia liitännäisohjelmia (kuten Resharper), jotka mahdollistavat vieläkin suuremman kehittäjän tuottavuuden.
IDE:n lisäksi myös muut editorit, kuten NotePad++, MarkdownPad jne. ovat erittäin hyödyllisiä asiaankuuluvassa yhteydessä.
Apuohjelmat ja verkkopalvelut
Hyötyohjelmat ja verkkopalvelut, kuten suurten lokitiedostojen lukeminen tai etsiminen, http-debuggerit, kuten Fiddler, build- ja käyttöönottotyökalut jne.
Omat työkalut
10x-insinöörit tekevät myös omia työkalukokonaisuuksiaan suorittaakseen toistuvia toimintoja, joihin sopivia ohjelmistoja ei välttämättä ole saatavilla ulkopuolelta.
Vaikka ohjelmistokehitystalon yrittäjät eivät näytä olevan kiinnostuneita panostamaan paljoakaan kehittäjille tarkoitettuihin työkaluihin, mutta oikeanlaisten työkalujen käyttäminen mahdollistaa yllättävän paljon tuottavuutta.
Ohjelmistokehittäjille, jotka ovat kalleimpia palkattavia henkilöitä, kannattaa käyttää rahaa oikeisiin työkaluihin.
.net-kehittäjätiimin vetäjänä ASP.NET Core & Visual Studion aloitusmallin kehittäminen uusimpia .net-koodauskäytäntöjä noudattaen auttoi tiimiäni nostamaan kokonaistuottavuuden kolminkertaiseksi.
2. He eivät keksi pyörää uudelleen
Ohjelmistoteollisuudesta on tullut hyvin kypsä kolmen viime vuosikymmenen aikana. Lähes jokainen ongelma, jonka kehittäjät yrittävät ratkaista koodaamalla, on ratkaistu ja on saatavilla API:ina (joko binäärisinä tai verkkopalveluina), joista osa on kaupallisia ja osa ilmaisia.
Lisäksi avoimen lähdekoodin kehykset tarjoavat myös suurta joustavuutta API:n taustalla olevan käyttäytymisen ymmärtämiseen tai mukauttamiseen käyttäjien tarpeen mukaan.
Ennen kuin hyppäävät ohjelmointiin, 10x-insinöörit todella varmistavat, ettei tätä ongelmaa ole ratkaistu kokonaan (tai osittain) aiemmin, tai jos on, niitä ei ole saatavilla käytettäväksi.
3. He kirjoittavat (jatkuvasti) kauniisti suunniteltua koodia
Hienojen ohjelmistojen kirjoittaminen edellyttää hyvän arkkitehtuurin määrittelemistä, joka ei ainoastaan noudata hyviä suunnittelumalleja ja -periaatteita vaan myös hyödyntää nykyaikaisia infrastruktuureja. Hyvin suunnitellun koodin tuottaminen ei ainoastaan mahdollista uusien toiminnallisuuksien kirjoittamista nopeammin, vaan se myös vähentää virheitä merkittävästi.
Mutta kaunis suunnittelu vaatii jatkuvaa parantamista.
Olen nähnyt ammattiurani aikana yllättävän paljon huonolaatuista koodia erilaisissa ohjelmistoprojekteissa, mikä lisää jatkuvasti teknistä velkaa. Yksinkertainen projekti, joka aloitettiin 5 vuotta sitten, on täynnä suunnittelematonta rumaa koodia ja vaatii 20+ ihmistä hoitamaan kehityssykliä (jossa he käyttävät 80 % ajastaan oikeasti vikojen korjaamiseen).
Yksi tärkeimmistä syistä tämän hirvittävän tilanteen taustalla on havaintojeni mukaan ”pelko”.
Organisaatiot, erityisesti yrityskokonaisuudet, pelkäävät useimmiten muutosta.
Ohjelmistokehitys on uskomattoman nopeasti muuttuva tieteenala työkalujen, kehysten ja tekniikan osalta, ja se vaatii jatkuvaa muutosta päästäkseen oikeaan paikkaan.
Muutos on pelottavaa, mutta se ei ole niin vaarallista kuin miltä se kuulostaa, varsinkaan ohjelmistoteollisuudessa (oikeilla työkalu- ja henkilösarjoilla). Mutta jos sitä ei tehdä odotetulla tavalla, ei kestä kauaa, että projekti hylätään jonain päivänä kokonaan.