Upskill Software Engineers Through Best Practices Sharing
Bad code slows down the delivery time since developers need more time and energy to do their job in such a context. So, how can we avoid that? Best practices sharing seems to be a good start.
There’s an increasing need for IT organizations to ship software in a short time while keeping high standards in terms of quality. DORA metrics from the Accelerate book have suggested a methodology to measure how powerful engineering organizations are, based on how often teams deliver software, and whether they introduce defects in their new changes.
However many organizations still struggle with code quality issues and other technical debt concerns. A 2019 study from Stripe highlighted that 42% of developers’ time is spent on fixing “bad code”. This bad code slows down the delivery time since developers need more time and energy to do their job in such a context. So, how can we avoid that?
Overcome Bad Code with Best Practices
Bad code often arises when developers used coding practices that were not relevant in the project’s context or were not consistent with the standards already in place in the project. It can also cause a misunderstanding among developers about how to properly write a specific code or apply a given coding practice. For instance, here is an example of coding practice with both positive and negative examples:
Remember that a coding practice is always “good” in a given context. From one company to another, practices are likely to differ.
To address that challenge, let’s explore this path: what if all engineers in the company were aware of all the coding practices they should follow every day? In this perspective, engineers avoid spending too much time in code review because of coding standard disagreements, and they produce code compliant with the best practices. They don’t waste time searching for how they should write code in way A or way B. How about that?
Knowledge Sharing to Upskill Developers
In almost every tech organization, there are tech leaders whose mission is to train and coach developers, set up coding practices, and spread them in the organization. In an ideal world, they achieve their mission painlessly and all developers have a great knowledge of the coding practices.
Knowledge-sharing has a high potential to leverage engineers’ skills, foster technical interactions, break knowledge, and boost social interaction. Powerful organizations often have processes and rituals to support knowledge-sharing. So, investing on knowledge-sharing is a great way to upskill developers and ensure they continuously master the coding practices specific to their organization.
But it’s not that simple, for two main reasons:
- Tech leaders spend a lot of time during code review and individual sessions to explain the same concepts over and over (especially if you consider the high turnover rate in the industry and the need to onboard regularly new people).
- Sharing coding practices at scale is far from trivial. Using generic wiki tools has limitations since they’re hard to maintain and barely read by developers since they lack integrations in their tools (IDE or code review). As a consequence, coding standards in Wiki and actual code implementation often diverge.
A good starting point is to start running regular meetings as a team to discuss coding standards based on your actual code. In most cases, making decisions on these topics should involve all the developers including the tech leader. It’s important to reach a consensus and ensure that everyone agrees and understands the coding practice.
To summarize, setting up best practices is challenging and it’s even more difficult to spread them at scale with dozens or hundreds of developers. Fortunately, tools can help us in this process, especially to centralize these coding practices and boost their sharing in engineering organizations. One of them is Promyze, designed specifically for this purpose.
Upskill Developers with Promyze
Promyze is a platform to identify, discuss, and share coding standards in software engineering organizations. It brings IDE & Code review (GitHub, GitLab, …) integrations and allows developers and tech leads to easily suggest coding practices and technical questions. These suggestions will be discussed in a ritual called “Practice tReview Workshop” occurring once or several times per month, but on a regular frequency.
During these 1-hour sessions, the team gathers and collectively discusses each contribution, in order to decide whether to validate or not a coding practice.
One benefit is that developers will get real-time feedback in IDE & code review when coding practices are not followed, since Promyze supports detection mechanisms such as Regex and Semgrep.