Chaos vs. Order: Implementing a Development Culture for Better Business Results
It's possible to create a working software product in chaos, without standardized processes. Some teams do exactly that.
But when you have more than one person working on the code and the work lasts for more than a week, problems are inevitable. SimbirSoft Chief Quality Officer Ekaterina Remizova talks about the development culture and how it can help avoid such problems.
Is a Development Culture Necessary?
In general, the use of coding standards and methodologies, version control systems, requirements tracking, task tracking, test documentation management, and a development culture will help avoid chaos in the project and improve your chances of achieving the desired results.
A development culture is a set of rules, standards, processes, tools, and practices that are followed by developers, QA personnel, and other employees of an IT company.
Development culture helps:
- an IT company to achieve its project goals: develop high-quality products, meet customer requirements, and deliver the results on time and within the established budget;
- customers maintain and develop the project, involving new developers, if necessary. This increases customer satisfaction with the results of the project and their level of trust in the contractor;
- make the work of an IT project team easier, more efficient, and enjoyable; make the onboarding easier; reduce the percentage of bug fixes, and avoid chaos, as mentioned above.
Code is rarely written by just one developer; normally, an entire team works on it: they read, review, and refactor it.
If the code is highly coupled, there is a higher chance of breaking everything with one minor change, which can demotivate any specialist.
When coding standards are observed (sufficiently documented and covered by unit tests at the required level), the code is easier to work with for developers, QA specialists, analysts, and product managers. If a bug arises, everyone will know what to do and where to look for it.
Companies with a strong development culture have very specific roles for everyone involved in a project, so it's clear who handles what.
Different templates are used for describing the tasks, allowing the team to ask the necessary questions and start working on a solution quickly.
Adhering to the rules, standards, and steps allows team members to do everything quickly and efficiently, to plan and organize their work on the project. For example, it provides the team with an understanding of where they are at the moment and what's coming next.
«The specific methodology that specialists use (Scrum, Waterfall, Kanban, etc.) does not actually matter — they know that their course of action is not going to change for a certain period of time. That way, they are able to focus on the tasks at hand and work towards their goals».
But a development culture is not something you can purchase or impose by a decree. It forms over a long period of time: in our company, this process started over 20 years ago, back when the business was established.
Our founding programmers were introducing it through leading by example and writing standards and guides. Then, heads of departments and mentors joined in.
It obviously requires some resources (expertise, time, financial investment) to develop the standards, purchase software products, create a project workflow, make agreements, and train your staff.
But your investment will pay off because it will allow you to work on commercial projects more efficiently.
A strong development culture saves you from having to spend money on resolving conflicts and chaotic situations, making changes after a code review, and so on.
Little By Little: Introduction and Development
In 90% of cases, the transfer of a development culture in an IT company occurs from one person to another while working together.
It goes through an employee's entire "life cycle" in a company.
You cannot force it on people by making them go through descriptions (standards, guides, templates, rules) right after you've hired them.
It takes sharing experience and teaching by example; there's simply no other way.
The culture is conveyed by people: the company's executives, team leaders, mentors, experts, key developers.
The very first projects and mentors are critical for a new employee. By observing their experienced colleagues and how they organize their work on a project, newly hired specialists adopt the same culture and stick to it later on.
To share the development culture with your new employees, prepare to dedicate certain resources to:
- explaining the rules, i.e. standards of project management, branch management and creation of testing benches in Git, test documentation, code and API documentation management, and other things. Standardized work and processes help prevent mistakes.
- feedback: that's where the control loop comes into play. When a new person joins the project, the mentor explains the task and tells them how to perform it. Once the task is complete, the mentor evaluates it: if the employee has made any mistakes, the mentor gives them feedback, explains the errors, and points out what needs to be corrected and where to look for information on the subject. That way, mentors develop along with the new staff.
From our experience, division managers and other experts also give feedback and recommendations to employees and work with them to establish plans for project development and their own development as specialists in a particular area.
In addition to rules and feedback, the following also helps build a development culture:
- Sharing experience and expertise
To build a development culture, it's important to encourage the idea of sharing expertise and exchanging experience and best practices at workshops inside and outside the company.
This will also allow you to develop your staff's hard and soft skills and find quality solutions to specific project tasks.
Companies with a strong development culture determine a training vector and create a professional development plan for all specialists. Employees don't have to spend their time researching the latest trends to choose a study topic that would be helpful for their jobs.
The company can usually provide an employee with a selection of areas they can explore for a particular job.
A management and control system helps build a development culture.
You can check the compliance with guidelines and the company standards during an audit (team review, performance review, 360-degree feedback, and other feedback systems) and via other process execution checkpoints (instruments: code review, task trackers, metrics, etc.).
One of the tools for development culture management involves using a checklist to assess employees' compliance with it.
To focus specifically on assessing the code culture, it's important to provide employees with the most comfortable working conditions and build your processes in a way that excludes different factors and makes the assessment more objective.
Checklists for Employees
A checklist can be used once or on a regular basis to analyze a specialist's development. It usually reflects the following blocks for evaluation:
- Workflow and documentation compliance.
- Knowledge of the life cycle of tasks, priorities, task management requirements, and deadlines.
- Adherence to standards and principles of coding and the requirements for its security; avoiding anti-patterns.
- Timely notification of problems.
- Covering the main part of business functions with unit tests; testing and running the code before handing it over to a QA specialist.
Examples of questions:
- Does the specialist follow the coding standards of the development language? Does the specialist use efficient data structures and algorithms? Does the specialist document their code without leaving redundant comments? Are they ready to write code on their own?
- Does the specialist know the criteria for when a task is ready to be worked on and when a task/project is complete?
- Does the specialist speak up if a task has contradictions?
- Are they capable of assessing a task on their own? How often do they guess their own assessment results?
For a large team, checklist assessment is conducted as a cross-review with the participation of not only the team leader but external consultants as well.
But, as a rule, only two people are involved in the survey: a specialist and an expert. The latter can be a team leader, a tech lead, or any experienced employee.
First of all, the specialist determines their own compliance with the checklist requirements.
Next, the team leader evaluates the employee's adherence to the development culture based on their work in the team.
The team leader uses different tools for this purpose, including a task tracker.
The expert can assess the cleanliness of the code during the code review.
After the result is digitized, a decision is made on whether or not it meets the company's standards.
Deviation from the "ideal" warrants a response:
- First of all, it should be analyzed why some standards are not being followed and check if all the processes have been organized properly.
- Next, a plan to resolve the situation should be developed. It may involve training the developer, team leader, or product manager, creating new templates, or using existing ones, and other measures.
- Afterward, the plan can be implemented.
- After a certain period of time, the assessment may be repeated and the results compared.
There is no universal solution that can work for any project because different factors can affect the final results.
Nevertheless, a healthy development culture that a company builds persistently over a period of time, as well as adherence to standards and processes, can multiply the chances of success.
Learn more about the development processes in IT from our article: In-house Development and Outsourcing in IT: How to Strike a Balance.
Join our Medium community to keep up-to-date with our experts' insights: Agile Vs. Waterfall in 2022: Which Methodology to Use Today.