Iain Downs - Commercial Software Consultants

Making great commercial software

The Problem

Everyone who's attempted it knows that developing commercical software is hard. And most of us have tried to use commercial software that just proves the point; it doesn't do what we want in the way that we expect it to!

As a technologist who has succeeded in this task, I've spent a great deal of thought in trying to understand and overcome the communications and business issues and the methodological challenges that face us all.

This presentation outlines my approach to overcoming such stresses and strains. It shows a structure which will analyse and ultimately resolve them and help to deliver seriously competitive software

The Problem

Often, technology seems to be an isolated department. No-one else understands what they say and no-one else feels they quite get through.

But in truth there are necessary linkages between technology, three internal departments and three external areas. If these links are weak or too tense, then the result is imbalance, inflexibility and poor performance

The Internal Relationships

Internally, the Technology team has important relationships with three departments, Marketing, Sales and the Board.

I've actually worked as a sales manager and a board member as well as interacting extensvely with other departments - especially marketing, so I've seen the situation from both sides in many cases.

Marketing - Features and Functionality

Marketing's job is to understand the customer, the competition and the market. But there's a tension here. Marketing do this well, but are not equipped to deeply understand the technologies that are currently being used or under development, so their research tends to reflect the present and the past - not what may be.

Technology can help here - they do know where things are going. But they don't clearly understand what the customer wants or what the competition is doing - which is where Marketing is so vital!

The relationship between Marketing and Technology defines the Features and Functionality of a product. If this link is weak, then the features won't meet the needs of the customer at best and could catalyse missed targets / increased costs at worst.

Communication is the key here. I speak both languages!

Sales - Product Delivery

A forceful salesman comes back from a meeting and tells a developer, 'I can sell HUNDREDS if you make this change'! The bemused developer does this (possibly without telling anyone) and the next version has this unexpected new feature. Did this change really sell hundreds? Did it add more value than it caused confusion? Likely no one will ever know.

The relationship between Sales and Technology sits in Product Delivery. If this link is weak - if the sales force don't understand the product or find it awkward to sell then there will be confusion and poor revenue.

Of course, it's normal and positive to see tensions between the demands of the sales force and development priorities - but this tension needs to be managed to keep it productive.

Make sure you have some way of tracking changes. It may be simply a weekly meeting with notes or a full change control system.

The Board - Budgets and Timescales

The Board has a responsibility for setting strategy, monitoring progress and risk management as well as ensuring that process is transparent. But the technologists and the Board don't seem to talk the same language.

The Board just KNOWS the development is going to cost more than estimated and take longer. And the technology team just KNOW they have been pressed to pare down estimates below the realistic and anyway there will be at least one major change of direction in the project which will mean their plans all get thrown out!

The relationship between the Board and Technology focuses on Budgets and Timescales. Getting this right is critical to profitability and trust.

Make sure the board engages with technology decisions. They must understand the risks of choices made. This is a dynamic process - risk changes as we discover new options and aspects of technology.

External Factors

But the Technology department also has to maintain external relationships.  It's a fast changing world and good technologists have to be aware of best practice, technology advances and, of course, the customers and competition.

Sometimes these can be the hardest areas to keep balanced - because the pressures from inside the company are much more immediate. Nonetheless, these are critical areas.

Best Practice - Risk Management

The relationship between Technology and Best Practice is about Risk Management.

Risk Management is not just about identifying potential problems and alternatives in the development process; it’s also about understanding the value of architectural or product features so that risk can be balanced against benefits. Furthermore, technologically novel aspects of a project should be identified and trialled early in the development process or even before it starts!

Best practice is not something that is mature for our profession. To start with the tools and implementation processes are changing faster than the theorists can keep up with! A process which supports Risk Management is key but the nature of this must depend on the company, the culture, the technology and the kind of software which is being developed.

Processes which work have good communications with all stakeholders and are flexible; what we start wanting is rarely want we finally understand we need!

Technology Advances - Technology Learning

You may think that techies are always up to date in the latest technology, and that is certainly their goal. But in fact, there is simply too much changing to keep up with more than a fraction. This may be particular true of technologies related to process or perhaps technologies that competitors use but your company does not!

The relationship between Technology and Technology Advances defines the Technology Learning of the organisation. It's important that you know what your people already know and that the right new knowledge is discovered and distributed to the right people in your team.

Make sure you have developers tasked with being expert in your key technologies. Have them build presence and relationships in Forums.

Customers & Competitors - Product Priority

What are your development priorities? Without understanding customer need and competitive offerings, the development plan may start with features which are less business critical and the important ones may fall off the end if development slips.

The relationship between Technology and the Customers and Competition helps define the Product Priorities. You should develop the features which provide the most value first so that you have a sensible choice between slipping delivery or reducing features if time gets tight.

Furthermore, it is imperative for the development team to try and see the product from the customer's point of view. The more direct the relationship, the easier this is.

Make sure your development team have played with competitors products and tried to take them apart; show them parts you like and parts you hate.

Strategic Challenges

As well as these 6 tactical interactions with the Technology Department, there are another 6 relationships formed by our model. Each of these relationships interacts with Technology in a strategic way - let's see how.

Threats and Opportunities

The interaction between Technology Advances and Customers and Competition defines Threats and Opportunities. Traditionally, Threats and Opportunities are the province of Marketing, but without support from the Technology department how can they understand the implications of changes in underlying technology and simply what can be done?

The triangle formed by this combination should define the product Architecture or Road Map.

Ultimately the product road map is the synthesis of the technologist's vision of how the underlying technologies will develop and a collective view of how the customer needs will change over time. Although it is nearly inevitable that a technology road map will change over time, it is important to have a shared goal for all to aim for.

Do think ahead past the next release. The balance between getting a product out the door quickly and making it easy to extend is a tricky one, but important.

Business Case

The Business Case for commercial software product's is often generated by the relationship between the Marketing Department and the Customers and Competition. They identify needs in the market and deficiencies in their and other products.

But the business case depends fundamentally on what is possible and how much it will cost. Technology must provide this together with the vision of can be done - and furthermore this will work best as a strongly interactive and iterative process.

The triangle defined by this combination represents the Product with its features and benefits and development priorities.

Be realistic about the value of features - and the risks associated with them. Implement the most profitable features first and the nice-to-haves later.

The Sales Proposition

Marketing define the sales proposition - and sometimes Sales blow it out of all recognition! Ultimately it is the Technology department which knows what the system does and can help balance this equation.

Moreover, this triangle defines the Saleability of the product. Something given far too little thought.

If developer time and Marketing and Sales thought can reduce the time and effort to sell and support the product, this can be paid back by decreased cost of sales and support over the entire product lifecycle - and so a bigger bottom line.

Can your products sell themselves? Or at least reduce the time your sales force spend in sales meetings through demos, example data. organisation of features and so on.

Revenue Delivery

Ultimately the Board look to Sales to Deliver Revenue, but this is reliant on quality and timeliness of the Product built by the Technology team.

This triangle is about the Bottom Line. Is the product or company profitable? Have we sold enough? Did it cost too much to build for the revenue? Are ongoing support and selling costs too high? All of this flows from ensuring that the product is right.

Check what the customer really needs and compare it to the development risks. Don't build high risk bits no-one wants.

Process mapping

The Board are rightly concerned that development is done the best way that it can be; that 'Best Practice' is followed.

But best practice is an uncertain thing in such a young and swiftly changing profession as software development. There simply is no commonly accepted best practice and the attempts to introduce best practice from other fields (such as engineering) have not succeeded. So it is up to the Technology team to work out what best practice is for their company and competitive sector, technology, culture and product and ensure that this is clear to the board.

The triangle around this area is about reporting. Does the Board know what is planned and what is happening in the process? Can they make sensible decisions when options are presented and if the unexpected happens?

Make sure the board are kept up to speed - especially on issues. Being late is not exactly unheard of in software. But finding out about problems TOO late to make choices is bad.

Tools

Like much other software, software development tools can prove unwieldy and hard to learn. But without basic tools like source control and bug tracking, development is chaotic.

And many of these tools can amply repay their costs and learning curve with hugely improved productivity. Things like build management, UI and database designers and refactoring tools can take a great deal of tedium off the developer leaving them to focus on the hard and creative parts of development.

The triangle formed between Best Practice and Technology represents the Methodology of the development process. Choosing or designing an appropriate methodology produces huge dividends in the smoothness and transparency of development.

Development must have a methodology. But it need not be a burden. Where possible design or select your methodology to be flexible.

Summary

So you can see that the development process is complex. What's worse is that these relationships are rarely well understood and can easily get out of alignment.

Creating great commercial software requires a flexible and holistic approach with all the linkages working smoothly; Far too often each area operates in it's own Silo with not enough communication.

And it's easy to see why. Commercial software development is a young discipline and still changing rapidly; the best practices and interactions with older disciplines are still being worked out.

The question is, what can be done to make the process help you compete better in today's rapidly changing and competitive environment?

How I can help

It's easy enough to see if you have specific areas or linkages that are unbalanced or too rigid. Simply take the diagnostics - a 2 minute questionnaire which lets you analyse your organisation and check out the results.

This is a good indicator of the stresses and strains in your commercial software development.

Talk to me - I've spent a great deal of time distilling my 25 years experiences into a model and a methodology which can help others learn from my experience.

Let's make your software help your profits!

Features and Functionality
Product Delivery
Budgets and Timescales
Risk Management
Technology Learning
Product Priorities
Threats and Opportunities
Business Case
The Sales Proposition
Revenue Delivery
Process Mapping
Tools