Please consider a donation to the Higher Intellect project. See or the Donate to Higher Intellect page for more info.

Think Multiplatform (06/1994)

From Higher Intellect Vintage Wiki

It is exceedingly easy to develop a narrow world view focused on a specialized segment of technology. Almost every potential client seems to want a specialist with a minimum of 10 years experience— Mac Toolbox, Windows API, Novell, telecommunications, IPC, RPC, the list goes on. My favorite is a request for an experienced Newton MessagePad developer, which appeared on AppleLink about two months after the Newton’s release. There must have been all of two or three in the world at the time.

The problem with being a specialist is that you’re locked into a smaller world; it’s easy to lose sight of the fact that there are Few homogeneous computing environments out there. I believe that flexibility is the long-term key to survival as a consultant.

I keep reading that Windows is ubiquitous and the Mac is— once again— doomed. Never mind those poor, isolated souls running OS/2 or Unix. Just design your applications to run on Windows and you can conquer the world. My company’s experience with real-world clients offers proof to the contrary. During the last several years, the bulk of our contracts have involved porting applications from one platform to another. And the majority of our porting work has required moving applications from Windows to the Mac.

At first this was a surprise, even though I dearly love the Mac and think everybody should have one. The basic issue behind this move from Windows to the Mac is not that the customer’s applications are not doing well under Windows, but that the Mac continues to appear throughout corporations in growing numbers.

Last year, IDC did a survey of computer use in small, medium, and large corporations. It found that 60 percent of the companies surveyed had Macs installed, which is a significant market presence.

Although I've focused my discussion on Mac versus PC, many forces are at work in the marketplace. Windows NT wants to become the corporate server of choice and looks like it will be driving the move to standardized multiprocessor platforms. The PowerPC may add new life to Unix on the desktop, and OS/2 sales are increasing. According to an article in the Wail Street Journal, OS/2 sales are small compared to those for Windows, but sales have been increasing since the release of Windows NT. Is there a platform you can afford not to support?

Exciting changes are taking place off the desktop, as well. Corporate reengineering is in full swing, with the result that more and more desktop machines need to talk to central corporate platforms— VAX, AS/400, and the like. You know the world is changing when IBM runs ads showing how flawlessly the Mac connects to its AS/400 systems. Users have also become mobile, with laptops, hand-held computers, and PDAs (personal digital assistants) becoming much more prominent.

But what does this mean from the point of view of a software engineer? You must be ready to take your code anywhere with minimal notice. The need to write programs that run within multiple operating systems and hardware platforms is becoming the norm, not the exception. To cope with this, your design and development efforts must be based on the premise that the code will operate in multiple environments.

Simply put, design and develop portable code. There’s nothing magic about writing portable code. Design short, modular functions. Separate the user interface from the computationally intensive internals. Isolate your platform-specific calls under generic wrappers.

When you’re debugging, use every available tool to provide automated code checking. Have other people comment on your code. Learn to accept and give constructive criticism. It is difficult to know everything, particularly when you are fielding applications on multiple platforms. Last, but by no means least, document, document, document.

I know there’s nothing new in this advice. However, I am continually amazed at the amount of code my company inherits that cannot even make it through a moderate warning-level check from the compiler or that lies pieces of the user interface into all levels of the code.

Of course, some products should not be designed for multiplatform operation. But for the majority of new applications, if you plan their move to multiplatform support from the start, you’ll have a flexible product that’s better able to take advantage of the shifting market realities.

-Raymond GA Cote