Bytecraftin syyskuu 2020

Terveisiä Itä-Pasilasta! Täällä Suomen IT-pyhätössä on hyvä olla. Virastot hehkuvat syksyn harmautta parhaimmillaan ja sade pieksee ikkunaa. Noh, todellisuudessa syyskuu oli hieno kuukausi, niin keleiltään, kuin meillä Bytecraftillakin. Itä-Pasila on siltikin kyllä harmaa.

Ajateltiin raottaa lisää näkyvyyttä siihen, mitä se arki Bytecraftilla tarkoittaakaan. Tehdään tietysti kovasti koodia. Tosissaan testataan ja berkuleesti buildaillaan, diiviiseen tahtiin deployaillen. Mutta kaiken tämän asiakastyön lisäksi, meillä on tapahtunut muutakin innostavaa ja tulee tapahtumaan jatkossakin. Siksi tässä ensimmäinen “virallinen” kuukausikatsaus Bytecraftin ja bytecraftilaisten sielunmaisemaan. Mallimerkinnältään syyskuu.

Muutto uusiin tiloihin

Entinen toimistomme sijaitsi osoitteessa Opastinsilta 8 5B, Helsinki. Nykyinen toimistomme löytyy osoitteesta Opastinsilta 8 5A, Helsinki. Teimme rohkean loikan naapurirappuun. Mutta voi veljet, loikka kannatti. Pari pientä huonetta vaihtui hulppeisiin ~140 neliön tiloihin. Meiltä löytyy nyt kaikenlaisia tiloja: neukkari, “daily-koppi”, mukavan kokoinen työhuone, pari omaa vessaa ja keittiötilat. Ja sokerina pohjalla pirun mukavan kokoinen auditorio-tila ja siinä sivussa lisää työskentelytiloja. Siirryimme siis jaetuista tiloista tälläisiin ikiomiin toimistotiloihin. Ehkä parasta antaa kuvien puhua puolestaan tässä, luultavasti parempi kuin n+1 sanaa.

Sohvalta käsin bytecraftilaista toimistomaisemaa
Yleiskuvaa auditoriosta
Sohva eli olohuone
Kirjakerhon varastotilat
Neukkari
Koronaturvalliset työvälit levittivät työpöytiä myös auditorion puolelle
ATK-asiantuntijat hommissa

Vielä on tilat hieman tyhjillään ja toimistosta ei prameita pintoja, kuten jalopuuta, löydy muuten kuin IKEAN mdf-levyn muodossa. Mutta mitä tällä kaikella tilalla sitten tehdäänkään? Ainakin sillä voimme näin korona-aikana taata kaikille toimistolla työskentelijöille reippaasti omaa tilaa ja turvavälit. Tulevaisuudessa tilat varmasti palvelevat myös erilaisten tapahtumien ja esitysten parissa sekä kasvavan väkimäärän palvelemisessa. Eli ytimekkäästi, nyt löytyy kunnon tukikohta. Täällä on sitten hyvä keskittyä esimerkiksi meille tärkeään päämäärään: jatkuvaan oppimiseen. Tästä kulttuurista esimerkkinä pari seuraavaa osuutta syyskuun ajalta.

Perjantaipöhinä

Perjantaipöhinä (englanniksi Lé fredags buzz extraordiniere) on termi meidän Bytecraftin perjantai-iltapäiville. Käytännössä tämä tarkoittaa klo 14 alkavaa virallista gettogetherriä. Tämä, jo traditioksi noussut tapahtuma, on ollut käynnissä jo koko vuoden 2020, mutta on syytä antaa sille näkyvyys. Aiheina tälle n. 2h ajanjaksolle ovat esimerkiksi:

  • Käydä läpi firman virallisempia tiedotuksia (jos niitä kyseiselle viikolle on)
  • Käydä läpi jokaisen bytecraftilaisen viikkokuulumiset, niin projektiin liittyvät kuin muutkin
  • Sellainen 1h - 1,5h aika varattuna oppimiselle ja teknisille läpikäynneille, esimerkiksi:
  • Vapaamuotoista tech talkkia tai tekkivideoita
  • Presiksiä
  • Hands-on koodailua
  • Perjantaipullon arvonta ;D

Aina ei mennä ihan täysin tällä sapluunalla, mutta pääpiirteittäin pöhinä koostuu noista osa-alueista. Syyskuun osalta voisi nostaa muutaman tärkeimmän teknisen aiheen pöhinöistä:

Funktionaalinen ohjelmointi

Funktionaalisesta ohjelmoinnista käytiin materiaalia läpi parinakin perjantaina. Ensimmäisessä sessiossa läpikäntiä vapaana keskusteluna - mitä kokemuksia bytecraftilaisille on kertynyt tämän parissa. Toiset meistä ovat funktionaalisen ohjelmoinnin parissa työskennelleet enemmän kuin toiset, mutta mielipiteitä ja näkemystä löytyi kaikilta. Perustajamme (overcrafter, yli-sorvari) Jani on esimerkiksi kova hehkuttamaan Clojurea, joten tässä oli hyvä hetki kertoa sen iloista. Myös Juha, toinen ensimmäisistä osakkaista, on kovan luokan kokemuksen omaava, JVM:n laajalla tuntemuksella marinoitu, devaaja, jolla on näkemystä ja kokemusta funktionaalisesta ohjelmoinnista enemmänkin. Häneltä on hyvä kysyä, kun jokin funktionaalisen ohjelmoinnin osa-alue askarruttaa. Henkilökohtaisesti nostin esille, etten ole esimerkiksi yhtään “puhtaan” funktionaalisesti koodailtua bäkkärisoftaa nähnyt. Tästä vastareaktiona Juha kätevänä kaverina koodailikin meille hienon esimerkin seuraavalle viikolle.

Funktionaalisen ohjelmoinnin pöhinä PT.2 osuudessa kävimme läpi Juhan esimerkin kautta perinteistä Kotlin-Springboot kerroskakku-sovellusta, joka oli pilkottu funktionaalisein opein eri muotoon. Tästä presiksestä voisi tiivistää sen, että horisontaaliset kerrokset kakussa olivat hälvenneet ja tilalle oli tullut enemmänkin kakunpalasia muistuttavia rakenteita, joissa yksittäinen tiedosto sisälsi sitä ihanaa kakkupohjaa, täytettä, sekä päällystettä ja koristeluakin funktioiden muodossa. Suora Spring-bean pohjainen dependency injektio oli muuttanut muotoaan function composing:ksi.

Spock

Toinen nosto pöhinöistä on viime perjantain hands-on koodailusessio Spock -testiframeworkin parissa. Tämä sessio oli meikäläisen käsialaa. Kävimme ensiksi noin 10min hieman teoriaa ja motivaatiota tämän Spock-tyylisen testailun takana. Motivaatiosta yhtenä nostona esimerkiksi: noin puolet devaajista ei pidä yksikkötestamisesta. Omalla kokemuksella sanoisin, että tuokin luku saattaapi olla kaunistellun oloinen. Lyhyen pohjustuksen jälkeen katsoimme läpi muutamia erilaisia esimerkkejä aidosta projektista. Tämän jälkeen itse kukin pääsi testailemaan muutamia erilaisia toiminnallisuuksia ja kokeilemaan esimerkiksi Spockin tapaa tehdä mockausta ja testien parametrisointia.

Varastan vielä lyhyen saarnauspuheenvuoron tässä yhteydessä Spockista. Jos Spock ei ole entuudestaan tuttu, lyhyesti tiivistäen, se on paras JVM-pohjainen yksikkö ja integraatiotesti-framework (toimii myös toki hyväksymistestailuun). Disclaimer: Kyseinen lausahdus saattaa sisältää hieman henkilökohtaista mielipidettä mukana.

Hyvän testin kaksi tarkoitusta on 1. varmistaa toiminnallisuus ja 2. kuvata toiminnallisuuden osa-alueet. Näihin kahteen seikkaan Spock toimii erinomaisesti. Sillä on helppo teknisesti verifioida toiminnallisuutta ja samalla tuottaa “elävää spesifikaatiota” testattavasta koodista.

Tässä esimerkki yhdestä spock-testistä, jottei tarvitse pelkän mielikuvituksen varassa operoida:

Kirjakerho

Joka keskiviikko kokoonnumme ~30min ajaksi keskustelemaan syviä kirjallisuuden parissa. Emme vielä ole käyneet läpi Seitsemää veljestä tai Tuntematonta sotilasta, vaan olemme keskittyneet softakirjallisuuteen. Tämän tradition aloitimme siinä n. huhtikuun tietämillä. Luemme aina kappaleen verran etukäteen ja sen jälkeen mielenkiintoisia keskusteluita sen sisällöstä & aiheen vierestä. Ensimmäisenä kirjana siivutimme lävitse 20-vuotispainoksen Pragmatic Programmerista. Tämä se vasta oli hyvä teos ensimmäiseksi kirjakerhon kirjaksi, sillä aihealueita kirjassa oli laidasta laitaan. Yhteenvetona hyvä kirja, mutta ei ehkä aivan vasta-alkajille.

Tällä hetkellä kirjakerhossamme käsitellään Domain Driven Design Made Functionalia. Alkuun teoksessa on käyty melko tiiviiseen tahtiin DDD:n periaatteita läpi korkeammalta tasolta ja nyt on alettu sukeltamaan enemmänkin siihen, kuinka toteuttaa se funktionaalisesti F#-kielellä. Niin DDD kuin funktionaalinen ohjelmointikin ovat meillä Bytecraftilla sellaisia vakiomielenkiinnon kohteita, joten tästä kirjasta on kyllä syntynyt loistavia keskusteluita. Niin suoraan käsiteltävän luvun sisällöstä, kuin hieman aiheen vierestäkin. Kirjakerho on yksi ehdottomasti parhaita 30 minuutin hetkiä joita voi käyttää tämän jatkuvan oppimisen tiellä.

Ja siinäpä se Bytecraftin syyskuusta tärkeimmät tiivistettynä. Palataan tämän kuukausikatsauksen pariin jälleen sitten lokakuun osalta. Sillä välin, jos haluat osaksi tätä yhteisöä, niin avoin haku kovan luokan tekijöille on aina auki: kokenut laatutietoinen ohjelmistosuunnittelija

Ja toisaalta jos haluatte keskivertoa paremmin rakennettua, laadukasta softaa yrityksellesi tai organisaatiollesi, ottakaa yhteyttä: hello@bytecraft.fi.

Haemme uusia kollegoita ja osakkaita! Tutustu palkkaan ja arvoihimme

Uusimmat pohdinnat

Näytä kaikki
Uudet kirjoitukset ja tapahtumat suoraan sähköpostiisi

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form