Skip to content
All publications

The Perpetual Struggle of Best Practices

Published: at 04:50 PM
Contents 8
  1. Purpose
  2. Index
  3. Introduction
  4. 5W1H
  5. Pros & Cons
  6. Cost-Benefit Aspect
  7. What makes a practice a Best Practice?
  8. Ok, but which Best Practices are the best for me, my project or my team?

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

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:

  1. 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.
  2. High adoption rate
    It is broadly adopted across the industry or academia, becoming part of core standards, ie: Agile, DevOps etc.
  3. High efficiency
    It helps achieve goals more efficiently by optimizing the use of resources, ie: time, people, money etc
  4. High scalability
    It is easily scalable, so that it can be successfully applied to small or large contexts.
  5. High quality
    It contributes to higher standards of quality, ie: code, products, processes etc.
  6. Risk minimization
    It helps reduce risks of errors and failures, thus resulting to more predictable and reliable outcomes.
  7. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.

Share

BlueskyMastodonXHacker News