Recent Blog Posts

  • Competition and Knowledge-Sharing
    By Johanna Rothman - Wednesday Aug, 27
    In Knowledge Management Needs to be Agile, Too, I said If you put people in competition with each other *in any way*, they will have dis-incentives to share their knowledge. John, in his comment on ... more »
  • Test Automation Class in Virginia
    By Jared Richardson - Monday Aug, 25
    The first scheduled class for the NFJS One venture is now official! And we don't even have the website live yet. :) This class will be a good mix of the "Why" as well as the "How". The goal is for yo... more »
  • ReadWriteWeb on Dirty Data
    By Michael Nygard - Sunday Aug, 24
    A short while back, I did a brief series on the value of "dirty data"---copious amounts of unstructured, non-relational data created by the many interactions user have with your site and eac... more »
  • rspec_validation_expectations gem released
    By Matthew Bass - Friday Aug, 22
    I just released a new gem on GitHub that provides some common validation expectations to rspec. Instead of writing specs to verify that your models are handling validation correctly, these expectation... more »
  • “Seeing Your Work” Podcast Posted
    By Johanna Rothman - Friday Aug, 22
    I’ve posted my “Seeing Your Work” podcast. It’s available on libsyn and through iTunes. If you’d like me to interview you or you interview me, lemme know. ... more »

New Tools Section

Posted by: Ryan Shriver on 07/03/2008
One of the things that helps reenforce new concepts, like the ones I’m teaching, are simple tools that guide you along the way. Like a carpenter’s square, hand plane or ruler, simple tools can be very effective in the hands of a trained engineer. To help further the agile engineering discipline, I’ve created a Tools section of the site and published the first one, an Impact Estimation table designed for Architects and Requirements Analysts.

Impact Estimation is a way to assess a design’s impact on a set of desirable qualities. This can be for one quality, such as Response Time or Transactions per Second, or for a collection of key qualities, such as System Performance.

As useful as Impact Estimation is, what is perhaps even more important is the exercise of filling it out. In order to do so, you basically have to do two things:

Quantify the key Qualities
Estimate a Design’s impact against these if implemented

First, to quantify the key qualities, for each one you capture:

- Name
- Unit of measurement (Scale)
- Method to measurement (Meter)
- Target level
- Fail level

WIth this information for key qualities such as Response Time, Transactions per Second, Scalability, Availability and others you can specify critical information very succinctly. This information is used by the architect and development team who must engineer the system to meet the target levels and avoid the failure levels.

So how does the architect know which design (aka strategy) to pursue that best balances performance and costs? Enter impact estimation. Once you enter the Name, Scale, Target and Fail levels for each quality, you estimate the impact of that design and enter it into the worksheet. This helps you answer questions such as:

If this design were implemented, how much closer to our target level would our system be? What % gain or reduction would we see?
How much do we think it will cost to implement the design? What’s the benefit-to-cost ratio (called performance-to-cost in impact estimation)?
How much certainty (or uncertainty) are we factoring into our estimates?
Do we have credible sources for all our input data or is it based on speculation? Have we done this before on this project or in this organization?
If we can’t reach our target level of performance with just one design, what are our next best options? How many different designs will it take to reach our target level of performance (and how much do they all cost)?
What order should we implement our designs that delivers value quickly and iteratively (in days and weeks)?
Are we factoring any risk into our designs? Are we designing just to spec or beyond spec?

These are some of the big decisions architects must face in systems engineering and represent to management with confidence. In situations with hundreds-of-thousands or millions of dollars on the line, wrong decisions can waste money and evaporate time to market. But if done right, organizations can gain quick competitive advantages by focusing their resources on designs that deliver value quickly and iteratively in an agile fashion.

Hopefully this is just the start of more handy tools to come. Let me know what you think and if you find them valuable.
be the first to rate this blog


About Ryan Shriver

Ryan Shriver is a Managing Consultant with Dominion Digital, a Virginia-based Business & Technology Consulting firm where he's a leader in their Agile practice (dominiondigital.com/agile). He helps organizations and teams transition to Agile ways of thinking about solving problems, ranging from new product lines to operational performance improvements. Ryan's solutions typically use some combination of people, process and technology to deliver measurable results.

With a deep background in software architecture and enterprise Java, Ryan understands the challenges and issues facing development teams to deliver predictable results. His approach to getting senior leaders to define measurable objectives and priorities for their organizations, projects and development teams helps bring focus to the highest priority initiatives. Using agile methods like Scrum, Ryan helps teams iteratively deliver value quickly to the business...often in a matter of weeks.

Ryan's experiences with diverse companies and teams are the basis for his presentations on Agile subjects.

More About Ryan »