While thinking about how to best describe our culture, two keywords come to mind right away - learning and exploration. The Sudolabs DNA is built on continuous learning, sharing of knowledge, always exploring new, better solutions, and putting maximum effort into everything we do to ensure high quality.
This might sound a bit cliché, but let me share some behind-the-scenes action in Sudolabs and, hopefully, by the end of this article, you will get a sense of our tech culture and see that we really mean this. Pair programming, code reviews, and knowledge sharing aren’t only buzzwords for us!
Let's take a quick look at our main tactics and processes that we use to facilitate and improve the technical culture in the company, which support growth, innovations, high-quality engineering standards, and strengthen our team spirit.
To encourage learning, we dedicate 12 paid days/year to education. Any initiative to learn, explore new technologies, or improve my current skill set is highly welcomed and appreciated.
We have created a special repository to keep track, document, and share the self-education efforts with others. sudo-university repository is the place where all interesting sources, topics, links are collected and where you can ask and learn without borders.
Sharing progress and learning efforts boosts internal communication and inspires others.
Obviously, any education material you need for your progress is on us - whether it's a book, course, conference, or workshop.
We always look for better solutions and ways that help us innovate, improve processes, time-to-market, and, most importantly,
Code review is a first-class activity and for us, it’s equally important as writing code. We are doing it not only to ensure code quality but also to encourage developers to share knowledge about helpful patterns and best practices, to discuss alternative approaches and viewpoints, and improve the readability and maintainability of the code.
All levels of developers - from juniors to seniors - grow and learn through code reviews.
Through regular contributions to our internal knowledge base, we are able to spread knowledge gathered on projects across the whole team.
There is no need to reinvent the wheel. This process saves a lot of time and effort, allows better and faster decision making, stimulates innovation and growth, and, last but not least, it helps us with preserving the domain knowledge.
What are the topics you can find there? They typically include answers to frequently asked questions, how-to guides, and troubleshooting instructions. For example, we have written a guide on How to deal with technical debt, we have a Testing handbook, Error handling/monitoring write-up, or more hands-on topics like our React Native guidelines.
Everyone has regular 1 on 1 sessions. Employee satisfaction is what we care about a lot. Our goal is to help you navigate your career and personal growth as well as address your concerns.
During these sessions, in a quiet and comfortable space, many topics are covered, such as what to learn next, how to help more junior developers in a team, how to communicate better in code reviews, what were your most challenging tasks in the last period, what would you like to see or improve in the company, and many times we talk about events in personal lives as well.
1 on 1s are a great place to share constructive feedback and get closer to each other. Discussions, as well as the next steps, are tailored to every individual. We're always looking for the best ways to progress further.
We regularly mark issues suitable for pair programming with a special label in GitHub and plan these types of tasks into our sprints along with regular ones.
Pair programming helps us come up with better solutions, easier-to-understand code base, iterate quickly on tough tasks, and introduce new people to a codebase. While one explains an issue or topic, others can ask questions. That leads to a better understanding of the topic for both sides and thus, it enhances problem-solving.
And on the other hand, it's a very effective way to transfer knowledge. When developers pair programs with more experienced teammates, it brings an enormous added value to their growth. The opportunity to look at how a more experienced developer thinks and solves the issues provides, with no doubt, a boost in learning.
This goes the other way round as well because even though having less hands-on experience, junior developers can often spot a problem a senior might overlook, or ask a question that points to a problem in the codebase.
Everything that we ship is built on top of open-source software. We talk with other experts in the industry, google search for solutions and look for freely available sources. That’s to name just a few of many reasons why we are actively looking for ways of giving back to the tech community and helping other developers.
Publishing on our company blog, contributing to open-source, cooperating with local or global communities, or working on a side-project - all of these activities are welcome and supported.
We're nourishing and investing in improving our culture every day. We are adding new activities, addressing feedback, and discussing ideas for improvements in our daily routine. Our goal is to provide the best possible space for growth and innovation.
If you've come this far and like the way we do it, you might be interested to know that we have several open positions and welcome like-minded people.
And if you want to share your tips, or you have some ideas on how we can do it even better, we’d love to hear what you have to say!