[This post is the third of a series defining software quality].
Aligning vendor development plans and customer needs is a major challenge for software quality. The software vendor targets market expansion via product development. Examples might include expanding the number of technology platforms supported, adding new functional components, eliminating redundant products, or chasing analyst approval by building the latest acronym (SaaS is a current example). Typical projects are resource intensive with long term goals and time lines. Additional sources of change that must be incorporated in vendor development plans include technology innovations (e.g. XML or smart phones), government regulation (e.g. new 1099 rules, changes to accounting standards), and business process changes mandated by the customers’ business partners (with associated fees for non-compliance). The customer personal agenda will include improved support for the customer’s own business expansion – lean production or customer self service. The customer typically has near term goals to meet, thus shorter time lines. Achieving quality in meeting customer needs requires a balancing of all these interests.
The largest problem facing development plans is the large time frame they address (typically 5 years). This does not match the environment the plan is designed to address. Disruptive innovations happen more frequently than every 5 years (personal computers, relational databases, client server architecture, the internet, windows interfaces, Java and C++, browser interfaces, XML, SOAP & web services, smart phones, tablet computers – all in the last thirty years). Regulatory change is an ongoing need as governments at all levels tinker with reporting requirements, mandate new electronic filings, and expand the scope of regulation. New customer requirements arise as each customer identifies opportunities in their business. In short, there is too much volatility in the environment for any formal development plan to be worth the paper it is printed on [ed. or electronic media it is stored on].
Thus the problem becomes how does a software vendor prioritize its portfolio of development projects (both known and unknown) to meet the personal agendas of the customers while achieving its own objectives? The answer is by committing projects for the short term and keeping options open for the medium term the vendor and customers will be around for the long term. This strategy is formally known as maximizing the adjacent possible, a proposed explanation for successful evolution in a rugged fitness landscape (lots of change, lots of competition). [ed. more on this idea here]. The vendor prioritizes development projects which lower the cost of future projects. Then new functions or customer needs become possible as short term projects (adjacent to existing product). In short, new releases emerge from an expanding portfolio of possible enhancements.
The preceding paragraph is rather egg-headed, what does HarrisData do to manage its development portfolio? [ed. check the Aggressive Quality white paper for more detail]. First we identify projects which address technology innovation. Second we identify regulatory changes. Third we identify functional enhancements made simpler by technology innovation. Finally we put all that on the back burner as customers participate in the Collaborative Development program. The Collaborative Development program allows customers to prioritize development projects that benefit them — moving valuable enhancements to the front of the line. Thus customers have the option to adjust HarrisData’s development schedule (or insert something new into it) where it makes sense for their operations. At HarrisData, the customer’s personal agenda takes priority over our plans in the short term while we generally accomplish our agenda over the medium term. We directly measure the quality of meeting customer needs by the percentage of customers using the current or prior release in their production environment – over 85% for the past decade.