Why Software Development Best Practices are Hard to Practice
Kailash Awati discusses the situation of best practices in software development in his post “Why best practices are hard to practice“.
Here are some excerpts:
The two common pitfalls that organizations encounter when implementing best practices are:
1. Lack of adaptation: this refers to a situation in which best practices are applied without customizing them to an organization’s specific needs.
2. Lack or adoption: this to the tendency of best practice initiatives to fizzle out due to lack of adoption in the day-to-day work of an organization.
Michael Polanyi’s aphorism – “We can know more than we can tell’ – summarises the difference between explicit and tacit knowledge : the former refers to what we can “tell” (write down, or capture in some symbolic form) whereas the latter are the things we know but cannot explain to others via writing or speech alone.
The key point is: tacit knowledge is more relevant to best practices than its explicit counterpart.
Best practices have long been plagued by problems of adaptation and adoption. The basic reason for this is that much of the knowledge pertaining to practices is tacit and cannot be transferred easily. Successful implementation requires that organisations use best practices as templates to build on rather than prescriptions to be followed to the letter. A good way to start this process is through participatory design discussions aimed at filling in the (tacit) gaps. These discussions should be conducted in a way that invites involvement of all relevant stakeholders, especially those who will work with and be responsible for the practices. Such an inclusive approach ensures that the practices will be adapted to suit the organisation’s needs. Further, it improves the odds of adoption because it incorporates the viewpoints of the most important stakeholders at the outset.
The blog post contains interesting pointers to other content for the project managers who want to go deeper in the topic of best practices in software development teams.