Why I switched from Java to Kotlin — and how I’m using it at Productboard

Why I switched from Java to Kotlin — and how I’m using it at Productboard

A look at engineering inside Productboard

A couple of years ago, I decided to learn a brand-new programming language: Kotlin. In this article, I’ll explain what drove me to take on that challenge, the benefits of working in Kotlin, and why Productboard is the perfect fit for Kotlin engineers. 

My path into engineering

I started coding when I was in third grade. I used Pascal to write my first code, before settling on C for a while. I then touched on C# when studying for my Master’s, getting a job the summer I left university as a C# developer, where I worked on automation and developed a framework for testing in C#. 

After some time, I got an offer to switch to product engineering, to be someone who develops code that goes to production, which was super exciting. I became responsible not just for making the right decisions, but also for how things looked on the back end. 

Around this time, I started thinking about not just what we were building, but how we were building it. The company had 14 teams spread across the globe, and every developer had their own way of approaching how to code and build stuff. So instead of focusing on code, I started developing our build framework, making it better suited to our team’s needs. At this point, I was working mostly in PowerShell. 

Later on, I started working in Java. My first experience with that language came as part of a challenge with the automation team. I went from knowing nothing about Java to having a fully working piece of code after just a few days — and winning the challenge! 

Around this time, we had a requirement to store our pipelines as code. We tried using CircleCI, a cloud-based AI platform, but we had to abandon it because it didn’t fit the job. So instead, we went with TeamCity, which had support for writing pipeline-as-code in Kotlin. And that’s where my Kotlin journey began.

Getting to grips with Kotlin

I’m not a theoretical person. Rather than spending a month reading a book before I start using something, I need to get into it as fast as possible. So I watched some videos by JetBrains about how to write pipelines in Kotlin. I also took a few online Kotlin courses. After that, I was ready to start playing around with it. So I downloaded the IntelliJ IDEA from JetBrains and started writing some scripts.

What surprised me is that it’s pretty easy to write code in Kotlin compared to Java. You don’t have to write a lot of boilerplate, because it gives you all the supporting language. You don’t need to write every getter and setter. All those things you have to do in Java, Kotlin hides them from you. So you can write a fairytale, and you can compile it and execute it. And, ideally, the fairytale should have a happy ending. 

Why Kotlin is such a great language to work with

It took me about six months to fully get to grips with Kotlin and be confident when coding, but I loved the journey. Kotlin is designed in a way that makes everything obvious. You’re not developing as a machine but as a human, which makes the learning curve more enjoyable. 

Compared to Java, Kotlin allows you to be more productive. You can develop stuff faster because you don’t need to code the boilerplate. The language is defined in a way that you just type a data class and Kotlin gives you all the stuff you need — whether it’s for equals, formatting to string, getters, setters, or anything else. Essentially, Kotlin allows you to type less and get more than Java. 

Kotlin at Productboard — and why I joined

When I joined Productboard in early 2022, the engineering department had made the decision to shift towards Kotlin and away from Ruby. Having experimented with a few languages, including Node.js, they realized that Kotlin had the greatest organizational impact — and the greatest potential for future results. 

The company was scaling fast at the time, doubling its engineering headcount every quarter, and it was a challenge to keep filling seats with Ruby engineers. At the same time, the Czech Republic — where our engineering team is predominantly based — is a strong market for Kotlin developers. So Kotlin was the best choice to help the company hire, scale, and get things shipped faster.

Besides the chance to work on an exciting project in a company that embraced Kotlin, the opportunity to work remotely was one of the big bonuses for me here at Productboard. I got used to working remotely during COVID. Plus, I’m an introvert — I love my space, my time, and my way of working. I was given the freedom here to decide where and how I want to work. 

Empowerment and autonomy are highly valued here at Productboard, and it’s definitely the kind of company where values actually mean something in practice. So it was a pretty easy decision for me to join the team.

What I’m working on right now

I work in a team called Apollo, and we are part of the Insights tribe. We are responsible for a functionality called notes — a unit of feedback that is captured in Productboard —  and all the magic that happens before you can turn them into features. Right now, we’re working with another team to help deliver machine-learning capabilities to our customers. 

Previously, we were working on insights automation, which involved simplifying the process of categorizing notes, connecting them to possible features you could build, and ranking how well those features could solve customer problems. Our work saved customers time while improving the overall UX. 

What I’m looking forward to working on in the future

With my background in infrastructure and DevOps, I’m still looking at how the services we develop behave. How can we make them more observable and stable? How can we make it easier to investigate potential issues? How can we make things better — better logging, better tracing, better metrics, better dashboards? 

Also, as a bigger-picture project, I’d like to look at developing some best practices for everyone who works in Kotlin. How we do things like logging, how we consume Kafka messages, and how we expose the valid data to Datadog or other systems. 

How Productboard supports developers switching to Kotlin

Another great thing about Productboard is the general mindset of continuous professional development and support. Not only are we actively hiring Kotlin developers to push us forwards, but we also do everything we can to support developers to learn or improve their Kotlin skills. 

We have an optional bi-weekly meeting called Kotlin Office Hours, for example, where we get together for an hour to discuss anything Kotlin-related. So say you find a new library that makes your life easier. You do a quick prototype, present it to everyone else, and then get their feedback. In these meetings, you can talk about anything related to how we use Kotlin — best practices, questions, ideas, and tips. It’s a great place to learn. 

On top of that, we’re very conscious of leveraging the Kotlin expertise we already have in-house to help others learn and grow. If anyone takes on the challenge of switching to Kotlin, we make sure that they’re supported and guided by a more experienced Kotlin engineer. 

Overall, I love the challenges here at Productboard. Even after 12 years as an engineer, I’m still keen to learn new things and challenge myself. And that mindset perfectly fits with the overall ethos of the company. If there’s one thing you can be sure of, it’s that you’ll never be bored here at Productboard.  

Fancy joining us on our mission to make products that matter? We’re hiring across the board. Head over to our careers page to see our available positions. We’d love to hear from you!

You might also like

Productboard expanding San Francisco engineering presence
Life at Productboard

Productboard expanding San Francisco engineering presence

Jiri Necas
Jiri Necas
Refactoring Productboard’s design system to the next level
Life at Productboard

Refactoring Productboard’s design system to the next level

Jonathan Atkins
Jonathan Atkins
The Role of Growth Engineering at Productboard: Significance, key skills, and responsibilities
Life at Productboard

The Role of Growth Engineering at Productboard: Significance, key skills, and responsibilities

Stuart Cavill
Stuart Cavill