Tuesday, September 2, 2014

THE IMPORTANCE OF SOFTWARES

THE  IMPORTANCE  OF  SOFTWARES  CANNOT  BE   OVER EMPHASISED
While just about everyone uses a computer in some way, shape or form on a daily basis, there are relatively few people who understand how vitally important computer software is to the usefulness and functionality of even simple devices. From very basic items such as a digital watch, to handy innovations in cell phones, to the grand super computing behemoths that manage things such as space shuttle launches, none of these machines could function without the programming that gives them life. 

Essentially all programs and applications for computers are a set of instructions designed to create particular outcomes. A computer program is a collection of these instructions that have a common purpose. A collection of related programs to carry out coordinated computing tasks is referred to as a package.
 

One great example of a package of software programs would be an application that handles accounting related tasks. Such a package would have a number of modules, or independent programs, that function together to comprise a complete package.
 

For instance, the accounting package might contain a bookkeeping program, an audit program, a data base management program, a tax preparation program, a time tracking and billing program or any number of other related programs. In many cases each of these kinds of accounting programs could stand alone, but they become much more powerful when they operate together as a complete package.
 

These kinds of packages that contain various modules, or programs, have become very popular because the data is shared between the various programs. This reduces the need to re-enter data and eliminates tasks of exporting and importing information from one program to the other. This not only saves time but it also significantly reduces the possibility of errors, because even when data is not re-keyed there are numerous possibilities for data to become corrupt when going through exporting and importing functions.
 

All computers operate with what is known as system software, or the operating system. This programming provides the very basic instructions for how the computer interacts with the user and how the various programs and packages operate.
 

Windows is the most commonly used personal computer operating system, with the Macintosh OS X operating system being the next most common system. Other operating systems include Linux and Unix, which are often used in more high-end computing situations.
 

If you have computer work that needs to be done, then there are at least three components in play. The hardware is the first component which is actually what most people think of when talking about computers. The hardware includes the "box," the monitor, the keyboard, the mouse and any other physical components.

The operating system software is the second of the three components. Which operating system that runs on your computer will have a great deal to do with which programs you are able to operate and also will make a difference in how easy or difficult it is to use the computer overall. While Windows computers are more prevalent, many people say that the Macintosh computers are more user friendly because of the operating system.

The final of the three components of any computerized task is the specific software program that has been written to handle the required work. This relates back to the accounting program example which provided the specific functions related to the accounting tasks that needed to be done. Without these specific applications, a computer alone, even with a good operating system, will not provide many solutions or much functionality.
 “Through an analysis of its unique characteristics, evolving business role, and historical precedents, I will argue that IT’s strategic importance is not growing, as many have claimed or assumed, but diminishing. As IT has become more powerful, more standardized, and more affordable, it has been transformed from a proprietary technology that companies can use to gain an edge over their rivals into an infrastructural technology that is shared by all competitors. Information technology has increasingly become, in other words, a simple factor of production – a commodity input that is necessary for competitiveness but insufficient for advantage.” – Nicholas Carr, Does IT Matter?
Regardless of what one thinks about the wider implications of Carr’s assertions concerning the importance of technology, it’s clear that attitudes about differentiation and competitive advantage via software are evolving.
By itself, this is not news. Accelerating commoditization, driven most recently by open source software, has had major impacts on market competition. Vendors, for their part, have periodically recognized opportunities to rethink traditional software valuation; IBM’s formation of the Eclipse project is but one example of this. Today’s competitive differentiation is tomorrow’s commodity.
What’s changed is the scope of this realization. Once content to standardize technology infrastructure on a tactical basis, increasingly entire infrastructure stacks are composed from standardized, non-differentiating technology.
To illustrate this, consider the cases of Microsoft, Google and Facebook. These three firms represent almost generationally different attitudes towards the importance of software as a means of achieving competitive advantage. These attitudes are heavily informed, of course, by their respective commercial contexts: Microsoft, in the business of selling software necessarily has different attitudes towards ownership than Facebook and Google, for whom software development is a means rather than an end. But this observation only confirms the assertion that there is a transition underway.
·         Microsoft (Founded 1975)
For Microsoft, its competitive advantage centers around its intellectual property, which is to say its software. Microsoft felt compelled to compete with its own entrant in each of the following software categories: Browser, CRM, Database, Development Tools, Email Server, ERP, Game Consoles, Multimedia Runtime, Office Productivity, Operating System, Portal, Programming Language, Search, Webmail, Web/App Server. And the list could go on. Software markets were important enough to Microsoft either for the revenue they offered or their strategic significance that the firm pursued opportunities in each. While its recent focus on interoperability has led to relationships with competitive products (i.e. Apache, Eclipse, Mozilla), Microsoft unquestionably still views software (and the integration of that software) as its primary competitive advantage in the marketplace.
·         Google (Founded 1998)
By the time Google arrived twenty plus years later, much of the available oxygen from a software sales standpoint had already been consumed by Microsoft and others. Search, however, offered more substantial projected revenues. With the benefit of hindsight, Google’s attitudes concerning the importance of software were distinct from Microsoft’s. Rather than construct its infrastructure from commercial software such as Windows, Google instead chose open source software – Linux, among others – as the foundation for its sprawling infrastructure. Decades of software industry history served as input to its thinking.
And part of this evolution was contextual, of course. Unlike Microsoft, Google does not derive the majority of its revenue from the commercial sale of software, which afforded it the opportunity to reconsider the value of the software it consumed as well as the software it produced. Because the firm’s primary advantage over its early competitors (AltaVista et al) was technical – it could scale more cost efficiently – it has retained a culture which considers infrastructure a competitive advantage: the firm is famously secretive about its internal development. The result of which is the status quo: the majority of Google’s infrastructure is not public.
While the software itself remains protected, however, Google does periodically share the details of its approach (e.g. GFS and MapReduce). The benefits to this practice for Google are multiple:
1.       Engineers may be trained in techniques such as MapReduce prior to joining Google
2.       Public availability may lead to open source implementations, which can act to inhibit commercial opportunities for competitors and may suggest areas of improvement for internal instantiations
3.       Publishing can improve employee morale by allowing them to experience external recognition for their accomplishments
This is suboptimal from a public standpoint versus open sourcing the original assets, because the public implementations are reportedly not as performant; one reason Google is periodically criticized by open source advocates. But it represents an evolutionary improvement relative to entities that disclose little or nothing about their software products.
·         Facebook (Founded 2004)
Founded just six years after Google, Facebook’s opinion of software is markedly different. The evidence suggests that Facebook believes infrastructure software to be non-differentiating.
Apart from their decision to release key pieces of their existing infrastructure as open source projects – e.g. Cassandra [coverage], Hive, Hip-Hop [coverage] or Thrift – there is the fact that Facebook is built, effectively, on publicly available software. Its primary user interface is built using (compiled) PHP and publicly distributed JavaScript libraries. Its forthcoming messaging product will be built on top of Hbase. Reporting and analytics are via Hadoop. And so on: there are few Dremels or Pregels hiding inside the social networking giant.
For Facebook, the value is not in the infrastructure – though Hip-Hop demonstrates the value of even marginal improvements in performance for high scale players – it is in the users and the data they generate. As Tim O’Reilly famously put it, “data is the Intel Inside.”

What Does it Mean?

If we accept that perceptions of the importance of software are in fact evolving towards a recognition that it is less of a means to differentiate, the obvious question is what this implies.
First, it may be worth a review if your primary differentiation lies in infrastructure efficiency. There may be cases where this is business justifiable, but the trendline clearly argues against it in an increasing number of cases.
Second, when you look to differentiate, you should focus on the personnel side over infrastructure technology. In analytics, for example, the competitive advantage may not be answering the question marginally faster than a competitor, but asking a better question [coverage].
Third, be clear on what precise advantage the software you build conveys. It is certainly possible that aspects of your infrastructure may be unique and differentiating, and therefore a competitive advantage. But be skeptical of this belief, and balance the costs of proprietary development against the benefits of running on standardized infrastructure carefully. Few businesses will be able to run on a stack that’s easily replicable by a competitor. But the ratio of what’s private versus public is beginning to shift in favor of the latter.
Last, software manufacturers should understand this context, and seek opportunities up the stack to differentiate or focus on delivering value through services, hosting, integration or maintenance. With rare exceptions, it will be increasingly difficult to justify high margin infrastructure software products as they will be providing less competitive advantage over time.

Is Software Important?

The answer to this question depends on how you define the term important. Few businesses today can exist without software, so superficially the answer to this question is self-evident. The more nuanced reply would consider infrastructure software’s strategic role, as Carr has.
It is true that there is a large and continually expanding body of open source software that is highly competitive with commercial alternatives. Most of the major infrastructure software categories – database, operating system, programming language/runtime, application/web server, etc – have multiple credible offerings. It is also true that in spite of the the fact that there are a variety of costs and benefits attached to usage of this software, it is increasingly difficult for businesses to achieve competitive advantage over one another via the selection of commercial alternatives. Instead, competitive advantage is derived in how that software is instantiated, maintained and employed by people.
But while this could be used to frame an argument that software is unimportant, it belies the reality that usage of commodity software can deliver results that are highly differentiating; the same cannot be honestly said of the eletrical infrastructure or plumbing. Infrastructure software may not be important enough to develop in proprietary fashion any longer – see OkCupid’s recommendationsconcerning building a proprietary web server – but this does not relegate it to role as a simple factor of production.
Technology is certainly necessary for competitiveness, but awareness of this importance varies. As long as this remains true, and leverage of infrastructure technologies remains uneven, there will remain opportunities to seek competitive advantage via your infrastructure. It just might not be with software you’ve built yourself or something proprietary bought from a vendor.