The Wayback Machine - https://web.archive.org/web/20111020192133/http://www.ambysoft.com/essays/bestPractices.html

Questioning "Best Practices" for Software Development

 
    Home  |  Articles  |  Agility@Scale Blog  |  Books  |  IT Surveys  |  Podcasts  |  Contact Me  |  Mailing List  |  Site Map
Recently reviewed

A very popular term within the IT community is "best practice".  It's a wonderful marketing term, how could someone possibly argue about adopting a best practice, but does the concept really make sense?  I'm not so sure.  There are many examples where a practice that is considered "best" in one context is questionable within another.  As professionals, it seems to me that we should strive to understand the context which we find ourselves in, and then apply the practice which is best within that context.  In other words, we should really be focused on "contextual practices", not "best practices".

 

 

 

Examples

When you observe what's going on within the agile community it becomes clear that many "best practices" really aren't.  For example, consider the following practices:

 

Towards Contextual Practices

Ideally, we should talk about best practices at all but instead should talk about contextual practices.  Depending on the context, sometimes a practice is "best" and sometimes it's not.  Calling something a "best practice" implies that it's a good idea all of the time, something we inherently know to be false.  Having said that, the term "best practice" clearly has more marketing value than the term "contextual practice", and in this industry we know that marketing typically wins over truth, something that is clearly not a best practice.

The Agile Scaling Model (ASM) helps to provide insight into the context which IT teams find themselves in.  It describes 8 scaling factors, and implies two others, which provides this context.  The factors are:

  1. Geographic distribution.  From people being co-located to being distributed around the world.
  2. Team size. From teams of a few people to thousands.
  3. Regulatory compliance.  From being non-regulated to very strict regulation (such as FDA regulations, for example).
  4. Domain complexity.  From very simple problems to very complex ones.
  5. Organizational distribution.  From everyone working in the same org unit to people working for different organizations (such as outsource service providers, for example).
  6. Technical complexity. From greenfield single-platform systems to multi-platform systems using legacy systems and data.
  7. Organizational complexity. From organizations which are very flexible and collaborative to organizations which are very rigid/strict.
  8. Enterprise discipline. From a single project focus to a multi-system/project enterprise focus.
  9. Life cycle scope (implied). From a focus on construction to delivery to the systems life cycle to the IT life cycle to the entire business life cycle.
  10. Paradigm (implied).  Are you following a process which is agile, lean, traditional/classical, ad-hoc, or a hybrid combination?
Software Engineering Best Practices

The point is that different teams find themselves in different situations, different contexts if you will, and therefore will tailor their approach to reflect that situation.  They will adopt practices which meets their needs and tailor those practices accordingly.

 

Suggested Readings

 

Let Me Help

I actively work with clients around the world to improve their information technology (IT) practices as both a mentor/coach and trainer.  A full description of what I do, and how to contact me, can be found here


Copyright © 2005-2010 Scott W. Ambler


Agile Data (AD)  |  Agile Modeling (AM)  |  Agile Unified Process (AUP)  |  Enterprise Unified Process (EUP)  

Follow Scott W. Ambler on Twitter