Is your software development process as unpredictable as the weather? Is your software casting a shadow causing six more weeks of programming? Are you using a marketing requirements document (MRD) or magic to predict your software release schedule?
Early in my career, I worked in a lab for a company that sold microwave devices. I was responsible for the HP computer system that ran the software used to design the circuits. One day a tech support guy from HP came by. He asked what we did in the lab. When I told him “designing microwave circuits”, he said, “Oh, I hear they use a lot of FM”.
I paused and tried to remember if Frequency Modulation was really used in these circuits. Before I could respond, the guy from HP continued, “Yeah, it takes a lot of F—–g Magic to make those circuits work!”
He was right. A major issue with microwave circuits in those days was creating them with a high-yield manufacturing process. Too often there was much tuning and tweaking of individual devices with toothpicks and tweezers to make shipment dates.
Since then I have worked on a few software projects where some amount of “FM” was required to get the software released.
How about your software projects? Do they drift along never seeming to finish? Do they require the heroic efforts of a few individuals to make your shipment dates?
Outsourcing can solve the issues of delayed software releases by imposing more process on your software development – more process than is typically used in an organization where everyone is working in close proximity.
Outsourcing vendors need to have a well-defined process and excellent communication to be successful. Software development is all that they do. Outsourcing not only gives you the benefit of having your software developed for less cost, but also a process that provides improved predictability, results and success.
But many remain fearful of outsourcing. The number one concern is losing control of the software development process.
One client expressed it this way. “I can’t just tell the programmers what to do on a day-to-day basis. It would be like hiring a contractor to build a house and telling him to put a window over there and a door over here. You have to understand what impact that will have on the plumbing and electrical and the building of the rest of the house.”
He is right. You need to have some idea of the architecture and the plan for construction. Working together with a few programmers in the same room can sometimes let you make some shortcuts and share the plan by informal word of mouth. ?Just put a pop-up window over here.?
Except for small and simple projects, this informal communication does not work. You need some description of the requirements for the software. You need to find a way to efficiently communicate the requirements of your software so you can move beyond the “idea” stage with the vision for your software.
The first step in creating a software product is to write a Marketing Requirements Document or MRD. It contains a brief description of all the features, functions and benefits your product must have to be successful in the marketplace.
Some companies make a distinction between an MRD and a PRD – a Product Requirements Document. The PRD has more details on what the software should do. For example, you need both an MRD and PRD when you are creating several services and products. The MRD describes the product strategy, market positioning and sales channels required to deliver the products with specific sets of functionality to the market. The PRD on the other hand focuses on the detailed requirements of the software itself.
The MRD or PRD should include basic architecture and the critical user interface for your software:
Hardware platform selection
User interface design
Multiple ?use cases? describing how users will interact with your software
Story board demo (optional)
Major release milestone schedule
Quality Assurance testing
Technical Documentation requirements
Detailed schedule (up to completion of first major milestone)
Cost estimate for cost-efficient and time-effective outsourcing development
Your marketing requirements document or MRD describes the functionality of your software product and how it will be sold and distributed. It is also a device to control your software development process, especially if you outsource. Otherwise you run the risk of delays, poor quality and just not knowing what you are doing.