98.05.07 11:52
Programmers Are Users Too
Why is so much attention put on user interface for your average user but
almost none for the developer? And I'm not talking about turning consumer
OSes into UNIX-style power user fests. I'm talking about the development
tools, languages, and APIs a developer must use to write applications.
Example: Most APIs I've used are horribly inconsistent in terms of
interface. In Win32, it seems like half of the APIs return 0 for an error
condition and then require a call to GetLastError(), but the other half
returns HRESULTs. You can argue for either style, but the issue is
consistency. By having two different types of return styles I have to spend
more time reading API docs instead of coding.
Example: UNIX - the System V IPC interface. There is this one system call
that, depending on what arguments you pass, can do about five completely
different things. Also, the arguments are completely different for each
"mode," and you end up having to do a lot of casting. The potential for
error there is enormous.
Example: MAPI - need I say more?
Or look at a debugger. Debuggers have not really improved in terms of power
or ease of use since I've been programming. Sure, they've added some candy
like holding the mouse over a variable and getting the value in a tooltip.
But the basic functionality of debuggers is the same as the old command
line GDB style ones, just in a GUI. But since apps are getting larger and
more complex, it seems the debugging tools lag behind. (Purify is an
example of an advance in debugging tools, but I had severe troubles trying
to get the NT version to work right. In their defense, the Unix version is
buttah.)
It would be nice if API designers took their users (the programmers) into
more consideration. It's not impossible to ask - the whole purpose of an
API is to abstract away some sort of nastiness and make it easier to use.
They should concentrate more on the fact that any decision they make about
an API could potentially affect thousands of programmers. A solid
implementation is important, but if the interface is horrible, your
user-programmers will still curse your name.
Steve Anichini
Alex St. John Replies:
Because there is a lot less money in making better developer tools then there is in making consumer applications?
Point, but a shortsighted one. Better development tools help you make better consumer applications. Better consumer applications help you make more money. Companies will shell out some serious cash if it will help them make more money. Look at most development tools' prices -- they are usually in the range of hundreds if not thousands of dollars. I would wager that the profit margin on these tools is higher than on consumer applications (Office doesn't count - its a monopoly product and not everyone can have 95% market share). Development tools are the luxury cars of shrink-wrapped software (OK, a stretched analogy, but you get the idea).
Of course, as usual with any type of microeconomic argument, this assumes a market with competition. Since Windows is the show, Microsoft really has no impetus to improve its development tools radically. They just need to be good enough to keep developers writing for Windows. When Microsoft did perceive a threat in Java, it quickly released and improved a Java development environment - but in a way that tied it to Windows. Other developers have a hard time writing any sort of development tool that competes with anything Microsoft offers. Borland managed to take a great product (Borland C++ 3.1) and turn it into a horrible one=, and I think the reason is MFC. Microsoft convinced everyone that you had to use MFC to program Windows in C++ and we bought it. And that pretty much spelled doom for the other C++ compiler vendors. Since MFC was now "the standard," they had to support it. But they'd never be able to support it as well as Microsoft did since Microsoft has access to newer versions long before their competitors do.
Again, we see Microsoft being driven by competition. My fear is that Microsoft's consuming desire to have the whole pie and leave crumbs for the rest will have a chilling effect on new startups. Eventually, anyone who tries to go up against Microsoft will be viewed as the software equivalent of Tucker (more car analogies). And without this constant competition, Microsoft is just going to sit back, relax, light a smoke, and watch the profits from its software tax roll in.
Steve Anichini
Alex St. John Replies:
Money is shortsighted, it doesn't decide to make weak development tools, it just runs out. It's a struggle for development tools companies to make money, even Microsoft wrestles with it. Microsoft's tool business was a charity operation to support Windows for many years.
Yea Microsoft brutalized Borland, the two evangelists Microsoft set on them are the guys who later formed the DirectX team. I'm going to use the past tense "we" to talk about it. "We" decided Borland had gotten too much leverage on Microsoft with its development tools, so in addition to lighting a fire under the VC groups' butts, Microsoft hired two evangelists to attack Borland. One from Watcom, and one from Symantec. We used a competition saturation strategy to distract Borland while we got our own tool business together. The idea was that since there was very little money in tools, the best strategy to deal with Borland was to starve them out of the business by fragmenting the tool market with too many competitors. Microsoft knows that in any market where competition is fragmented, it wins, so it gave MFC away to every compiler company, and offered huge co-marketing and developer support incentives to everyone who took it. They then promoted the hell out of MFC. MFC thus became a required/default feature every developer expected to get with their development environment, and Borland didn't have it. Borland was forced to the bargaining table, and Microsoft required them to dump their own class library in order to get an MFC license. That was the end for Borland. When they were done, Microsoft simply released the relationship strings on the other tool companies and they all sank into oblivion together. Those evangelists and myself moved on to work on Apple's leadership in multimedia.
Now that I've confirmed your worst suspicions about Microsoft, I will say that Borland had pretty much already screwed themselves out of business without too much help from Microsoft. Yes, Microsoft will always rule development on its own platform, and I'd hate try to make a business out of competing with them on that. It's a little bit like being annoyed with id for having the best authoring tools for Quake. Quake is id's platform, go make your own. John Carmack once said that he didn't understand why there were so many companies trying to usurp id's leadership in 3D engines. He said the opportunity to be id is gone, the next "id" will introduce a new idea in gaming. I find it depressing that "Windows" is the limit of this industry's vision for computing such that everyone is so willing to believe that the space for innovation and opportunity is so fully occupied by Microsoft. I think people look at Bill Gates, and think, "That guys has it all." I look at him and think, "if a guy like Bill can take so much, how much must be left?" Unlike oil, ideas shouldn't run out, and it shouldn't be possible for anybody to own a monopoly in them. If all you see is crumbs remaining when Microsoft owns the "Standard desktop OS," then crumbs is all you deserve to be eating. The only reason Microsoft has won, is because everyone else is so willing to accept it and give up.
Every fall I have to vacuum dead flies off the inside of my window sill because I left a window open. The flies flew in and forgetting the route by which they came, got trapped in the house, and proceeded to spend the rest of their days beating themselves against the glass until they finally died of exhaustion, all the while the window was still open.