Technical excellence is my self-actualization Mikk, 29 Jul 2020
It is a rare moment. Codeborne is actively looking for experienced software developers who would like to create high-quality software to help our clients. The work environment in Codeborne is unique so we have asked some of our senior developers to tell what it is like to work at Codeborne.
Andrei has been at Codeborne from the beginning. In more than 10 years he has worked on 15 projects. Andrei has also been leading the development of Selenide - a widely used open-source framework for concise UI tests in Java. He also presents at conferences around the world.
Andrei, what makes working at Codeborne special for you?
I love working at Codeborne very much. There are many things that are quite special here. Probably everyone knows that we are using extreme programming here - pair programming almost all the time. Though I consider technical excellence the main thing.
We write high quality code - clean, easily readable, efficient, with good test coverage. I am a person who likes to do things well. In some places you get told that there is no time to write tests. In some places you even get punished for striving for excellence. I feel very comfortable in Codeborne as writing clean and tested code is highly praised here.
The other aspect I appreciate very much is that we are actually working to solve the clients real business problems. Instead of just fulfilling some tasks that were given in a big Word or Excel file. Not just executing what is written without understanding if we are solving the real pain of the client.
I really really like that we as developers have direct contact with the client and if we find one we can often suggest a better solution. It feels like real life, not just some task on the paper. I like this very much.
In Codeborne - what does great software mean?
The main principles are very simple. Code has to be simple. As simple as possible. It has to be covered with tests. So basically simple, working, and really solving the problem of the client.
In real life this can be interpreted in many ways and there can be lots of discussions around it but the general principles are clear.
How does working closely with the customer really look like?
It depends on the project. The main rule is that we don’t have a special role for an analyst, an account manager, or a project manager. The developers at Codeborne directly communicate with the customer. This can be a bit daunting but I love it as it gives me a chance to actually influence the outcome of the project.
Mostly we meet with a client once a week. Discuss the plans for the week. Go through the details of the features we will be developing next and the problems these features need to solve. We suggest solutions for making it in a simpler way. Sometimes we plan how to make the simplest possible first version, so we could later decide how to go forward with it.
We also show the client what we have done during the last week. This is extremely useful for us as developers as we can get feedback very quickly. We can sometimes see the excitement in the client’s eyes or on the other hand, hear that we did not quite go in the right direction. Either way is good because we can understand better what the client actually needs.
It is much better to have rapid feedback from the client than to sit for several months in a cubicle doing something without knowing that the project has actually been shut down already. Here everything is actually alive.
When working closely with the client, do you go and tell the client that we know better?
Not exactly. Nobody likes to be told that someone else knows better and the client knows their business best. Challenging the client is actually a skill all of us are acquiring over time. The skill is to be able to ask the right questions at the right time. Questions that make the customer think about and evaluate their wishes.
A good example is that if you ask the client: “Are you sure you want to have this blue button?” The client will pretty much always answer: “Yes, I am sure. It is definitely needed.” But if you approach it a little differently the outcome could be different.
For example if you ask: “You would like this blue button here, do you know it will cost you about n thousand Euros, take x amount of weeks, and have several implications on other features?” The client might then think if it actually is worth doing it and take some time to re-evaluate the alternatives also. The right question can already make a huge difference.
It is sadly a skill that does not get taught in university much. Many people don’t know how to do it in IT or in life in general. It would be great if everyone would have the skill to ask clear, helpful, gentle questions.
You have led the development of a successful open-source project - Selenide - how do you have time for it?
I have been part of several open-source projects but somehow Selenide became the most successful of them. It is used all around the world. It is actually quite easy for me to work on it. Some things I can even change during the usual work as we actively use it in our work with clients. I consider it my hobby, so at times I work on it at home as well.
At Codeborne we also have R&D days. Everyone can take a day in every two weeks to work on projects that are not directly related to client work. Try out new technologies and ideas. It is something similar to what Google offers to their employees. Sometimes I use R&D days to work on the open source projects.
All in all, such work on open-source projects is very highly supported in Codeborne.
Codeborne has a very specific way of working - do you think there are people who should not consider working here?
The short answer is - No. I don’t think there are such people. Everyone could come and excel here.
There are people who think that the unique way of working in Codeborne would not fit them. I believe that there are more people who think that than the amount of people who actually would not like it. I am sure many people would discover they actually love it here.
Many people seem to think that they would not like someone sitting next to them while they are programming. Thinking they would like to be alone, focusing without anyone else disturbing. That seems to be a common opinion. There are people who don’t even want to apply to Codeborne because they are afraid. Feeling uncomfortable about the change in their ways of working.
In reality though, it is not as scary. It is actually quite comfortable and much more fun to work in pairs. It is something very much worth trying.
People also are often afraid that they have to come to work at the same time with their partner. In reality it is a question of agreement. Some people come a bit earlier, some leave a bit later. You just need to agree with your partner.
What has kept you at Codeborne for more than 10 years?
We are actually solving real problems for the client. If you know Maslow’s hierarchy of needs - the top level is self-actualization. That is it. I feel I am experiencing self-actualization through being able to really influence the project, offer great solutions.
I have seen many times when the client is really happy because the ideas suggested to them have saved them a lot of time and money. It is very rewarding for me. It is priceless. My self-actualization. I am a happy person in this sense.
I know companies like Google and Facebook recruit a lot. I have seen they have nice offices and big salaries. I am not sure though if it is possible to actually influence a project as much while working there. Maybe sometimes, but I have a gut feeling that in most cases you would focus on a very small part - a small component doing something quite limited. I feel this would be less than what I have now.
Anything else that you value about working at Codeborne?
There are a bunch of traditions I like very much.
Every summer we take the whole office and go to some nice place for a week. This year Kuressaare. Last year Jurmala. We can bring our families along. We work like usual during the day but in the evening have time to get to know each other and to spend time with our families. Play board games, have a drink, do some sports together. It is a really great way to get to know each other better.
We also have weekly Technology Exchange hours where different people share what they are working on. Some new tips or tricks. Some new technologies. It is great to always keep learning and improving. People share what they have been learning during their R&D days.
We also have lots of people who do sports and it is actually infectious. I started biking to work also and to go running sometimes. Peer support is really great.
It is also great that we have smart people with very open minds in Codeborne. People who excel in different fields. So I learn a lot from them. Over the years I have also learned a lot about Estonian culture from the people here. I value it highly.
Interested in working with us?
Feel free to reach out to us via firstname.lastname@example.org. We would be happy to talk with any experienced developers who would like to join our team.
Make sure to also read the other interviews
- In the fascinating interview with Mira you can discover how we
learn different tech stacks, switch projects, and learn by teaching the new generation of developers
- In another interview, Jaan gives us a great overview of
the joy of pair programming, Test Driven Development, and what's unique at Codeborne