It always bothers me when my fellow software gurus share with me that they are stressed because management is subjecting them to unrealistic timelines. From a management standpoint, the argument always seems to be that the team is poor at predicting delivery timelines or inefficient at managing the software development lifecycle. On the other hand, the software team will argue that it is the result of feature creep, unclear requirements, moving targets, added responsibility and insufficient resources. Having been burnt both sides of the coin, I can attest that there is an element of truth in all the above reasons. However, the myriad of books that have been written on how to run software teams, design software etc., seem to have little or no effect on most companies, especially startups, delivering poor quality product usually very late. Maybe they didn't read the books or maybe the problem is more deeply rooted than simply getting teams to write better and high quality software.My personal epiphany is that the key to successful software companies is strong product management. I think we all kind of know what product management is supposed to do...define the product right? But think what happens when there is weak or no product management...some scenarios...
- The CEO is at liberty to make changes to company direction and vision without understanding the impact it has on daily operations and delivery commitments.
- The sales team will invent features to land deals or make functionality promises that are either not possible or not feasible in the delivery timeframe.
- The software architect has no agreed short and long term road map and will either under or over design the system.
- The developers without well-documented use-cases make assumptions that are not necessary what is required.
- The quality assurance team really does not know what success looks like and what metrics are important to the company.
- The customer is uncomfortable because there is a lack of guidance of how the product will evolve over time.
What this translates to is poorly architected systems that are bloated, buggy and delivered late. Having product management does not automatically solve all the problems. Business reality dictates there will always be that one feature that is the million dollar deal breaker. New architectures and product features always have the propensity to encourage the unexpected. Those who worked with the early versions of Windows NT will remember (perhaps not so fondly) of the blue screen of death.
But having STRONG product management is a must, because it keeps everyone honest. I like to think of product management as a committee of stakeholders, namely, customers, the executive team, sales, marketing, technology, QA, documentation and delivery. But it is run by one person...the product manager. His role is to ensure that there is product roadmap (if you don't know where you are going, how do you know you will get there?) and most importantly, communicate the impact and consequence of EVERY decision that causes the company to deviate from the road map.
So next time you need to do due diligence either for a job opportunity, investment or acquisition, make sure you are comfortable with strength of product management, it should never be the weakest link.