Showing posts with label technology fragmentation. Show all posts
Showing posts with label technology fragmentation. Show all posts

Sunday, April 3, 2016

No more empires

Apple wants to be a rebel. To do so, they need an empire to rebel against. For the past two decades, Microsoft was their empire. Prior to Microsoft's rise, the empire was IBM.

IBM had a long and storied empire. It was the first to have an empire in IT, and perhaps the only company to do so. (More on that later.)

IBM had a comprehensive empire, starting with mainframes. They sold everything you needed for computers. They sold the processors, the card readers and card punches, tape drives, disk drives, and even the cables to connect them. They sold operating systems, utilities, compilers, and job scheduling programs.

Empires must be all-encompassing. They must sell everything one needs. If they don't they are not truly empires.

When DEC introduced its line of mini-computers, IBM competed with them, by selling its own minicomputers. (And operating systems, terminals, and printers for the minicomputers.)

When microcomputers became popular, IBM introduced the PC. To offer a solution quickly, IBM used other manufacturers for several components: Epson for printers and Microsoft for the operating system.

IBM maintained its empire until Microsoft took control with Windows. The breakup was ugly and has been documented by others, so I won't go into those details. But build an empire, Microsoft did.

Microsoft's empire was different from IBM's. IBM's empire was all-encompassing, from hardware to software to supplies. Microsoft's empire was limited to software. It sold no processors, disk drives, or other peripherals. (I'm ignoring the Xbox and the Surface tablet and the Microsoft keyboard and Microsoft mouse, which are not insignificant but not really to the point.)

Microsoft did keep the "we supply everything" mindset for its software empire. It provided the operating system, office programs (Word, Excel, Powerpoint, Outlook, etc.), developer tools (Visual Studio with compilers for various languages, SourceSafe and TFS), databases, accounting software, ... you name it, Microsoft offered it.  They even created a file packager like PKZIP but with proprietary technology (a thing called "OLE Structured Storage", which let one contain multiple files in a single file, but without compression).

Today Microsoft does not dominate in every aspect of IT. It dominates in some areas (desktop operating systems, office software), competes in others (cloud services, tablets), and fails in others (phones). One could build a modern cloud/mobile app with only Microsoft technology, but without iPhone and Android support, it would have very limited acceptance. But one cannot build a mobile/cloud app with only Apple technologies (they don't offer cloud services). One could use Google's technology; they offer phones and tablets, cloud services, and development tools, but you would still lose the iPhone market. No one vendor has all of the solutions.

Will we see another empire in the IT world? Microsoft took the empire role from IBM, will someone take the role from Microsoft?

A new empire would be difficult to arrange. It would have to become the dominant supplier of IT hardware and software. Even if it followed Microsoft's lead and provided only software, it would have a large task. Software ranges from operating systems to office programs to development tools to business software to databases to analytics to games to video editing to ... you get the idea. And don't forget that a lot of software is available via open source.

I think we will see no new empire rise. I think we will see no one company offer everything one needs, and be dominant in all of those areas. The breadth of technology is too wide.

With no single, dominant provider, we will see instead a market with multiple providers. And that makes things less convenient for some.

An empire offers simplicity and comfort. In the era of the IBM empire, one could select IBM as the vendor, knowing that it was a safe choice. The saying was "no one was fired for buying IBM equipment"; IBM made the best, and if IBM equipment didn't solve the problem, no one else's would either. (At least that was the belief.) When Microsoft built its empire on Windows, they became the safe choice.

With the rise of mobile and cloud technologies, there is no one provider for all technologies. One has to select from multiple vendors and get their technologies to work together. One can never be sure that one has the best tool for the task. Is Microsoft Azure the best cloud solution for you. (More to the point, is it acceptable?) How to develop apps for iOS and Android, and should you include Microsoft Mobile? Do you develop a desktop version of your app? What tools do you use to build it?

The good news is that there are several "right" answers to these questions. Microsoft Azure, Amazon AWS, and Google Cloud are capable platforms. There are multiple tools to develop for iOS, Android, and Windows. You don't have to find the one and only one tool that will work for you.

The bad news is that you have to think more about your objectives, the tools you want to use, and the techniques you will use. It is the thinking part that will frighten people who are used to picking the safe choice.

Sunday, December 21, 2014

Technology fragmentation means smaller, simpler systems

In the past, IT shops standardized their technologies, often around the vendor deemed the industry leader. In the 1960s and 1970s, that leader was IBM. They offered products for all of your computing needs, from computers to terminals to printers and even punch cards.

In the 1980s and 1990s, it was Microsoft. They offered products for all of your computing needs, from operating systems to compilers to office suites to user management. (Microsoft offered little in hardware, but then hardware was considered a commodity and available from multiple sources.)

Today, things are not so simple. No one vendor that provides products and services for "all of your computing needs". The major vendors are Microsoft, Apple, Amazon.com, Google, and a few others.

Microsoft has a line of offerings, but it is weak in the mobile area. Sales of Microsoft tablets, Microsoft phones, and Windows Mobile are anemic. Anyone who wants to offer services in the mobile market must deal with either Apple or Google (and preferably both, as neither has a clear lead).

Apple has a line of offerings, but is weak in the enterprise area. They offer tools for development of apps to run on their devices but little support for server-side development. Anyone who wants to offer services that use server-side applications must look to Microsoft or Google.

Amazon.com offers cloud services and consumer devices (the Kindle) but is weak on development tools and transaction databases. Google offers cloud services and consumer devices as well, but lacks the enterprise-level administration tools.

Complicating matters is the plethora of open-source tools, many of which are not tied to a specific vendor. The Apache web server, the Perl and Python languages, several NoSQL databases, and development tools are available but not with the blessings (and support) from vendors.

Development teams must now cope with the following:

Browsers: Internet Explorer, Chrome, Firefox, Safari, and possibly Opera
Desktop operating systems: Windows (versions 7, 8, and 10), MacOS X, Linux (Ubuntu, SuSE, and Red Hat)
Platforms: desktop, tablet, phone
Mobile operating systems: iOS, Android, and possibly Blackberry and Windows
Database technologies: SQL and NoSQL
HTTP servers: Apache, NGINX, and IIS
Programming languages: C#, Java, Swift, Python, Ruby, and maybe C++ or C
Cloud platforms: Amazon.com AWS, Microsoft Azure, Google cloud
Cloud paradigms: public cloud, private cloud, or hybrid

I find this an impressive list. You may have some factors of your own to add. (Then the list is even more impressive.)

This fragmentation of technology affects your business. I can think of several areas of concern.

The technology for your systems You have to decide which technologies to use. I suppose you could pick all of them, using one set of technology for one project and another set of technology for another project. That may be useful in the very short term, but may lead to an inconsistent product line. For example, one product may run on Android phones and tablets (only), and another may run on Apple phones and tablets (only).

Talent for that technology Staffing teams is an on-going effort. If your project uses HTML 5, CSS, JavaScript, and Python with a NoSQL database, you will need developers with that set of skills. But developers don't know everything (even though some may claim that they do) and you may find few with that exact set of technology. Are you willing to hire someone without on of your desired skills and let that person learn them?

Mergers and acquisitions Combining systems may be tricky. If you acquire a small firm that uses native Android apps and a C#/.NET server-side system, how do you consolidate that system into your HTML, CSS, JavaScript, Python shop? Or do you maintain two systems with distinct technologies? (Refer to "inconsistent offerings", above.)

There are no simple answers to these questions. Some shops will standardize on a set of technologies, combining offerings from multiple vendors. Some will standardize on a vendor, with the hope of a future industry leader that sets the standard for the market. Many will probably have heated arguments about their selections, and some individuals may leave, staying more loyal to the technology than the employer.

My advice is to keep informed, set standards when necessary, and keep systems small and simple. Position your technology to shift with changes in the industry. (For example, native apps on Apple devices will shift from Objective-C to Swift.) If your systems are large and complicated, redesign them to be smaller and simpler.

Build and maintain systems with the idea that they will change.

They probably will. Sooner than you think.

Tuesday, January 21, 2014

From general to specific

We are entering a new age of computing.

The change is the shift from general to specific. PC hardware has been, since the initial PC up to now, standard and generic. One PC was very much like another PC, in terms of architecture and capacity. This standardization made the PC market possible, with PC manufacturers, accessory vendors, and software providers all working to a common standard.

To be sure, there was always some variation among PCs. Some had faster processors; some had more memory. Enthusiasts added super-large hard drives and super-fast video cards. But they all revolved around the PC standard. (A standard that evolved over time, moving from the original PC to the IBM PC AT to the Compaq Deskpro 386 to today's Intel-based desktops.)

Now we see the standard-issue technology splitting into distinct markets with distinct hardware. Many businesses have traded their desktop PCs for laptops and shifted "back end" work to cloud servers. Game consoles are not quite PCs: they contain specialized hardware and one cannot replace the operating system (at least not easily). The home PC is being replaced by tablets and smartphones. Hobbyists are experimenting with small-board systems like the Raspberry Pi and the BeagleBone.

For each of these uses, we are replacing the desktop PC with a smaller, specialized device.

The change is not limited to hardware. While businesses still run Microsoft Windows, other devices are moving to different operating systems. Game consoles run their own operating systems; even Microsoft's Xbox runs an operating system that is based on Windows but not quite the same as Windows on the desktop PC. Tablets and phones run iOS or Android. The hobbyists are using Linux.

The good old days of standard PCs saw PCs (and Windows) everywhere. The new age of specialization sees a fragmentation of that world, with separate hardware and software for the different types of users. This differentiation will allow the different markets to develop distinct pricing for hardware and software; already competition is driving down the prices of tablets to ranges unreachable by classic PCs.

I expect the job market to fracture alone similar lines. Office applications will stay within the classic PC realm and move slowly to cloud-based solutions. The development of games is already distinct. The consumer market of apps is almost fully emerged. As the hardware and software of these markets diverge, I expect the development tools and techniques, the advertising, and the pay scales to diverge.

Eventually, we will not have "an IT jobs market" or "an IT career path". Instead, we will have career paths in business, in games and interactive entertainment, and in consumer products. Each will include IT as we think of it today (hardware, software, development, testing, etc.) as part of a larger whole. The hobbyists will perhaps be different in that they will have not a market for the exchange of dollars but a community for the exchange of information. They too will use IT for larger goals -- perhaps education or research.

We will lose the PC standard. In its place will be a standard for business, another standard for games, yet other standards for consumers, and (most likely) a collection of diverse hardware for hobbyists. I will not mourn the passing of the PC standard. It served its purpose, letting us develop a strong set of technology for diverse challenges. Now we can move to the next level and use technology that is better suited to specific tasks.