Isot sovelluskehityshankkeet tehdään kuitenkin tiimin/tiimien toimesta niin on vaikea nähdä miten 1 lähes cowboy-koodarimainen tekisi siitä kokonaisuudesta paremman. "Teen tämän yksin koska olen paras" on enemmänkin harhaista ja tiimin koheesiota haittaavaa sekä epäammattimaista. Hyvä sovelluskehittäjä pystyy tuomaan rinnallaan olevista tyypeistä sen parhaan esiin. Kaikkea ei voi osata, eikä voikaan mutta se että osaa myöntää kun ei tiedä ja pyytää apua kun tarvitsee on tähdellistä.
Itse kun toimin konsulttina niin en kyllä allekirjoita alkuunkaan tuota, että "hakataan kasaan jotain paskaa ja jätetään tunkio taakse". Kaiken lähtökohtana on oltava se, että kaikki tekemisen kerrokset on automatisoitu/koodina (infra, CI/CD). Testaaminen ei ole sellainen asia joka jätetään tekemättä, vaan sitä tehdään eri kerroksilla (unit, integration, e2e). Tähän päälle tietysti parikoodaus, code-review ymv:t sen mukaan mikä tiimille toimii. On toki ehdottoman tärkeätä että tiimissä on niitä kokeneita kavereita, mutta lähes yhtä tärkeää on että siellä on muutama ei-niin-kokenut. Noissa tilanteissa kokeneemmat saavat keskittyä niihin haastavimpiin ongelmiin, ja tavallaan isompaan kuvaan - kuitenkin samalla joutuu palaamaan niihin fundamentteihin kun joku asia on opetettava ja selitettävä ymmärrettävällä tavalla hieman juniorimmalle tekijälle. Siinä oppii väkisin itsekin, kun toinen kysyy ehkä jotain mitä ei ole tullut ajatelleeksi tai toisesta näkökulmasta. Kyllä se kaikki tämä lähtee ammattiylpeydestä ja intohimosta tähän tekemiseen.
Kammoksun koko "sankarikoodari" "rockstarakoodari" jne.. nimityksiä, noissa on sivuutettu tyystin se miten kuitenkin 99% maailman softasta saadaan toimivasti maaliin: tiimityönä ja asiakasta unohtamatta. Usein se hybris huokuu yli ja kaikki mitä asiakas sanoo on aina väärin, teknisesti, eikä edes yritetä ymmärtää sitä isompaa kuvaa ja tarvetta. Siinä on paljon mahdollisuuksia vaikuttaa siihen, että asiakas saa mitä haluaa. Se mitä on järkevä tehdä, mikä toimii asiakkaalle, on myös usein
lähellä sitä mitä asiakas on pyytänyt, mutta meillä ammattilaisina on myös kykyä kertoa jos asian voi tehdä paremmin toisella tavalla. Oli se "paremmin" sitten helpommin ylläpidettäväksi, täyttää 95% tarpeista 50% työmäärällä, sopii kokonaisarkkitehtuurin paremmin, tuo paremman lopputuloksen, tässä kohtaa on oikeasti järkevä panostaa enemmän jne...
Olen työskennellyt monien loistavien sovelluskehittäjien kanssa, ja kyllä meillä kaikilla on silti omat heikkoutemme niiden vahvuuksien lisäksi. Tämän takia hyvä tiimi on paljon enemmän kuin osiensa summa - tiimillinen huippukoodareita ei välttämättä ole paras ratkaisu [Google].
Usein jo se, että on selitetty miksi eri ratkaisut on valittu(ja mitä tradeoffeja tähän liittyi) säästää todella paljon aikaa.
Pragmatic programmer kirjaa voi myös suositella ihan varauksetta. Jos tietää niin nopea lukea, mutta hyvä kerrata. Jos ei tiedä niin aikalailla oleellista olisi tietää.
Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of mod...
www.goodreads.com
Tässä tulikin hyvin asiaa, mutta tuo Pragmatic Programmer on omasta mielestä kertaluokkaa parempi kuin Clean Code.