Poor execution

Don't let quality fall down the gaps

Let me paraphrase an interesting statement I heard last week about a software system.

The high-level design is fine, but the execution was poor.

I found this interesting and started thinking about it from several perspectives.

  1. You can define the best architecture in the world, but you still need to successfully deliver on that architecture.
  2. To ensure a successful delivery, you can't simply hand-off the architecture.
  3. I'm a strong believer that, particularly on smaller projects, the architect should take responsibility for the technical quality of the solution.

Software architects are the people responsible for ensuring the technical quality of the solution and, by this, I'm referring to quality at the macro level (e.g. meeting the non-functional requirements) as well as at micro level (e.g. coding standards, unit test coverage, use of continuous integration). More often than not, I find that teams let the latter fall down the gaps between the architect(s), developers, build manager, configuration manager, etc. In the event that nobody has been granted explicit ownership, I'd say that this is another aspect that falls squarely underneath role of the software architect.

About the author

Simon is an independent consultant specializing in software architecture, and the author of Software Architecture for Developers (a developer-friendly guide to software architecture, technical leadership and the balance with agility). He’s also the creator of the C4 software architecture model and the founder of Structurizr, which is a collection of open source and commercial tooling to help software teams visualise, document and explore their software architecture.

You can find Simon on Twitter at @simonbrown ... see simonbrown.je for information about his speaking schedule, videos from past conferences and software architecture training.

Re: Poor execution

I think it's important to explicitly state who is responsible for all the quality items you mention. Anytime I hear the phrase
We're all responsible
I know that it won't actually be done.

Delegating some of the responsibility to junior members of the team works well. So one person is in charge of tracking down build breaks or chasing down check-style warnings etc. It's an easy way to give a taster of responsibility and team leading. I also believe that everyone's code should be reviewed AND that everyone should review code.

Re: Poor execution

Delegating responsibility and getting others to code review : I agree and it's also really easy to work into a training/coaching relationship, providing benefits for all involved.

Add a comment Send a TrackBack