Two Days with Alistair Cockburn

I recently attended an Agile Development Product Owner class taught by Alistair Cockburn.  The content was excellent.  He taught us about the proper perspectives an Agile Product Owner needs to successfully interact with the project sponsors, users, and the development team.Alistair Cockburn has authored several books on Agile Development, and is one of the original signers of the Agile Manifesto.I would describe Alistair's environment as squirrely and fun.  We built user-stories out of the Rumpelstiltskin and Cinderella stories (from the original Nicht fur Kinder European versions--full of violence and gore!)We also discussed the differences between Use Cases and User Stories.  I was happy to hear he prefers Use Cases, because so do I.All class attendees had already been through the Scrum Master course, so as we executed sprints for our product backlog, it was interesting to see how many attendees actually sought the sponsors/users feedback during the iterations--without being reminded.Overall it was an educational and enjoyable experience.

Mike J. Berry

How to Compute Defects Removed from Release Candidate Code

Recently someone on asked me to explain how to compute the defect removal rate for release candidate software.  There are two methods for producing this number and I teach both in several of my seminars, but I'll explain the simpler method in this post...

Lawrence Putnam presented this model in his 1992 Book titled Measures for Excellence.  His book reads more like a math text than a software development guide, and suffers from an unfortunate formula typo which has lead to widespread confusion about his models in the industry, but I will  explain his defect removal rate calculation process.  (I hired a math wizard to examine his data and correct the formula!)

1. For a typical project, code is produced at a rate which resembles a Rayleigh curve.  A Rayleigh curve looks like a bell curve with a long-tail.  See my ASCII graphics below:


2. Error 'creation' typically happens in parallel and proportional to code creation.  So, you can think of errors created (or injected) into code as a smaller Rayleigh curve:


where '|' represents code, and '+' represents errors

3. Therefore, as defects are found, their 'detection rate' will also follow a Rayleigh curve.  At some point your defect discovery rate will peak and then start to lesson.  This peak, or apex, is about 40% of the volume of a Rayleigh curve.

4. So, when your defect rate peaks and starts to diminish, factor the peak as 40% of all defects found, then use regression analysis to calculate how many defects are still in the code and not found yet.

By regression analysis I mean if you found 37 defects at the apex after three weeks of testing, you know two things:  37 = 40% of defects in code, so code contains ~ (37 * 100/40) = ~ 93 errors total, and your finding about 10.2 defects per week, so total testing time will be about 9 weeks.

Of course, this assumes complete code coverage and a constant rate esting.

Hope this is clear.

Mike J. Berry

25 Most Dangerous Information Security Programming Errors

Want to visit ground-zero for data security?  Experts from SANS, MITRE, SAFECode, EMC, Juniper, Microsoft, Nokia, SAP, Symantec, and the U.S. Department of Homeland Security's National Cyber Security Division last week presented a listing of The Top 25 Most Dangerous (Information Security) Programming Errors.  Expect to see future government and big-money RFP's mandate these items be addressed.

Mike J. Berry

Anatomy of an Execution Plan

Have you been challenged with performing a high-risk task like upgrading a prominent server, for example?

Here's an execution plan template that you can use to guide you.

I. Executive Summary
Brief overview of intended event.

II. Review of Discovery
Details of what efforts were made to research what is listed in the following sections.  Meetings, Vendor consultations,  Online Resources, and Conventional Wisdom can be included.

III. Pre-Upgrade Procedures
Steps identified to be taken before the event.

IV. Upgrade Procedures
Steps identified to be taken during the event.

V. Post-Upgrade Procedures
Steps identified to be taken after the event.

VI. Test Plan
Verification procedures to confirm the event was a success.  This section should define the success criteria.

VII. Rollback Plan
In case the worst happens, what to do.

IIX. Situational Awareness Plan
After-the-event steps to validate the success of the event with the system's business users.  This would include a two-way communication between your group and the business users, announcing the success, and providing contact information for them to contact you in case there is still a problem.

IX. Risk-Management plan
A plan listing risks associated with the steps above and recommendations as to how to lower those risks.

X. Schedule
If the event spans many hours or days, you may want to draft a schedule for the benefit of all involved.  Include on the schedule the 'rollback point,' which would be the latest time a rollback could be successfully performed.  Your success criteria whould have to be met by this point to avoid a rollback.

Be sure the Execution Plan is in a checklist format, not a bullet-list format.  Require participants in the event to 'check' completed checklist items and sign-off sections they are responsible for.

For critical areas of high-risk, (ie: setting up replication), for example, you may want to require two individuals to perform the checklist steps and sign their names when that section is complete.

If you like, add a 'lessons learned' section to be completed later, and ke copy of the execution plan for historical purposes.

Mike J. Berry

Improving Employee Morale

As a software development management consultant, I'm always looking for innovative ways to improve employee morale.

My friend and associate, Greg Wright, told me about an interesting process for improving morale that his company practices.

They have an appeasement committee and budget.   The appeasement committee is a group with one representative from each department.  Each month, a different member of each department is represented in the group.  If certain corporate goals are met, the committee plans an event for the company for that month.  The events are simple and not too expensive:  bowling, or mini-golf and pizza, etc.

What I find valuable about this example is that five important objectives are met:

  1. The individual employees are empowered by being able to participate in the suggestions to improve morale.  This personal involvement is more meaningful to them, and more appreciated.

  2. If a committee and a budget is in place, morale-building events won't take a backseat to unexpected fires, or brand new deadlines.

  3. The effort-vs-reward principal is set in motion, which is one of the foundations of capitalism.

  4. Corporate goals get communicated, and emphasized, and are constantly on everyone's minds.

  5. Team-building outside of the stressed work environment will occur.  This brings a fresh dimension to work-place teamwork.

Morale building is important because it separates the sweat-shop jobs from the career jobs.  This simple process can do wonders for your organization.

Mike rry

Excellence over Heroics

I value Excellence over Heroics.

'Excellence' can be defined as "the crisp execution of established procedures."  Think about that for a minute.

Do you know of a software development shop where several prominent developers often stay up late into the night, or come in regularly over the weekend to solve high-profile problems, or put out urgent mission-critical fires?

The thrill of delivering when the whole company's reputation is at stake can be addictive.  I remember once staying up 37 hours in-a-row to deliver an EDI package for a bankers convention.  I was successful, delivering the application just before it was to be demo'd.  I went home and slept for 24 hours straight afterwards.

The problem with 'Heriocs' is that the hero is compensating for the effects of a broken process.  Think about that for a minute.

If heroes are needed to make a software development project successful, then really something upstream is broken.

Most problems requiring heroics at the end of a project stem from improper effort estimations, inability to control scope, inadequate project tracking transparency, mismanaged Q/A scheduling, unnecessary gold-plating, or inadequate communication between the development team and the project users/stakeholders.

A well-organized development group humms along like a well-oiled machine.  Proper project scoping, analysis, design deconstruction, estimating, tracking, and healthy communication between development and the users/stakeholders will bring that excellence that trumps heroics.

Hey, I hear that Microsoft is looking for some Heroes.

Mike erry Passes the 100 Repeat Visitor Mark, the 'News from everywhere, every 10 minutes' website has officially passed the 100+ repeat visitor mark!  This site was launched in May of '08 with no advertising at all, and now enjoys more than 100 repeat visitors, and over 1000 unique visits per month.

I classify a 'repeat visitor' as somebody who has come back four or more times.   The number four is kind of arbitrary, but I think somebody who comes back only once or twice is not really a captive audience participant.  They are more link a potential customer peering into the store window. was created to bring headline news to people who, like me, love to read the news.   We love it so much, in fact, that that's all we want to see on the site--news headlines and nothing else.

Have a BlackBerry and a few spare minutes between (or during) your meetings?  Go to and check out what's happing across the world!

Need to do research for education, work, or personal interest?  You can search for headlines topics from the past 18 months or so on the search page.

This works great if you are expected to know about something newsworthy in a short amount of time.

For example, a search for 'Obama' or 'McCain' and a quick headline perusal will give you a one-sentence summary of everything noteworthy these candidates have done for the past 18 months.  10 minutes on NewsCHIME and you be more infomed about the upcoming presidential election than more than 300 million other people.

Need research project material on the mortgage meltdown, type 'mortgage' and you'll see the unfortunate play-by-play.

Be sure to take note of what you will NOT see at  You will not see lots of useless links to various websites that have nothing to do with your topic.  You will not see pictures of dancing people,  and you will not see ads from GM, Chevy or eHarmony.

I almost forgot to mention, NewsCHIME has free news alerts!  That's right, Free!  Sign up and select which search criteria you want, and as those terms are named in news events you'll be the first one to know about them.

So, impress your friends, impress your boss, impress you teacher.  The faster you can get at information, the more beneficial your decisions will become.  Enjoy.

Mike J.

The Value of Information

The value of information...

Here's a fun site if you are a news junkie. is a simple site that grabs news headlines from major news sites and lists them in an easy-to-peruse text-only format.

I've got the site on my PDA which makes reading news articles perfect for that boring meeting or that inconvenient 10-minute wait you hadn't planned on.

An interesting feature on is the ability to search for keywords in past news headlines.  Want to know what has been newsworthy about Hillary Clinton, or Barack Obama?  Housing Crisis?  Gas Prices?  You can easily search for past headline keywords with this feature. also allows you to get news alerts sent to your phone or email.  I have news alerts sent to my phone about mortgage prices, home-loans, home-lending, and foreclosure because we talk a lot about this at work.  It's been fun to be the first one at the office to know the latest. is a free service.  Enjoy.

Mike J. Berry

Software production Support (DevOps, before we called it DevOps)

In a conversation with a friend once, they jokingly described their inability to play racquetball against other seasoned players as "They are playing racquetball, while I am just hitting a ball around the room."

I'll borrow that reference and apply it to Software Production Support.

Is your Software Production Support group "playing racquetball," or are they "just hitting a ball around the room?"

From a distance they can appear like the same activities.  On closer inspection however, one is much more organized, elegant, patterned, and proactive--while the other is only reactive.

Finding the order from all the choas separates the effective from the ineffective.

There are three particular areas your Software Production Support team should be focus on.  These three areas are:

1. Maintaining Systems
2. Managing Customer Expectations
3. Become a Quick-Reaction Force

1. Maintaining Systems:

Think of your production servers like a fleet of cars.  In a fleet plan, the company sends every car to get an oil change after x number of miles, a tire rotation after y number of miles, and a general tune-up, fluid change, etc. after z number of miles.  This pattern repeats itself for the life of the car that is serviced by the fleet manager.

How often are your server hard drives defragmented?  How often are the transaction-logs backed up?  How often are the indexes reindexed, and the statistics updated?

How often are memory settings adjusted for performance? Latest patches applied? How often are your servers checked to see if there any impending disk space issues?

To maximize system performance, create a "fleet plan" for your servers which checks all of these items at regular intervals.

2. Managing Customer Expectations:

If a server fails, do you know which systems depend on it? If a database goes corrupt, do you know which applications need it, and which corresponding business units will be impacted when that happens?

Do you have a way to communicate to those groups immediately?

Create a dependency map for your products.  A dependency map illustrates which servers host which databases, and then which databases are used by which applications, and finally the names, numbers, and email groups of the business users that are affected by that server/database failure.  This will enable your team to proactively manage your customers expectations.  You can notify them before they have to notify you.

3. Become a Quick-Reaction Force:

The SWAT team, the FireStation, and the Ambulance services all have something in common: they are ready to take action at a moment's notice.

They have the information they need available to them, and additional services available with a simple call.

Do your products have support information organized and readily available?  Do you have the names and numbers of your account representative for each third-party product or tool you support?  Do you have the product-support phone numbers and your support plan credentials readily available?

Do you know who knows what about each application in your enterprise?  Who programmed it originally?  Who has supported it lately?  Which business units use it?  Where is the source code located?

Keeping information about each system updated in a central location should also be part of your "fleet plan."

Another effective tool for a Quick-Response group is a monitoring system.  Something that indicates the overall attitude of each of your production servers?  Disk Space available? Will the system reply to a ping?  Is SQL Agent running? Is that required Windows Service up and running?  Monitoring tools like Nagios can do this for you.

Another great idea is to keep a lessons-learned log for each component you support.  Track problems, fixes to problems, assumptions to be confirmed, and ways to test if the component is functioning properly.

All of these pieces in place will make your production support much more effective.

So, think about your Software Production Support team playing racquetball, or are they just hitting a ball d a room?

Mike J. Berry