When I joined Vainu in the summer of 2020 - in Charles Dickens’s famous preamble: “It was the best of times, it was the worst of times”. My previous employer had just gone belly up and my whole team was looking for new opportunities. As a stroke of luck, Vainu was heavily recruiting senior developers and the tech stack was almost an exact match. By this writing, all but one from that team has worked at Vainu and four of us still do.
After starting working the reasons why Vainu was hiring senior developers became clear quite quickly. Without going into too much detail, let’s just say that both the architecture and the codebase had all the hallmarks of a successful start-up product built by perhaps a bit too junior a group of engineers. That being said, both Vainu and its product were actually successful - the product worked, and the customer loved it. It was a welcome change to having previously worked for quite a few years with products that were top-notch under the hood, but a bit too hard to explain, yet sell.
Vainu's codebase had all the hallmarks of a successful start-up product built by a group of junior developers.
The true silver lining however was that everyone in the Vainu tech knew that something had to be done, and most importantly - quite a few people also had an idea what that something was - and both Pietari and Mikko bought into the ideas. Even in broader terms, Vainu’s “mission” and “vision” are not some lukewarm management jargon. Not only everyone understands what we are doing and why we are doing it, but most importantly has ideas on how we get it done.
For the better part of my first year, we mostly concentrated on repaying the technical debt with the highest interest rates. The technical improvements are too numerous to list comprehensively, but the long overdue migration of the backend codebase from Python 2 to 3, shifting towards an event-driven architecture from “databases and cronjobs all the way”, rewriting of our filter code, and getting rid of some self-hosted databases and Kubernetes clusters are among the honourable mentions.
How to keep the good in the Vainu Tech DNA: lean, agile, and autonomous. And at the same time constantly improve documentation and processes.
After addressing those pressing issues, we started focusing more on the cultural and organizational side of things. About a year ago we started the tech council, which in practice does what in most companies a CTO does. We want to keep the good in the Vainu tech DNA - we are lean, agile and autonomous. In the past, we might have been a tad too agile for our own good, though. Also, the downside of autonomy was that the bus factor used to be low - too often below one: “yeah, that was built by <insert name here>, they left X months ago” - and not only teams but also individuals didn’t have any guidelines on how to do things. Best practices were sporadic at best and documentation was usually an afterthought. In my current role, improving these, while keeping the good thing intact has been my top priority.
Unfortunately, we don’t yet have the tools to measure the results of our efforts - and as said, a ton of things were well already. The bottom line, however, is that Vainu tech today both looks more professional and works more professionally than it did the day I joined.
On the practical side, we haven't just been working on improving things and keeping the lights on. There have been major launches during my time, workflow triggers - that I was part of developing myself - and Vainu global offering where my involvement has been a bit more subtle. There are also a few feature initiatives that I’ve started - for a lack of a better word - as research projects, but they are not yet in the product and I don’t want to steal the marketing department’s thunder. I guess I’ll have to write another blog post on how these things started and how they were implemented sometime next year…