A pragmatic definition.
Purpose
The sole purpose of this publication is to inform, appeal, gain the attention of you as a reader, and motivate you to contemplate over the question: What is a Best Practice?
Index
- Purpose
- Introduction
- 5W1H
- Pros & Cons
- Cost-Benefit Aspect
- What makes a practice a Best Practice?
- Ok, but which Best Practices are the best for me, my project or my team?
Introduction
Best Practices encompass a set of methodologies, principles and guidelines used to improve the quality, efficiency and maintainability of the software engineering process.
By adhering to them, teams of engineers can achieve a streamlined development process and are able to deliver reliable and scalable software solutions, while minimizing risks, errors and technical debt.
5W1H
What
Simply expressed: Best Practices are a set of fundamental methodologies to achieve high quality software.
Why
Best Practices are used for the following main reasons:
- Enhance software traits
- Quality
- Reliability
- Scalability
- Maintainability
- Minimize risk
- Reduce development time and cost
- Improve collaboration
Who
Best Practices are used by everyone involved in the engineering lifecycle of software, specifically:
- Engineers (Software, DevOps, QA etc)
- Managers (PM, PO etc)
- Stakeholders (BusOps, Users etc)
When
Best Practices shine when building mission-critical, large-scale, long-term, high-volume, value-drive software programs/applications.
Where
Best Practices are used during the entire software engineering lifecycle, specifically:
- Designing
- Developing
- Testing
- Documenting
- Integrating
- Deploying
- Shipping
- Maintaining
How
The implementation of Best Practices involves the adoption of specific methodologies, tools and principles in the following key software engineering phases:
- Architecture & Design
- Development
- Review
- Version Control
- Testing
- Documentation
- Continuous Integration
- Continuous Deployment
- Shipping
Pros & Cons
Pros
- Improved Code Quality
Software is more reliable and stable, reducing the likelihood of crashes or error in production. - Consistency Across Team
Promote efficient collaboration between teams and minimize integration issues. - Scalability
Ensure software can be scaled effectively. - Maintainability
Software is easier to maintain and update over time by reducing long-term maintenance costs. - Reduce Technical Debt
Prevent the accumulation of issues that can make future development more difficult costly. - Enhanced Security
Protect software from vulnerabilities and risks. - Seamless Onboarding
Promote a shallow learning curve for new members - Compliance/Auditability
Easier alignment with regulatory requirements and standards.
Cons
- Complexity
Additional overhead may be introduced that could slow down some processes. - Inflexibility
May lead to inflexibility making it difficult to adapt to new technologies or methodologies. - Cost-Ineffectiveness
May require additional resources not always justifiable by the project’s scope/size, ie: PoC-s, prototypes, etc. - No 1-Size-Fits-All
May not always be the best fit for every project or team. - Over-Engineering
Solutions may become unnecessarily complex in an effort to follow every single Best Practice. - Complacency
May create a false sense of security, where teams assume that just by following specific Best Practices uncompromised security is guaranteed.
Conclusion
Balancing Best Practices with pragmatic decision-making is crucial to maximize their benefits while minimizing potential downsides.
Cost-Benefit Aspect
Cost considerations can influence how Best Practices are applied and prioritized.
Most best practices reduce long-term costs by improving key processes within a team. For example:
- Automated testing and CI/CD may have an upfront implementation cost but in the long term, they help to reduce bugs and deployment failures.
- Using Agile methodologies to manage a project can help teams to use their time and resources more effectively, thus improving their productivity.
Overall, a group of engineers must balance the cost of adopting and implementing a Best Practice with the benefits it brings, to ensure that the outcome is both high-quality and viable. A few examples:
- Prioritizing focus on security Best Practices for a high-risk application.
- Deprioritizing documentation Best Practices in a low-risk, short-lived application.
What makes a practice a Best Practice?
A practice can be considered a Best Practice when a few key criteria are fully met:
- Well proven results
It has consistently led to positive results across project and applications, and it is supported by tangible data, studies or even research which demonstrate its effectiveness. - High adoption rate
It is broadly adopted across the industry or academia, becoming part of core standards, ie: Agile, DevOps etc. - High efficiency
It helps achieve goals more efficiently by optimizing the use of resources, ie: time, people, money etc - High scalability
It is easily scalable, so that it can be successfully applied to small or large contexts. - High quality
It contributes to higher standards of quality, ie: code, products, processes etc. - Risk minimization
It helps reduce risks of errors and failures, thus resulting to more predictable and reliable outcomes. - Continuous feedback, learning and improvement
It can be evolved based on new technologies, feedback, reviews and more, thus remaining relevant and effective over time.
Ok, but which Best Practices are the best for me, my project or my team?
Choosing the most suitable Best Practices for your case is not always straightforward.
When multiple meet your needs, you should evaluate and prioritize them based on several factors:
- Alignment with Goals
Choose the Best Practices that align the most with your project deliverables and goals. Prioritize your most important requirements (whether it is performance, security etc) and go for the Best Practices that favour them the most. - Resource Availability
Assess the cost for your team to adopt a specific set of Best Practices. Go for the Best Practices that strike the best balance between the benefits they bring and the time, effort, maintenance they require. - Team Consensus
Always involve your team and your colleagues when deciding about the adoption of specific Best Practices. Gather their feedback and based on that reach a collective agreement. - Trade-offs
Weight key trade-offs against your project’s needs, ie: short term cost vs. long term benefits, less flexibility vs. more reliability, etc. - Risks
Check for the most probable risks in your project, and choose the Best Practices that minimize them the most, ie: vulnerabilities, technical debt, etc. - Size and Scope
Always keep in mind the size, complexity and scope of your project. Choose the Best Practices that are better suited for the quantitative qualities of your project. - Scalability
Consider the Best Practices that can scale easily along with your project’s growth and team size, both in the short term and the long term. - Product and User Impact
Check which Best Practices contribute the most to the overall quality of your final deliverable, thus providing a better experience and outcome for your users.