Pari sanaa koodauksen perusperiaatteista

Pari sanaa koodauksen perusperiaatteista

touko 6, 2021 Johanna Kainulainen Teknologiat

Kysyimme kokeneilta asiantuntijoiltamme heidän näkemyksiään ohjelmistokehityksen perusperiaatteista; nimittäin testauksesta, "puhtaasta koodista" ja tiimityöskentelyn merkityksestä. Aslanilla, Tuukalla, Evgenialla, Mingfengilla ja Teemulla on yhteensä 65 vuotta työkokemusta ohjelmistokehityksen parissa, joten nämä konkarit tietävät mistä puhuvat.

Miksi testaus on tärkeää? 

Aslan, Projektipäällikkö

Täydellistä koodia ei ole olemassakaan. Huolellisella suunnittelulla voidaan vähentää mahdollisten virheiden määrää todella paljon, mutta tästä huolimatta on aina mahdollista, että koodiin päätyy virheitä.  Suunnitelma ja määrittely on aina alustava speksaus ja käytännössä kun koodin kanssa työskennellään, pitää se sovittaa ohjelmistoon tai ympäristöön kiinni.

Kun näitä sovitetaan yhteen niin voi tulla uusia dynaamisia tilanteita mitä ei suunnitelmissa otettu huomioon ja testit sitten nappaavat nämä toivottavasti kiinni ennen kuin koodia on vielä viety tuotantoon. 

Yksikkötestit, testisuunnitelmat ym. toimii myös ikään kuin "ilmaisena" suunnitteludokumenttina. Tulevat kehittäjät voivat lukea nämä läpi ja saada siitä lisäkontekstia ohjelmiston toiminnallisuuksiin. 

Tuukka, Senior Developer 

Testaus on tärkeää, että koodin toimivuus on määritelty. Testien päälle onkin sitten paljon helpompi tehdä muutoksia niin, että koodi toimii vielä muutosten jälkeenkin. Itse voin myös oppia muiden tekemistä yksikkötesteistä, mitä toteutuksen kuuluisi tehdä, kunhan kyseiset testit on myös hyvin tehty. 

Mingfeng, Senior Software Developer & GIS master

We are humans and we all make mistakes. And testing is one of the most effective and cheap way to help us to avoid most mistakes. It's nearly impossible to know everything or get everything right on day one of a project, so changes to the software are inevitable. Tests give developers more confidence to make changes and developers can constantly improve the software without worrying about introducing more bugs to software. One of the good practices in software development is to refactor mercilessly, which is only possible with relentless testing and continuous integration.

Evgenia, Senior Developer 

Kehittäjänä testit auttavat minua jokapäiväisessä työssä. Oma työni on vähemmän stressaava, jos projektissa on laadukas testaus. Silloin voin rauhallisin mielin luottaa, että tuottamani koodi ei riko olemassa olevia toimintoja. Siksi on myös tärkeä kirjoittaa hyviä testeja omille uusille toiminnoille, jolloin myös omat mahdolliset loogiset virheet paljastuvat. 

Teemu, Test Manager

Testauksen tärkein tehtävä on kasvattaa luottamusta. Luottamusta siihen, että olemme toimittamassa liiketoiminnan asettamia tavoitteita, luottamusta järjestelmän vakauteen sekä luottamusta siihen että tämäkin lisäys järjestelmän toimintaan todellakin rokkaa!

Pidä mielessä:

Laadukkaan testauksen avulla koodia uskaltaa tuottaa ilman pelkoa siitä, että koko dominorivi (lue: järjestelmä) kaatuisi. Testaus lisää järjestelmän vakautta ja tukee ohjelmistokehittäjän työtä. 

Toimistossa

Miksi ns. puhtaan koodin kirjoittaminen on tärkeää? 

Aslan, Projektipäällikkö

Selkeästi muotoiltuun koodiin on helpompi saada useampia silmäpareja katselmoimaan mahdollisien virheiden varalta. Kauniista koodista on myös helpompi löytää virheet itse. Ihmisten on helpompi tehdä yhteistyötä kun koodi on siistiä ja noudatetaan yhteistä tyyliä koodin kanssa. Yleensä siisti koodi on myös helpompi uudelleen käyttää. 

Tuukka, Senior Developer 

Koodin ymmärtäminen, muokkaus ja sitä myöten ylläpito on helpompaa. 

Pahimmillaan koodista voi tulla sellainen sillisalaatti, että kehittäjä ei itsekään enää parin kuukauden päästä muista miksi teki noin tai mitä yritti tehdä. Kannattaa jättää kommentti omaan koodiinsa, että muistaa mitä sen piti tehdäkään. 

Mingfeng, Senior Software Developer & GIS master

It's very important to understand that code is for humans, but not for computers (the code needs to be compiled to 0s and 1s in order to be understood by the computer). Developers need to express their intentions clearly and easy to understand to make it possible for other developers and for themselves (people forget things) to make changes or fix bugs in it. This is also one important way to make it easier to change the software. If you cannot understand something, you cannot change it.

Evgenia, Senior Developer 

"Clean code" on helppo lukea, ylläpitää ja onhan se kaunista katseltavaakin. :) Useimmiten kirjoitamme koodia johonkin projektiin, jolloin on aika varmaa, ettet ole ensimmäinen etkä viimeinen, joka lukee sitä. Laadukas koodi on myös ammattiylpeyttä ja kunnioitusta projektin tulevia kehittäjiä kohtaan. 

Teemu, Test Manager 

Kuten likainen pyykki, myös likainen koodi haisee. Kirjaimellisesti, varsinkin jos hyödynnät Sonarqubea DevOpsin toimintamallin pohjana. Puhdas koodi on ymmärrettävää, virheettömämpää ja helpommin myös toisten sisäistettävissä. 

Pidä mielessä:

Kuten siivoaisit vessanpöntöstä käytön jäljet, kunnioitat myös koodatessa toisia käyttäjiä. Koodaus on tiimityöskentelyä ja kuten kirjoittajan itse, myös muiden on syytä saada selvää kädenjäljestä.    

Aslan Venejoki

Mikä tiimityöskentelyssä on tärkeää? 

Aslan, Projektipäällikkö

Harvat jaksavat siirtää kokonaista vuorta yksin, mutta porukassa se voi tuntua jo mahdolliselta. Tiimiltä saa henkisen tuen lisäksi teknistä apua virheiden selvittämisessä. Luovassa työssä, kuten ohjelmoinnissa on hyödyllistä, että saa välillä kommentteja toisesta perspektiivistä. Ongelmiin on usein monia eri ratkaisutapoja ja tiimityössä yleensä näitä pääsee workshoppaamaan. 

Tuukka, Senior Developer

Koska kaksi tai useampi silmäpari on parempi kuin yksi. 

Mingfeng, Senior Developer & GIS master

Software development can be hard sometimes and collaboration within a team help solve difficult problems. Exchanging ideas between the team members can help come up with more creative ways of doing things. It also creates more opportunities to learn from each other.

Evgenia, Senior Developer 

Henkilökohtaisella tasolla tiimi on mahtava paikka kasvaa ihmisena sekä ammattilaisena. Projektin näkökannalta on selvä, että yksi ihminen ei voi joka paikkaan taipua. Tiimi jossa kommunikaatio pelaa, on hyvä työasenne ja kunniotus toisia ryhmän jäseniä kohtaan voi saavuttaa hienoja asioita. 

Teemu, Test Manager 

Tiimityöskentelyllä on kaksi kriittistä näkökulmaa, sosiaalinen ja ammattillinen. Sosiaalisessa mielessä tiimi tarjoaa mahdollisuuden vaihtaa ajatuksia ja nauruja tiimikavereidesi kanssa ja ammattillisesti tiimikaverit ovat tukemassa jatkuvaa oppimista ja yhdessä tekemistä. 

Pidä mielessä:

Koodaaminen on luovaa ajatustyötä ja silloin tällöin silmäpari jos toinenkin tuo hyödyllistä perspektiiviä. Vahva tiimi tukee toisiaan ja täydentävät niin toistensa heikkouksia kuin vahvuuksia. Rehellinen ja reilu viestintä on arvoa luovan tiimin a ja o. 

Teemu Selkälä