“We’re picky. But always fair,” says Michal Klačko, who leads STRV’s backend team. And since he’s the one dealing with the ‘people stuff,’ he knows what developers should expect during the interview process, and beyond. And what exactly is expected of them.
Michal Klačko, Backend Senior Lead
How would you describe the culture at STRV?
At STRV, we value everyone’s individuality. When people are given trust and freedom, they come up with great results and push the boundaries of routine work. I absolutely believe that.
Everyone is different. With enough space and freedom, you can make the best of those differences. But with great freedom comes great responsibility. In order to make that freedom work, we need to look for very specific qualities in our candidates.
Those qualities generally fit into three “categories”: Motivation, personality and technical skills.
Let’s start with motivation. How would you describe it?
There is nothing better than coming to the office every day (unless I’m home-officing, of course) and seeing passionate people loving what they do. It’s not uncommon to see people doing more than they’re expected to, like researching new technologies, prototyping some new infrastructure setups or preparing workshops for others.
Our people are great. So it’s important to check all potential candidates’ true motivations, ensuring they align with our culture.
One common question is: “Why would you like to join STRV?” Answering “Because of the free beer” is not the best answer.
Honza Hovorka, Backend Senior Lead
Could you describe the personality that matches STRV’s way of working?
It sounds like a cliche, but character is the most important thing. As I said, we strongly value our culture. Hiring the right people — people who just “click” — is crucial to keeping this culture alive. For me, it really comes down to a simple question: “Would I like to grab a beer with the person I’m interviewing?”
Every project requires interacting with people, even in development. And it’s easier to work if you are talking to an open-minded, positive and friendly person, rather than someone fake, grumpy and too defensive about everything.
What I see here daily is: Put a lot of good people into one office, give them a common goal and magic happens. :)
During the interview process, if you start arguing and throwing out excuses about obvious mistakes in your test project, I’ll be left with a bad impression. Being too proud and acting superior is not the best way of presenting yourself.
What technical skills should candidates have?
We expect our candidates to have general knowledge about backend in order to make it safe, fast, extendable and stable — or, in other words, good in all aspects. We are the technological partner to our clients, so we should possess knowledge about how to do things. We can’t expect it from our clients.
Our internal structure is very flat, so to speak. We don’t have an army of business consultants, architects, database specialists or other specific roles. If you’re a backend developer, you should know how to build a good backend with everything it requires.
But, no worries — if you have a good foundation, we’ll teach you what you’re missing once you join us.
What’s the specific stack in the backend team?
You should be able to code in Node.js, with the ability to deploy it to a Cloud-based solution (Heroku, AWS, GCP). You should have an awareness of (ideally experience in) Containerization, CI/CD, Relational and non-relational databases. We also never forget about automated testing. ;)
Think your Node.js skills might not be strong enough to join us? Check out the materials from our regular 8 weeks course, “Node.js Nights.”
What are the different seniority levels? How are they linked to salaries?
Two years ago, when we grew to over 70 engineers, we realized we needed to have a system of ranking our engineers. Today, we have a stable matrix with 6 levels: trainee, junior, mid, senior, lead and senior lead. For each level, we have a set of expectations and a salary range. This helps us to have a fair system.
I want to stress that the seniority level doesn’t depend on years of experience. I’ve met people with two years of experience with more skills than some people with five years of experience.
How do you test technical skills?
Most people have to do a test project, followed by an engineering interview. But when we see an experienced candidate, we are flexible in terms of testing methods. You can share your projects with us instead, after which we have an in-depth, three-hour talk about it. Or you can come by in the afternoon and do a few hours of coding in our office.
We don’t blindly stick to one testing method. We know how busy highly-skilled people are.
Additionally, we always provide detailed feedback, therefore the recruitment process has great value to everyone — even the people that we do not hire.
How would you describe a junior developer?
When it comes to juniors, we don’t expect wide knowledge of everything — that would obviously mean you aren’t “junior”. We expect you to be driven and focused on the right technologies, with a strong ability to understand how things work. It’s also important that you have a good foundation and good programming habits. And most importantly, a willingness to learn a lot, and preferably quickly. :)
Our juniors usually start by working on internal projects to prove themselves. After a month or two, we let them work on client projects under the supervision of a senior engineer.
What do you expect from mid developers?
During the interview stages, we expect mid developers to show awareness of the technologies we use and to have strong general knowledge. Regarding the test project, it must contain all it should, or at least the most important parts. It needs to be easy to deploy, easy to run and easy to read. Code should be well-structured for future extensions. If you make some mistakes, it doesn’t matter as long as the overall quality is good.
Finally, what about the senior developer?
Your code should look professional. We may even learn something from it. It should contain everything to make it easy to deploy, easy to run and easy to use. The architecture should be very robust. There is space for only very few minor mistakes, or none (if the test project is very simple).
You should be able to explain what you did in your test project, and why you did it, with absolute confidence. And during the entire interview process, we expect you to show us you’ve mastered all the technologies we use.
Once you do that — welcome to the team!
Last question: Any suggestions on how to become the lead developer?
Well, if you think you are fit to be a lead developer, you shouldn’t need us to tell you how to prove it. ;)
All that sound good? Great, ‘cause we’re hiring!
You might also like...
Getting to Know Monorepo
As a concept, Monorepos have been around for more than a decade. Google, Facebook and Microsoft have been using this architecture for ages. But it’s only now, as better tooling hits the market, that startups and open source projects are jum...
Kotlin Coroutines, Threads, Concurrency and Parallelism 101
Kotlin coroutines have been stable since Kotlin 1.3. As a result, we can finally get rid of the experimental flag and start our exciting journey into the uncharted magical world of concurrency.But wait a second…we can’t just dive in unprepa...
News From DockerCon19
Docker Containers are hands down one of the most popular ways to deploy apps. So, of course, STRV’s Backend Team couldn’t miss the biggest Docker conference of the year: DockerCon.Even though the conference focused primarily on Enterprise f...