Written by Joanna Derks
Software engineer
Published August 11, 2015

Confessions of a back-end developer

Change is a nasty little thing. It starts with a call to adventure, and the more you ignore it, the more it nags at you.

I was a happy back-end developer dreaming her life in C#. I came to like the predictability of developing APIs. I even had my truce with Windows.

Then I decided it was time for a change.

$ New job at Schibsted Tech Polska
$ Part of the innovation team – prototyping new solutions for Norwegian newspapers
$ FOO: undefined
$ Day 30 + 1

Diving in

Google, my dear friend, please tell me how to create a new empty document in the shiny OS X environment. Or how to take a screenshot for that matter. Or where the hell the hard drive is!
I come to think that Finder is a really misnamed counterpart to Windows Explorer on Mac. With all the amount of researching required to actually use it, Conqueror would probably be a better fit.

It is a curious form of comfort to take as I learn the new operating system that Mac is at least in one way consistent with my Windows experience – it can hang just as hopelessly, albeit so much less often.
Here I am, with a Mac on my desk, glowing expectantly with the full energy of its 15 inch Retina display; and the subconscious feeling of uncertainty I’ve not come to feel since I’ve learned to write my first lines of SQL.

Designing faster horses and older whiskey

An orange red rectangle on the dashboard is flashing danger at me: I’ve just got a Wercker notification about our build going to production. Well, at least it was trying to go to production. I would bet it’s the box being temperamental again and I’m feeling lucky. Let’s apply the first rule of the IT crowd and turn it on and off again.

In case you were wondering – fear not. This production box doesn’t really serve any real users yet – and no, not only because it’s down. Well, aside maybe from some stray loners who find the first fifteen pages of search results sheer boring. I’m sure though those individuals would enjoy a well thrown 500 at the end of a hard day, preferably with the full stack trace to feast upon.

Life is not perfect and in that respect our services are very much a part of life. Welcome to the innovation team: a place to try out new things, experiment, break, fix. Maybe break a couple times more. Assess and adopt. Stabilise, release and watch the impact. Or move on.
Nice and simple. And horrifyingly awesome.

That’s what we do with a drunken sailor

The server bounce fixed the production deployment by the way. It happened back then when our services were still hosted on Heroku.
Offering a free option for experimenting it looked like a very suitable platform to get us started. As we got to know it better though, the not so bright sides of the little PaaS kept surfacing. Especially annoying was finding out time and time again that Heroku decided to let our applications sleep when there was no traffic. If you’ve ever done an iisreset on Windows Server and then tried waking up the app, that’s what it felt like. Only here it happened pretty much on every request.

It’s a happy coincidence then that after the first two weeks of enjoying the unexpected, the services were thrown into the Ocean. The Digital Ocean. Since then our applications have been happily paddling in the waves, wrapped up safely in their docker containers.

It’s a great thing when the whole development and release lifecycle belongs to the team. I’m still feeling a bit lost between the Docker commands fired up live in the command line, Dockerfiles lying around in the projects and Docker-compose yml-s, but the team always comes to rescue. The advantages are unmistakeable – a clean setup of the local environment as well as a smooth deployment process.
And only on the rare occasions when image incompatibilities arise, deep down in my soul I wish there was a Photoshop for Docker images.

Despite the challenges with Heroku’s behaviour, I was amazed by its feature set combined with its ease of use. It was a welcome surprise to find out that Dokku, Heroku’s younger brother, was available to oversee our applications on Digital Ocean.

Because we like red M&Ms better than the yellow ones, from experience

So, would we say we’re DevOps or a node.js / javascript / html team?

Heroku, Digital Ocean, Dokku, Docker. Throw in sentry (in python) on top of that for error monitoring and our awesome dashboard for a general service health stats – I’m glad you asked, that one is in Ruby. With my team mates tinkering with React and fluxible, css and sass preprocessors.
I guess meanwhile I developed a still easily shaken sort of acceptance of the fact that there are 50 gazillion thousands different libraries out there for every and any problem a developer may or may not face or even just imagine in their whole life. That documentation is a rare if not dying breed.
Coming from a world where there used to be guidelines and strong preferences on which libraries to choose for which purpose, in the node.js and related worlds the process resembles more of an experience of flying kites in the middle of a thunderstorm.

Just as the modularity of the ecosystem, also the actual design and programming of applications in javascript requires at least a 105 degrees shift in thinking.
It’s absolutely challenging but it carries a certain kind of appeal.

So. Python, ruby, node.js and others – it’s been a pleasure to have you on board and don’t take it the wrong way if the team happened to be a 100 miles away from you before long. Because as the saying goes, and from my brief experience I can say that it applies to the innovation team in particular, the only constant is a change.

Written by Joanna Derks
Software engineer
Published August 11, 2015