Codeborne through the lens of a developer - what makes it special? Codeborne, 09 Jun 2022
This post is a personal reflection of one of our software developers or software craftsmen as we like to call ourselves.
The last two years since joining Codeborne have seen a very steep learning curve. Both in terms of gaining new knowledge in software engineering as well as learning how life at Codeborne is organised.
It is unique and magnificent. Getting things done with technical excellence. Really solving the business problems of our clients while having time to live your life without much stress.
So, what makes Codeborne so special?
Not only getting things done but getting them done well is important
Just recently we were reviewing the homework of a potential recruit. He clearly knew the syntax of the language. He managed to complete the task. Functionally. But reading it and trying to understand what was going on in the code was quite a nightmare. Loop inside a loop inside some if statements and so on.
This was a prime example of the benefit of working at Codeborne. We put technical excellence including writing clean code to the front and centre of how we work. Every day we challenge each other: is the naming of the method understandable? Should we refactor the flow so it could be more readable? Which syntax is more easily understandable? How can we further refactor the code to make it more robust, secure, and efficient?
But technical excellence at Codeborne is not just clean code. It is using test-driven development as much as possible. It's actually taking extra time to research alternative ways. Implementing that more robust solution and not cutting corners. Leading to less bugs and less time spent on support.
We have a complete overview of the entire project: devops, databases, backend, frontend, to the tiniest details in UI design. We're responsible for all of it, and as a result we can truly create great solutions.
In essence we have to always keep in mind that someone else might be taking over the project in just a few days and they should be able to continue adding features and improving the software without much hassle.
Value of strong colleagues
Most engineering teams tend to have more junior developers than seniors. In Codeborne it is the opposite. More than 80% of Codeborne employees are experienced (5+ years) or very experienced (10+ years) software developers. This is a great environment for anyone who appreciates colleagues with a broad knowledge base. Having experienced teammates who are happy to share knowledge and teach those around them, helps everyone to learn a lot. And there is always something to learn in software development.
A good story about it comes from a friend who left Codeborne to focus on her passion for Cyber Security at a successful start-up. Codeborne was her first software development job and in her new team they often tell her that her 5 years in Codeborne is like 10 or 15 years in many other companies.
Pair programming is really effective
Contrary to popular belief, even software developers are actually social people. Yes, we might be introverts but pair programming is not about having to chit-chat all the time. It is about solving a problem together. And as the saying goes - two heads is better than one.
When working alone, it is easy to get lost in distractions, miss something simple, or not challenge yourself enough to go deeper into the problem and think through what the most reasonable solution could be. Working in pairs helps to remedy all of this.
Everyone says code reviews done with attentiveness and in a constructive manner are useful. Pair programming is like constantly doing a code review. Together with constant friendly challenges to understand if we are doing both - things right and the right things.
It leads to getting things done faster than working alone while maintaining a sustainable tempo. One of the colleagues who joined us recently commented: "I have not gotten so much done in a long time." And he has worked in fast-paced and demanding environments before.
Another colleague reflected on her experience at a leading start-up and commented that she thinks that the work of her team of six could have been done by one pair at Codeborne. Being focused and working well together helps to get things done much faster.
Excellence takes time
The way we work at Codeborne could be summarised as follows: work intensively 7 hours a day, get a lot of things done, and also have time to rest and live your life. If someone were to be seen making commits in the evenings then after a short while there would be a tap on the shoulder of that person reminding them that resting is important to deliver great quality work.
There is a limited amount of time for really productive work in a day. Pair programming can extend it a bit but in the end we need to have time to live our lives and rest also. So we could be happy, relaxed, kind, and able to really deliver high quality results to our clients.
We also need time to further develop our skills.
At Codeborne, each employee has the option to take a day every two weeks to work on non-client related projects to spend time on self-learning. We also have every week an hour of TeX (technology exchange) to learn from others in our team, training days for the whole team, and general culture of curiosity and growth which is fabulous.
Clients need the support to figure out what to actually do
Codeborne does not have analysts, project managers, or testers. We have our CEO and Head of Business Development who bring in the business and agree on the overall scope of the project but it is up to the software craftsmen themselves to work closely with the client to understand what are the actual business goals and priorities of the client, to suggest what are the best technical solutions for their business problems, and to discuss how to organise the work in the most agile way. How could the scope of each release be minimised so it could be live and used by clients as soon as possible? How can the client best achieve their goals through the use of this new software?
Every week during our iteration meeting we write down user stories keeping in mind the above-mentioned perspective. At the same time we show the progress we have made by showing actual working solutions. Always keeping the user perspective in mind.
As developers it can happen too often that we take the stance that the business should give the correct tasks and we don’t challenge them too much. This is never the case at Codeborne. Here as software craftsmen it is our responsibility to always challenge the client and help to understand what makes the most sense.
A lot can be achieved by being disciplined
What makes Codeborne special is actually not so complicated. Pair programming, keeping focus on what is actually valuable, not just getting things done but getting things done with technical excellence, giving time to do things well and to learn, having time to work intensively but also live life, helping the client stay focused, and therefore really delivering them value with software.
Everyone could copy it. Many companies talk about the same when they talk about their culture. Even write it on their website. But only sometimes actually manage to do it.
Codeborne’s unique factor is discipline and courage. By management and by the craftsmen in the team. Staying true to the principles. Even if the quick fix would be to not work in pairs or to not challenge the client. There can always be some moments when discipline is lacking but in Codeborne the moments have been very scarce.
I must end with an invitation. If all this sounds like an environment you would excel at, then Codeborne is always looking for great software craftsmen or craftswomen. Drop us a line at email@example.com.