Dr. Diomidis Spinellis, Professor and Head of the Department of Management Science and Technology of the Athens University of Economics and Business, and director of the Business Analytics Laboratory (BALab).
You may not have realized it, but it’s highly likely that either the business you’re running is a software business, or it’s going to be disrupted by one. As Marc Andreessen famously wrote in 2011, “Software Is Eating the World”. Huge industries, from automotives and health to finance and entertainment, are increasingly centered on software. Ever more value is created through software, often delivered through online services. Managing such a software businesses, let alone the transition from an established one, is tough, because software’s ethereal nature offers infinite lucrative or catastrophic choices. A map of software business management tasks can help you navigate in the sea of alternatives along the most secure and profitable route.
Your business model and strategy
Start with your business model, the idea describing how you create value. Will that be a pure software product, such as Microsoft Windows, a software-hardware combination (consider the iPhone), or a service, such as Airbnb? Having a service component in your product offering is good approach, because it allows you to secure recurring revenue. However, this will also require you to invest in and manage the operations required to deliver the service. Thanks to the internet and cloud computing it’s now easy to include a service component into any type of software.
If your business model aims to supplant an existing one (think of Netflix moving from posted DVDs to video streaming) you must also plan and manage the transition and its upheaval. Existing revenue streams may dry up before new ones start bringing in cash, new people may be brought in and existing ones retrained, power structures and resources may be reallocated, and the organization’s culture may need to adjust to the new way of doing things. Most dramatically, a business model centered on software may not be able to deliver the comforts of an existing one; it may involve painful redundancies and adjustments for shrank revenue and profit margins.
Then consider your market and its diverse options. You can target enterprises or individuals, you can create a specialized product or appeal to the masses, you can cover a broad area or focus on a niche, and you can lead the market or complement an existing offering. Two features of software can guide you here. The low marginal distribution cost (the cost of adding another user) means that additional sales can often directly translate into pure profit. However, entering a mass market is hard; for example, more than two thirds of the millions of mobile phone apps are almost never downloaded. Software is also easy to distribute on a global scale. This can allow you to focus on a niche made profitable through its global scope.
A key part of any strategy is how you deal with competition. Software, and especially a service built through it, exhibits strong network effects: the value of your offering increases with the number of its users. Positioning yourself as a hub in a winner-takes-all field can be a remarkably lucrative move; think of eBay as an example. A related strategy involves offering a platform or an ecosystem, where your business can grow together with others that depend on yours, as is happening with Apple’s iTunes. Technology can play an important role here. The choice of open or proprietary file formats, application programming interfaces (APIs), and plugin mechanisms for software components can make the difference between failure and success.
Finally, as part of your strategy, you need to decide who builds your offering, by drawing your organization’s boundaries. Software construction may appear easy to outsource, but then what is the value you are offering? Also, given the huge productivity differences that have been observed among developers, your engineers are likely to be a strategic asset, rather than a cog in your operations’ machinery. You may be able to minimize licensing costs by using or modifying open source components, but so can your competition. You can even crowdsource software development and support to an open source software community, but building and maintaining a live volunteer community isn’t for the faint hearted, for it requires considerable investment.
You implement your strategy by managing the product or service you’re offering. Succeeding in this over time this can be a delicate balancing act. An important guide is obviously the set of features asked by your existing or potential customers. Less obviously, many other things determine your offering’s quality: its usability, security, maintainability, reliability, and efficiency. All these elements are at odds with each other and all drive up costs. Piling features generally reduces the software’s all other qualities. Also, increasing security reduces usability, increasing efficiency reduces maintainability and reliability, the list goes on. It’s your job as a manager to make sensible choices, to prioritize, and to handle expectations and risks.
If this wasn’t difficult enough, you also need to consider your offering’s stability and evolution. End-users often distrust a stale product, while enterprises typically value stability (until they ditch you for the new kid on the block). Swift technology advances and Lehmann’s Laws of Software Evolution, which state that software must continuously evolve, guarantee that, unless you constantly invest in it, your software will quickly become obsolete. Cruelly, each year it will become easier for your competitors to build a competing product while your software becomes less flexible and attractive. At some point the frightening possibility of starting afresh may be your only viable option.
To deliver your software or service you must manage its development and operations. Start by choosing the software development method you will follow. A lot depends on your customers. If they seek adaptation to changing requirements select an agile process, such as Scrum, whereas if they value stability you may want to go for a more predictive one. Your organization’s culture and staff’s experience will also play a role here. Your job also includes adapting the process to its environment, assessing its effectiveness and efficiency, and continuously improving it.
Based on the process you’ve chosen you need to manage the corresponding planning and enactment. Predictive processes will require you to invest time on process planning, deliverable definitions, effort and schedule estimations, resource allocation, as well as the management, measurement, and control of risks, quality, and your plan. An agile process will be even more demanding. Here you must bring the customer close to the developers, ensure the software’s frequent delivery, motivate individuals, empower teams to organize themselves, and promote technical excellence.
With software increasingly being offered as a service, the operations behind the delivery is another important thing you must manage. Here you need to coordinate people and technology to ensure the reliable delivery of a high-quality service. Elements to keep an eye on include infrastructure configuration management (controlling the setup of your IT), deployments, methods to address the inevitable failures, end-user experience and application performance monitoring, issue ticketing, and round the clock support.
Your processes are ultimately run by people, and managing them in a software business is no mean feat. As clever specialized knowledge workers, developers can’t be managed effectively through command and control. The tools you’ll use are motivation, empowerment, and trust. Keeping developers productive should be your number one priority. Eliminate distractions and waste, give them all the tools and hardware they need, and setup your organization’s structures in a way that allows them to write great software. Avoid the mistake of promoting stellar developers to become mediocre managers, by having a separate engineering career track. Attracting talent in a highly competitive marketplace, sharing your organization’s values among all developers, and keeping the expensively acquired and trained developers in your organization are also critical tasks.
Managing a software business is uniquely challenging and rewarding, because you work with people to sprinkle our world with software pixie dust. Make it so!
* An earlier version of this piece was published by the author in IEEE Software, 33(5):4–7 under the title “Managing a software business”. DOI: 10.1109/MS.2016.111