Miscommunication is at the heart of most software defects. Being knowledgeable about a company as a whole, and not just about the specs of a particular project, is just one more way to safeguard against failures. Read on as Elisabeth Hendrickson explains the importance of technical people staying informed about business strategies.
I have a theory. I think that technical people are being insulated from important business matters. Perhaps it's because management wants technical people to concentrate on technical concerns. Perhaps it's because management isn't convinced that technical people understand anything about business strategy. Whatever the reasons might be, I want to put my theory to the test.
Think about the project you're working on now. Mentally examine your part of it, then expand your mind to encompass the entire project. Think about all the groups working on it and what they do. Think about the timeline. And think about the anticipated end result. Got all that firmly in the forefront of your consciousness? Good, because it's quiz time. See if you can answer the following questions:
- Why is this project important?
- How does it contribute to the long term strategic direction of the company?
- How will it improve the company's competitive position in the near term?
- How much will it cost?
- What financial benefits (reduced costs, increased revenues, etc.) will the project bring?
- Who will benefit most from a successful outcome to this project?
- What will happen if the project fails?
- What capabilities will the users find most compelling and why?
- If users don't use this software, what will they use instead?
- How well would the majority of the technical contributors on the project answer these questions?
My final question is more personal: how did you feel when you were answering those questions?
If you felt confident that you understood both the marketplace in which your company operates and the business case for your project, you're probably in the minority. More often I find that technical people (who themselves are usually quick to chastise management for technical cluelessness) are unaware of the business reasons behind project decisions.
No wonder many software defects boil down to miscommunications. It's difficult to understand what you're building if you don't know why you're doing it.
Let me give you an example of the importance of "why."
Early in my career I was put in charge of document production at a small company. Eager to be precise, I provided precise measurements for the spacing of 3 holes along the left hand side of the 8.5" x 11" booklets. The day before the documents were due back, Barry, the manager at the document reproduction company, called me.
"Why do you need the holes in these documents?" he asked.
"Uh, so I can put them in 3-ring binders." I replied, wondering where this conversation was going.
"That's what I thought," he said. "In that case, whoever did these measurements is smokin' something." I blushed furiously; glad he couldn't see my expression over the phone. That would be me , I thought to myself. Barry continued, unaware of my embarrassment, "They won't fit in a 3-ring binder at all. Should I just punch these for a 3-hole binder and ignore the measurements?"
"Yes," I replied meekly. As I hung up the phone I realized that I'd made a silly mistake in trying to be so precise. My intent was to ensure that there could be no room for miscommunication. Instead, I'd almost caused a disaster. Fortunately, Barry had enough experience with documents that he guessed my intentions. Knowing intentions is the key to requirements. That's the difference between "recorded requirements" and "real requirements."
I often see requirements that read like my specifications for the three holes in the documents. They're precisely worded, but there's no hint about why the software should do what the requirements ask.
"The window shall be no more than 800x600 pixels in size."