Managing development of software product vs. software project.

What makes managing of software product development from software project development? What are the key issues we have to concentrate on?

Obvious difference which comes to our mind is that development of software product may consist of one or more projects. And vice versa is not possible.

Another way is to think in terms of hierarchy which is quite similar to the previous idea. Let’s call a product (or an application) XYZ. XYZ has a variety of projects that must be completed to offer XYZ to the public. Besides the obvious coding and testing of an application (also there might be different projects targeting different markets like the USA and the EU), there are marketing projects, perhaps packaging and/or distribution considerations, and at least one “support” project to model. It might contain even more.

But still it doesn’t help us to indicate key differences. Here come definitions.

‘Software Product management’ – as it refers to in current industry is the process of conceptualizing a product and handing it off to development.

‘Software project management’ – is the process of developing the software product and taking it to completion in the given budget and time. The budget and time are put forth during conceptualization/product management phase.

Scope

The product part of software product development implies the inclusion of market planning and launch as part of the scope of activities. Product Managers handle a very different scope than project managers. Of course in small companies, one person may wear both hats.

Product managers deliver products to business strategy and may have P&L responsibility for the product throughout its lifecycle – from concept to end of life. This lifecycle may include software projects.

Project managers deliver specific scope to schedule, within budget.

Typically a software project produces a set of code in some form designed to solve a specific set of business requirements, either internal or for the market. Software projects ideally follow a Software Development Life Cycle or SDLC and involve steps including requirements development, architectural design, coding, and testing. Once testing is complete, software destined for a product is integrated and launched to the market. Software for information technology is deployed. These final activities may or may not be included under the scope of the specific software project. The whole of a software project is part of the overall management of the product.

Customer segments

So there are some internal software projects with very complex sets of customers that are as demanding as simple external software products developed for a few types of customers — but these are exceptions.

Generally non-product software projects are done to satisfy a set of customers and stakeholders known at the beginning of the project.

A software product project also starts with targeted customer segments, but has the hope that the customer base will expand beyond that in the future. So getting the architecture right is even more important. Competitive issues also require careful consideration.

Product management is NOT the management of a number of sub-projects. That’s program management.

Design

Product development needs to be designed to be “generic” and flexible to cater to unknown scenarios. For a project development, the design need not necessarily be very generic. Assumptions can be made, and some hard-coding may be allowed. However, it is always a good practice to follow the industry standard patterns, and design methodologies.

Testing

Product development testing is more complex, since it needs to consider all possible scenarios – in terms of functionality, volume, and performance. For a project, typically the user base, business process, scenarios, and volume/performance are known, and specific tests can be done to accommodate the requirements.