Web developer

Midge

Certhon bevindt in een unieke branche en bouwt veel van haar software zelf. Dit brengt unieke uitdagingen met zich mee, die opgelost zijn door de gekozen software stack.

Offline werken
Een van de meest ingrijpende eisen bij Certhon is dat de apps offline werken. Bij veel internationale project is een goede internetverbinding niet mogelijk. Toch willen we in deze situaties een informatievoorziening bieden. Jaren geleden was de enige oplossing om een native apps te bouwen. Hoewel dit het probleem oploste, bracht het ook een aantal nieuwe uitdagingen met zich mee. Tegenwoordig zijn onze applicaties helemaal web-based en offline werken is daarbij geen probleem meer.

Weinig middelen
Een andere uitdaging bij bouwen van software in-house is dat je het met relatief weinig middelen moet werken en een balans moet vinden tussen kosten en kwaliteit. In theorie loont een automatiseringsproject alleen als de kosten opwegen tegen de baten. Ondanks dat hebben mensen toch vaak hoge verwachtingen door de kwaliteit van populaire alledaagse apps die zij gebruiken.
Daar komt nog bij dat de ontwikkelde software onderhouden moet worden. Om te voorkomen dat alle tijd opgeslokt wordt door de continu groeiende set functionaliteit, automatiseer ik zoveel processen als mogelijk. Dit automatiseren verhoogt ook de kwaliteit aanzienlijk, doordat automatische tests veel menselijke fouten af vangen voordat deze bij gebruikers terecht komen.

Software Stack
Door de jaren heen heb ik redelijk wat verschillende tools, programmeertalen en frameworks gebruikt binnen Certhon. Ondanks dat ben ik moment ben ik erg tevreden met de stack waar we beland zijn.

Frontend
De frontend is een single page app (SPA) gebaseerd op React/Redux. De SPA wordt lokaal gecached door een service-worker. Hierdoor kun je ook offline verder werken, zelfs nadat je de browser gesloten hebt.
Redux voorziet de app van een centrale datastore en maakt het vervolgense ook erg makkelijk om deze data lokaal op te slaan voor offline gebruik. In onze app is het zelfs mogelijk om offline foto’s of video’s te maken, welke later automatisch geupload worden.

Backend
De backend bestaat uit een klein aantal gekoppelde services. We gebruiken geen strikt microservice patroon, wel probeer ik functionaliteit uit te splitsen als het duidelijk losstaande functionaliteit is of de functionaliteit een kritische rol speelt. Zo hebben we bijvoorbeelde aparte services voor authorisatie en het verzenden van opgemaakte, i18n e-mails.
Bijna alle services zijn ontwikkeld met behulp van node.js.

Javascript
Je hebt waarschijnlijk al geconcludeerd dat vrijwel al onze code in javascript geschreven is. Doordat we javascript in zowel front- als backend gebruiken, kunnen we één taal en tooling-set over het hele spectrum toepassen. Daarbij is de online gemeenschap voor javascript ontzettend actief en is er veel informatie en open source software te vinden.
Qua taal is javascript sterk, maar zeker niet perfect. Een van de problemen die ik ervaar is dat het gebrek van strikte types ervoor zorgt dat de complexiteit van codebase niet erg makkelijk schaalt. Daarom schrijven we tegenwoordig al onze code in typescript. Wat deze pijn aanzienlijk verlicht.

Tooling
Als laatste, maar zeker niet als minste: onze tooling. In 2017 heb ik Gitlab en Docker geïntroduceerd om (o.a.) automatisering van onze ontwikkelprocessen mogelijk te maken.
Op dit moment wordt onze software automatisch getest en gebuild. Bij het testen kan een tijdelijke omgeving opgezet worden. Als beide geslaagd zijn, wordt een nieuwe image klaargezet om uit te rollen naar de test- of productie omgeving. Dit laatste is eenvoudig met behulp van ansible.

Software ontwikkelen bij Certhon is uitdagend, maar het geeft ook veel voldoening. Voor de technische uitdagingen krijg je de vrijheid en het vertrouwen om deze naar eigen inzicht op te lossen. Daarnaast ben je ook verantwoordelijk voor het interpreteren van wensen van eindgebruikers en adviseren over een goede oplossing. Je tackelt problemen dus echt van begin tot eind.

Stel hier uw vraag

Direct contact? Bel 0174 225080