15.11.2016

Vuoden 2016 OfficeAbroad kokosi 22 matkaajaa auringon alle ja tulokset ovat kovia

Perjantaina lähtö oli kirpaiseva 3.15 Tampereen toimiston pihalta. Yksi noukittiin matkan varrelta Hämeenlinnasta ja loput tulivat suoraan kentälle. Heraklionin kentälle päästiin klo 11, josta ajeltiin 75 kilometriä viiden auton letkassa kohti Eloundan huvilakompleksia.
office_abroad_overview

Avointa lähdekoodia ja parempia prosesseja

office_abroad_airport

Elounda tervehti Geniemin tiimiä 16.9. lämpimällä ilmalla. Villa Infinity ja Villa Emotion, jotka olivat voittaneet Kreetan vuoden 2016 parhaan huvilan palkinnon, toivottivat matkaajat tervetulleiksi. Tämän blogin lisäksi lisää fiiliskuvia reissulta löytää meidän some-seinältä, Instagramista ja Facebookista.

IMG_8942

Tämän vuoden agenda oli panostaa yhdessä tekemisen prosessien helpottamiseen. Ensimmäinen päivä meni paikkaan tutustumisessa. 12 makuuhuoneen ja kahden Villan muodostama kokonaisuus oli labyrintinomainen ja tuntui että täällä saa olla viikon, ennen kuin oppii löytämään tiensä oikeaan paikkaan.

office abroad_brief

Ensimmäisenä päivänä Tuomas toivotti porukan tervetulleeksi ja kertasi mistä tällä reissulla on kyse. Puhuttiin mikä meille on firmana tärkeää ja mitä haluamme saavuttaa vuodelta 2017. Tämän jälkeen porukka jaettiin tiimeihin. Yksi tiimeistä ahkeroi asiakasprojektien kanssa ja muut keskittyivät pääosin firman sisäisten prosessien ja devauskäytäntöjen kehittämiseen. Tavoitteena oli myös julkaista mahdollisimman paljon tuotoksista avoimen lähdekoodin alla firman GitHub -tilille.

IMG_3083

Päivät alkoivat klo 10.00 aamupalaverilla Villan ulkoilma-amfiteatterissa ja päätettiin klo 20 päivän tuotosten läpikäyntiin. Tiimit saivat itse päättää työskentelyaikansa ja moni kävikin meressä uimassa, ottivat aurinkoa ja pitkiä lounaita, ja tekivät taas illemmalla töitä. Sunnuntaina ja keskiviikkona pidettiin vapaata, jolloin käytiin Spinalongan saarella, tutustuttiin Kreetan vuoriston sykkyräteihin, tippukiviluoliin ja otettiin muuten vaan rennosti biitsillä. Monet ruokapaikat tulivat tutuiksi ja ehdittiinpä yhdessä syömään BBQ-illallinen paikallisen teurastajan lihoista ja viereisessä Despina Tavernassa.

Best Practices ja ensimmäinen kaupallinen WordPress-plugin

Pienimmät ”tiimit” olivat yhden hengen tiimejä. Otto keskittyi viemään eteenpäin firman devauskäytäntöjä. Ville S. keskittyi viemään maaliin meidän ensimmäistä kaupallista kommentointiplugaria WordPressille. Kommentointilaajennus on jo käytössä asiakkaidemme sivustoilla ja tehty DustPress -ympäristöön. Nyt tarkoitus oli portata laajennus myös PHP:lle, jolloin sitä voidaan käyttää ilman DustPressiä.

IMG_3262

Kommentointiplugari ottaa huomioon sekä perinteiset WordPressiä käyttävät sivustojen ylläpitäjät, jotka haluavat kommentoinnista plug-and-play-tyyppisen ratkaisun, sekä vaativampia ominaisuuksia halajavat devaajat. Perussivustoille tarjotaan helposti käyttöönotettava lisäosa, joka toteuttaa hyvällä käyttöliittymällä varustetun ajaxoidun kommentoinnin blogeihin ynnä muihin sivustoihin. Devaajille paketista löytyy kaikenlaisten välimuistiratkaisujen kanssa yhteensopiva helposti laajennettava ja tyyliteltävä kommentointi. Yksi merkittävä eriäväisyys esimerkiksi WordPressin omaan kommentointiin on mahdollisuus lisätä yhdelle sivulle useita ajaxoituja kommentointilomakkeita ja -listauksia, joista jokainen muodostaa ikään kuin oman sovelluskokonaisuutensa.

Jatkuvan julkaisun Pipeline-ympäristö

Onni veti Geniemin jatkuvan julkaisun Pipeline alustan kehitystä. Yhtenä tavoitteena oli saada aikaiseksi velho, jonka avulla uuden WordPress-projektin (myöhemmin myös muiden projektien, esim. nodejs) aloitus olisi suoraviivaista ja nopeaa eikä tarvitsisi ladata projektin vaatimia osia eri paikoista ja tehdä käsityönä projektipohjiin asiakaskohtaisia konfigurointeja.

office_abroad_meeting

Ville P. teki gdeviin uuden komennon, jonka avulla voidaan pystyttää tuotantoympäristöä vastaava paikallinen WordPress-kehitysympäristö antamalla komennolle tarvittavat tiedot parametreina. Komento voidaan ajaa myös interaktiivisena syöttäen kysytyt tiedot komentorivillä. Oletusasetuksia varten tehtiin oma YAML-konfiguraatiotiedosto. Käytännössä komento lataa kehittäjän koneelle githubista WP-project pohjan, tekee siihen tarvittavat asiakaskohtaiset konfiguroinnit, asettaa ympäristömuuttujat ja lataa dustpress-boilerplate teeman. Tämän jälkeen asentuu WordPress ja halutut lisäosat. Ajon jälkeen annetaan kehittäjälle paikallinen https://projektinnimi.test osoite, jossa kehittäminen voi alkaa ja näytetään ohjeet kuinka projekti luodaan, kuinka lisätään tarvittavat resurssit MySQL ja Redis Docker containereita varten ja kuinka deployataan projekti Flynn stage- ja tuotantoclustereihin.

Toinen Pipelinen tavoite saavutettin, kun Kalle Hj. väsäsi Pipeline CI-ympäristön laatutestit. Laatutestit ovat kaksi eri moduulia, jotka mittaavat verkkosivujen nopeutta ja saavutettavuutta. Toteutimme kevyet, nopeasti ajettavat, mutta silti lisäarvoa antavat testikattaukset. Moduulit eivät riipu ympäristöistä ja ne on ajettavissa joka Pipeline-prosessin vaiheessa. Tällöin palaute on nopeaa, eikä toimitusten tekokaan hidastu laadunvarmistuksesta. Näistä testeistä lisää myöhemmin erillisessä blogikirjoituksessa. Testit löytyvät Githubista suorituskykytesti ja saavutettavuustesti.

Node.js, Sails.js, ja isomorfinen React.js yhdistetty Silverbullet-kehikkoon

Office_abroad_silverbullet

Olemme jo tehneet useita Node.js / React.js projekteja. Silverbullet syntyi tarpeesta luoda Sails.js MVC-kehyksen ja React-kirjaston avulla isomorfinen kehys, jolla voidaan aloittaa SPA-tyyppisten web-sovellusten kehitys nopeasti sekä front- että backendin osalta.

Sails.js mahdollistaa nopeiden enterprise-tason Node.js-sovellusten kehityksen käyttäen tuttua MVC-mallia Rubyn tai Grailsin tapaan. Sails.js:n avulla voidaan esimerkiksi luoda datamallit nopeasti sekä REST API:a varten tarvittavat kontrollerit tehokkaasti. Backendin osalta Silverbulletiin on toteutettu valmiiksi käyttäjän tunnistamiseen tarvittava toiminnallisuus (AuthController, SessionController sekä UserController).

Front-endin eli React-osuuden toteutuksessa määritellään sovelluksen käyttämät React-komponentit. Sovelluksen Redux-tilan määrittelyt ovat kansioissaan, kuten myös projektin tyylimäärittelyt, sovelluksessa käytetyt fontit ja kuvat. React-kehyksestä tehtiin myös esimerkkisovellus, jossa hyödynnetään React-Bootstrap -front-end -kehystä.

Redux-toteutus on tehty hyödyntämällä redux-sauce -npm-pakettia, jolloin Redux-määrittelyissä oleva boilerplaten määrä on saatu minimoitua ja käytettyjen reducereiden luettavuutta parannettua. Silverbullet löytyy Githubista.

Käytettävyys ja Design osaksi koko projektia

Design ja UX -tiimi, Geniemin suht tuoreena omana osastonaan, oli kiinnostunut ottamaan selvää, miten muut (eli devaajat) näkevät suunnittelupuolen työn, kokevatko he sen osaksi omaa työtään ja mikä on hyvää ja huonoa nykyisessä tavassamme toimia. Suoritettiin pieni kevytmielinen kysely koko porukalle ja vastaukset olivat mielenkiintoisia. Oli muun muassa selvästi nähtävissä, että porukka jakautuu kahteen leiriin: puolet ovat enemmän kiinnostuneita design ja käytettävyys asioista ja puolet keskittyvät mieluusti vain koodiin. Tästä tietenkin päästään siihen, että vastuita voidaan jakaa paremmin ja kaikille mielekkäällä tavalla.

ux_photo

Toinen teema, joka nousi kyselystä esiin, oli kommunikoinnin ja vuorovaikutuksen tarve. Useampi kirjoitti, että on tärkeää suunnitella ns. kehitysälykkäästi ja kehittää suunnitteluälykkäästi. Toisin sanoen, aina kun suunnitellaan on tärkeä konsultoida devaajaa ja aina kun devataan, on tärkeää että konsultoidaan suunnittelijaa. Tähän ollaankin pyritty, mutta aina on parantamisen varaa. Parhaaseen lopputulokseen pääseminen vaatiikin vastuunottoa paitsi tiimitasolla myös yksilötasolla. Jokaisen pitää muistaa itse kävellä suunnittelijan tai devaajan pakeille rutiininomaisesti omaan työhön kuuluvana tapana toimia.

Myyntiprosessin kehitys

Myyntitiimi lähti hiomaan tarjousprosesseja ja tarjouksissa vaadittavia materiaaleja. Tavoitteena oli nopeuttaa sekä systematisoida tarjousten tekemistä jolloin uusiin tarjouspyyntöihin pystytään vastaamaan entistä tehokkaammin. Saimme kasaan erittäin hyviä ratkaisuja jotka helpottavat tarjouksen rakentamista. Käytännössä pääsimme muutaman askeleen päähän lähes automatisoidusta tarjousmateriaalien tuottamisesta.

Lisäksi linjasimme tavoitteita sekä konkreettisia painopistealueita myynnin kasvattamiseksi kuten markkinoinnin lisäämisen. Asiakkaita emme unohtaneet vaan sorvasimme uusia työkaluja hyödyntäen useita tarjouksia konkreettisesta etäyhteyksien takaa.

All-in-all ja summa summarum, ihan jäätävän hyvä reissu 🙂

Tämä oli toinen OfficeAbroad. Lisää fiiliskuvia reissulta löytää meidän some-seinältä, Instagramista ja Facebookista.