Like any liberal, I'm suspicious of large corporations. Nowadays Micosoft is one of the biggest. But my complaints here will be based on personal experience. In most cases it will be simple for you to duplicate the experiences I relate. When I'm done, maybe you'll agree that the world's software near-monopoly has problems that reach far beyond typical capitalism-first corporations.
Computer literate users of Microsoft products; just about everyone except those rich enough to use Apple or geeky enough to try Linux; come away with the distinct impression that the company is far too big for its intracommunication culture and infrastructure. How else could an intelligent programmer develop the following impossible logic?
The other day I decided to completely reinstall Windows XP on a clean partition. (I'd moved all my important data onto a separate partition created because XP is too limited to use my whole 250 GB drive.) That has done much, though not everything, to alleviate problems I'd been having. The first install I did on the machine didin't go right. Installers: If your first install doesn't go right, don't try to repair or install over the bad one. Save yourself grief and reformat the system partition and try over from scratch.
As I say, this install was mostly simple and without problems. But there were a couple of hardware glitches. It took me three days to get the sound system to work again. But the real bugaboo was a motherboard device far more critical to how I use this computer. (Yes, I'm writing this on the computer in question.)
The network interface device (ethernet controller) would install, but had a problem. Windows said it couldn't load the drivers (see the later section on error messages). I clicked troubleshooter to see what Microsoft recommended. It said to uninstall the device, reboot the computer, and let Windows Plug and Play (Pray?) try again. I'm a big fan of the "right click" menu, so I right clicked on the device and clicked "uninstall..."
After the typical "Are you really sure you want to do that?" dialog, Windows very quickly issued the following message: "Unable to uninstall this device. It may be required to boot the computer." To say I was incredulous would be like saying a dead man is a little bit under the weather.
You should have caught on to the illogic here, but because it so irritates me I'm going to spell it out anyway. I'm looking at a screen which shows a yellow question mark next to the device in question. In other words, Windows KNOWS the device isn't working. If the lack of this device is going to prevent my comuter from booting, then my computer has not booted and I haven't been able to ask Windows to uninstall it.
I have seen computers designed to boot from the network, but it's my impression that fewer and fewer companies are using that configuration on desktop computers, Windows CE probably has a larger OS-on-network base because the thin clients it often runs on are low-cost solutions in which the lack of a hard drive can further cut costs.
And here's the final kicker. Windows has a massive code base; way too much to load all at once on any but the most memory-endowed machines. In fact, it's possible that 32-bit XP runs out of capability to address more memory before it has enough to load its entire code base. The point is that the operating system has been modularized so that only needed components are loaded.
In other words, Windows has to know from where it has been started because it frequently has to go back there to load requested modules. It should, therefore, know whether the netowrk card is needed to boot rather than just assuming that it's needed. Of course that would have required the "device manager" programmer to work with other departments of her corporation to know how to confirm such information and avoid mind-boggling idiocies.
Tehnicians who frequently deal with problems on Windows computers eventually learn to consider anything said in an error message as suspect. This is not ALL Microsoft's problem. In the one case that really had me seeing red the culprit was a human resources software vendor.
This particular package allowed a client-server setup in which the data was stored on a server, and the individual machine running the code and accessing or modifying the data as needed. This allows people on several different computers to access the data at the same time. Windows has a single string convention for locating files on networks. It's like this: "\\<servername>\<sharename>\<pathandorfilename>."
This company, however, took its own approach. It asked for two strings, the server name, and the path to the file as seen from the server, not from the network. In our case it was:
Server Name: "\\NT_SH_BDC"
(Yes, we run the database on an old NTServer 4.0 machine; We
haven't figured out how to get it to work from Server 2003.)
Path: "G:\H_R\<vendor-specific folders>\data\HRWARE.GDB"
I leave out the actual names of the vendor-specific folders to protect the guilty. But they include lots of letters, periods, and other special characters, each one of which MUST be exactly right. One time I did a client install several years after the initial system setup. I got the path data carefully written down, and set to work.
Soon I was ready to connect to the server database. But every time I tried it kept telling me it couldn't find the server. This actually made sense if you understood they meant the database server, not the physical machine. But I didn't understand that and kept trying to troubleshoot the connection between the client machine and "NT_SH_BDC."
About half an hour later, in desperation, I checked the path string. One character was wrong. When I fixed that we connected with no problem. Now why couldn't they say the error was in the path string instead of leading me to believe it hadn't made a connection to the server machine at all?
If I could get back all the hours and minutes I've wasted because of a misleading error message I'd probably have time to start my own business and get rich. But then providing truly informative error messages could lead users to think they could administer their own computers!
Back around 2000 to 2003 Microsoft finally began to hear the deafening hue and cry about its buggy, insecure operating system. The company launched a major security initiative. Of course this had all the problems associated with trying the change the culture of tens of thousands of employees. Even so, they took the wrong approach to security.
Part of the problem is that they remain stuck with the single-user mode "Wintel" PC. It doesn't have any of the following features which could do much to enhance security:
With such a machine it would be easy to close the door to network-derived code. But that doesn't mean the crew at Redmond would take advantage of those features. Because their code is developed in such a spread-out and compartmentalized fashion, code errors are not just possible or even likely, but absolutely certain. That forces Microsoft to issue fixes on a weekly basis.
For the average computer user, trying to keep up with all these updates is way beyond their capability. So Microsoft has automated the process. But having opened that backdoor for themselves, they seem unable to close it to anybody else. That should be simple. All they'd have to do was write the update functions so that a specific key would have to be input from the servers before the local machine would agree to download the code. The key and its encription algorithm would be changed after every update (the last thing installed on update day).
Microsoft will, of course, argue that all software companies potentially need to patch their products. For sake of this argument I'll grant them that. But since they're writing for Windows and since they'll be patching Windows programs they could easily announce their presence on a machine through the registry, and release their patch to Microsoft to be distributed with the next weekly update. (Yes, that would make Microsoft even more powerful, but you have to swallow a few gnats in order to strain out the camels.)
But Microsoft can't do that. You see, they got to their position of near-monopoly by cutting deals with all the commercial interests that might have some tenuous connection to the computer industry (in other words, all of them). Many of the practices that could do much to lock down a computer from outside interference would countervene these commercial deals.
Microsoft isn't the only one plagued in this fashion. The World Wide Web itself has become insanely complex and fraught with peril for the hyper-complex computers required to connect to it. Why has this happened? That's primarily because of features requested by and granted to commercial interests.
More on that in another article....
Lacking that key functionality, Windows has been modified to protect itself from what Microsoft considers to be the operating system's primary enemy, the user. By Windows XP it was so paranoid that it advised users not to directly access the file system. Yes, a lot of computer users need their computers to protect themselves from the user's lack of understanding. But I routinely meddle with the registry, rename files and folders, and access the file system to correct problems caused by missing or corrupt files. So in general I resent the operating system telling me I shouldn't be doing this or that.
Microsoft needs to change its security focus from limiting what users can do to limiting what non-users can do. I'm not saying they should do nothing to limit a user's access, I'm just saying they aren't doing nearly enough to close the doors cyber criminals use to break and enter your computer.
In February 2008 my company "upgraded" from Office 2000/2003 to Office 2007. In my experience it has been a near disaster. One of the main issues is something I'll call "buried functionality."
I recall when I first needed to do some troubleshooting on a Windows XP computer. One of my key tools is the "device manager." In the earlier versions you could right click on "My Computer," select properties, and select the "devices" tab. XP put in an extra step (actually it may have been Windows 2000 Pro that first did this). Now the devices tab included several other things along with a button that said "Device Manager...". This is, of course, a minor inconvenience that I quickly learned to live with.
My experience with Office 2007 so far is that a lot of simple features have been buried in incomprehensibly arcane locations on the ribbon. Some may have been removed entirely. What I used to be able to do in seconds can now take tens of minutes (some of that delay will decline as I get more experience, of course).
Far more aggravating, however, is how much more difficult it is to override defaults that have become even more incomprehensibly idiotic. Just the other day I was designing a little brochure. Word is colossally ignorant of simple booklet styles (I knowuse Publisher which will make you wade through thousands of pre-designed publications, none of which comes even close to the simple thing you want).
I had decided to forego the standard Times New Roman for a different font face. I had to alter Word's one-page-only-please column margins. And since Word doesn't understand "booklet" you also have to type your document out of order (last page first, then the other three in order for a four-page booklet).
So when I reached the last page (beginning of the file from Microsoft's perspective) I wanted to maintain the font scheme I'd been using, 12-point regular type for body text, 16-point bold type for headings, no change in font face. But at the beginning of the document Word still had reference to its default font, which I have set to Times New Roman.
When I changed the font size to 16, Word automatically changed the font to Times New Roman. So I went to the font selection list and picked out the font I was using. But when I went to type I found that Word had automatically changed the font size back to 12. Round and round I went until I was so livid that when I finally got the font and size I wanted I couldn't remember what I'd done to get it. (I think it had something to do with convincing Word to ignore pre-defined themes.)
But the real aggravation came from Excel. I have authored some fairly complex VBA (Visual Basic for Applications) code to automate tasks that would otherwise take ten to fifteen minutes to accomplish by hand. These were originally developed under Office '97 on 200 mhz Cyrix processors. The code could prepare two line charts with three or four data series each, and with thousands of data points for each series. Originally it took ten to twenty seconds to execute. When we got newer machines running Windows XP these could run in five seconds or less.
Needless to say we've become quite dependent on being able to access and visualize data that quickly. And Microsoft must have known how critical that functionality was because Excel 2007 totally breaks it. I ran the code in Excel 2007 for the first time a few days ago. It ran so slowly it took over five minutes to finish the two charts.
A few days later an issue came up where being able to see the data would greatly help us decide how widespread the problem was. I ran the code again, and waited nearly a half hour. I got so aggravated I decided to see if there was a problem specific to the machine on my desktop. I went to the computer in the lab and ran the same code there. It also took nearly forever. I spent most of the day trying to figure out what was going wrong.
At one point I ran the code in debug mode to see what commands were taking so long. Those of you with a smattering of understanding of code will see how simple an action bogged us down. NOTE: Cell references are rendered in symbolic code rather than the actual code Excel requires (quite simply, I don't remember it).
DIM li as integer; si as string;
li = 1
While isnull(cell(1, li))
li = li + 1
wend {find the first non-empty row}
intFirstRow = li
While not isnull(cell(1, li))
li = li + 1
wend {find the last non-empty row}
intLastRow = li
Obviously I did a "run to cursor" on the second While loop since it was going to count up to several thousand. Still, it ran as quickly as I've come to expect. Here's the line that first took an exceptionally long time to run:
Charts.add()
Somebody please explain why it takes so long to create a blank chart for further operations.
Through patience approaching the quality of Job's, I got a chart I could work with. But I'm particular about visual things. The new default line thickness for line charts is 2.5 points. When you're plotting a series with thousands of varying data points, the effect is a blurry splodge across the chart that reveals only end-of-the-world level trend changes.
Easily handled, right? Just change the thickness of each data series. Nope, such a change is too complex for Office 2007 to handle. Why it's difficult now when it was so simple before has me completely baffled. At this point Excel was demanding ALL free CPU time and producing little noticeable effect. So a right-click menu wouldn't come up. If I clicked on the data series and waited a minute or more the series would eventually become selected.
OK, It took eons, but now I can format this data series. I get the format dialog open, find the line thickness specification and try to change it. First of all, this isn't a combo box that allows you to type or select the new value. It's a spinner box. And the new Excel feature to show your changes before you commit to them means it has to fully implement the new line size every time you click a spinner button.
The first time I clicked, it displayed a warning message saying it coud take some time to implement a complex format change. Tell me, programmer, on what planet did the aliens operate on your brain to make you think a simple line thickness change is complex? But the message didn't mean that the operation was too hard to carry out. It meant that I, the user, was deciding what I wanted the computer to do instead of letting Microsoft decide.
I clicked on "do it anyway" because I really needed the thinner lines. So Excel went about proving its point by taking a half minute or more for each thickness change. Since I was locked into a spinner box, I had to wait for each change down from 2.5 points to 0.5 points in quarter-point increments. That's eight changes.
By now I'm throwning things at the computer and calling MS programmers names to make hardened jailbirds blush. But they don't care. They live on an isolated campus in suburban Washington state and don't have to relate to me as a customer. I never did get the chart into the state I wanted.
The Office 2007 programs are bigger on themes, styles, and galleries. I suppose this reluctance to allow customized formatting is an attempt to force us to use Microsoft's ideas of what's good style (never mind that Microsoft's defaults break style conventions that have lasted since the days of the Greecian Empire). I could probably have gotten a much quicker response of Excel if I had used one of the pre-determined chart formats in the gallery. The problem is that NONE of them used the thinner lines I needed for more complex data.
It is possible to bypass Microsoft's typical application startup. That start up confronts you with this implicit message. "Hey, dummy user, you are way to stupid to do what you're about to try to do. For your own peace of mind let our 'experts' do it for you." As I've already hinted Microsoft's "experts" seem to lack basic stylistic education. But whether they're smarter or not, I'm the one who paid (actually my company paid) for software to help me use my own creativity and individuality to make what I want to make.
Don't get me wrong; predefined formats, styles, and color schemes can save users lots of time. And a greater choice of the same is never bad. The problem is how hard it is to ignore those presets and change those defaults. Instead of a round and irritating "Office" button maybe Microsoft could provide an "I'm the boss" button which turns off all defaults and wizards and lets the user decide everything.
One of the perennial complaints about "stupid Microsoft defaults" is the default placement setting for inserted objects, such as pictures. The default setup is "in line with text." This doesn't allow you to determine anything about where on the page the picture will be displayed. It doesn't allow text wrapping.
If you put several objects in a document and don't change this default, then when you change anything prior to the insertion point, the pictures and objects flop around on the page like fish out of water. It is, of course, possible to change that defalt after the object has been inserted. But that's one of those buried functionality issues. In Office 2007 the change defaults option is further buried behind the aggravating behavior of Microsoft's gallery mentality. Note to Microsoft: Text wrapping should be the default for EVERY object to be changed only when the user has a specific reason not to allow it.
I will admit one factor that adds to my current frustration. Now that two fingers on my right hand are about 1/2 inch shorter I'm having to relearn the keyboard. It could be a year or more before I can reliably hit the key I intend to hit.
I have suggested this before. One of the best actions Microsoft could take to assure user loyalty would be to make all its non-security code available to the public. That way if a program selected what I considered to be a brain-dead stupid response I could simply reprogram it. If a program didn't have a particular function I wanted I could modify the code to add it.
Intellectual property is not a concern here. When a book is published anybody can exmaine it and discover every technical detail of it. Every letter, every punctuation mark, every sentence structure is revealed to the public. Granted, it's printed in such a way that changes are both difficult to make and easy to detect.
When a composer releases music to be performed, the performers can now see everything the composer wrote down. And with music it's simple to change a few dynamic markings or even, in rare cases, a few notes. We actually expect performers to make a composition their own by imposing their own ideas of dynamics and tempo over the composer's written instructions.
None of this violates the intellectual property rights attached to the content. The same should be true of software. Just because I can examine every byte of code doesn't mean I have violated the vendor's intellectual property rights. And since digital processing makes changes easy, I should be allowed to modify the code to work the way I want.
Put in a restriction that says I cannot sell or donate my changes to anyone else. They should make the changes themselves so they will get what they really want and not what I want. But let me legally at the code. Open source software has shown us how much more secure software can be when anyone who finds a code vulnerability can notify the community and suggest a fix.
The keys to Microsoft's salvation are in the hands of its managers. They could begin to think like a small company again. I've long believed disgruntled employees are the source of many of the vulnerabilities that plague the company's products. They could do all their promotion from within so that managers are highly familiar with the code they supervise. They could do many such things. We'll just have to sit back and see how long they wait and how distressed the company will have to become before they take action.