Archive for October, 2007

Selling Software Quality to the Project Team



In my ideal software development world… “Quality is everybody’s job”. If you could help negotiate and create that world where quality is everybody’s job, what would your Quality Contract Proposal to the project team be? Recently I submitted to my project team something similar to this:

Team Quality Tasks

  • Communication

    • Daily, morning 5-10 minute stand-up meetings for quick progress and issue reporting
    • Team notification of document and code changes

  • Documentation

    • Requirements required
    • All documents are stored in a common area for easy access, check-in/out and versioning (e.g. SharePoint)

  • Code Reviews

    • Large code reviews are scheduled during stand-ups
    • Peer code review before check-in for small or quick changes

  • Use of Development & QA metric tools

Developer Quality Tasks

  • Unit Testing

  • Builds

    • Dedicated build box for build integration.
    • Build and test on check-in.
    • Build and unit test run schedules (e.g. hourly, daily).
    • Automated build success and failure notifications.
    • Build Integration rules

      • Get latest from source control, merge, compile, and unit tests success before source control check-in.

    • Official builds released to test

      • Starts on functional section code completion. 
      • Developer collaboration and agreement on release time and contents.
      • An owner for release to test (owner checks with team to ensure release readiness).

  • Provide “Quality Hooks” that don’t impact performance or usability (e.g.)

    • Use of special image naming.
    • Use of special ID and name attributes.

Tester Quality Tasks

  • Participation in design meetings and discussions.
  • Review and feedback of requirements draft document.
  • Review of Developer unit tests to provide suggestions for improvement as well as get a better feel how/where to provide further test coverage.
  • Testing

    • Functional

      • Testing starts on functional section code completion
      • Utilizes test case libraries for common tests (HTML elements)

    • Automation

      • Scripting starts on functional section code completion

    • Performance, Load, & Scalability (typical and per functional unit if needed)
    • Other

Some of these items may apply to your company or team and some may not. Each has its benefit, each has its cost. In my experience the benefit outweighs the cost. Wouldn’t you agree that this Quality Contract Proposal is a good place to start? Do you think it it may be a little far fetched for your company or current process? How about starting smaller then? Throw the list out there and get the team to commit to 25% of the items. When the project is over, take the lessons learned and infrastructure built from that 25% and use them in the next project, but now since that 25% is tried and true, ask for 25% more. Then 25% more…Get my drift?

Baby steps are okay. Be a salesman for software quality, negotiate that Quality Contract!




Back in January I defined an ass-load of hard drive space. Pondering that subject left me with another item in the “To Blog” list that I’m finally getting around to.

What exactly is “half-ass”?

Back when I was young, when it came to doing my chores my Mom consistently claimed that I did them half-ass. More specifically: “You’re not done. THAT’S HALF-ASS”.

The flashbacks to those days where I was scrubbing toilets with tooth brushes will certainly cause me to weep as I write this post, but the tears of pain will turn to tears of evil laughter as I remember using my brother’s tooth brush to scrub the toilet.

Back to my point. Err.. Starting my point that is.


A donkey cut in 1/2 horizontally?

A miniature donkey?

Exerting force with only one butt cheek?

A donkey cut in 1/2 vertically?

Half the load that an average donkey can carry?

Honestly Mom, what the hell do any of those that have to do with me pulling weeds in our 1/4 acre backyard, for 4 hours, for $1.00?

UrbanDictionary votes the definition of half-ass to be:
1) Done half-way
2) Not done with quality

Ah, yes. My work was half-ass, as in definition #2, “Not done with quality”

Ironic isn’t it? The Quality Assurance Engineer, Brent Strange, did his chores…

(e.g. family laundry, empty the dishwasher, mowed the lawn, trimmed the edge of the lawn on his hands and knees with a cheesy Black & Decker edge trimmer, weeded the bark-dust, weeded the garden, baby sat his brother, vacuumed the house every other day…yeah I was 8, but I’m not bitter)

…so that they were “Not done in quality”

And here we come to the end of yet another career limiting post. Thank you for your time. Get back to work you half-ass.

Still here? You have a real motivation problem. Time for a reality check… Is your ass half full or half empty?

Comments are working again


Comments are working again. I narrowed it down to the search form I had on this page. For some reason the plain and simple <form></form> tag, using Internet Explorer, and .NET 2.0 causes the following error:

System.ArgumentException: Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation=”true” %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
at System.Web.UI.ClientScriptManager.ValidateEvent (String uniqueId, String argument)
at System.Web.UI.Control.ValidateEvent (String uniqueID, String eventArgument)
at System.Web.UI.WebControls.TextBox.LoadPostData (String postDataKey, NameValueCollection postCollection)
at System.Web.UI.WebControls.TextBox.System. Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection)
at System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
while processing

So, for now, no searching from the site. But at least you can comment! You can always search the site using Google though:

I’ve been avoiding blogging for a while now due to being so frustrated with the comment issue (I probably spent 4 hours, here and there, debugging this thing).  I have a few posts in the queue that will be coming your way soon.

Post navigation