Jan 00 Viewpoint
Volume Number: 16 (2000)
Issue Number: 1
Column Tag: Viewpoint
by Andrew Downs
Why I write Macintosh software
Why do you write software for the Mac? Or, how do you judge your success as a software developer? It is one of those intangible issues that each of us deals with occasionally. It is also what keeps us coming back for more when the going gets rough.
Like many of you, my livelihood depends (at least in part) on the success of the Mac. Anything Apple does to enhance the Mac's appeal to the masses (both business and consumer) improves the long-term picture. The continual stream of innovations coming out of Cupertino gives me confidence in the Mac's future. The iMac and iBook, Mac OS 9, the G4, QuickTime...knowing that most of those cool technologies were invented or refined at Apple (or one of its close partners), leads me to believe that the spirit of creativity is burning brightly. As long as that creativity keeps getting channeled into marketable products, my confidence will remain strong.
I think my motivation as a developer stems from a desire to not only see something done, but to see it done right. I can walk into any computer store or office and see hardware and software that is acceptable. But when I fire up my iMac, or my PowerBook, or my 6100 (considering its age) I see something that was done right. It just kicks ass.
Sometimes this motivation borders on fanaticism. For example, I would guess that most software gets written during non-work hours. (This hypothesis is simply based on the sheer number of freeware/shareware vs. commercial titles. I could be wrong.) Have you ever tried explaining what you do during the hours when most people are sleeping, and received an uncomprehending stare? There is something about this business that probably baffles most outsiders, but is obvious to the participants: this is a seriously cerebral endeavor, and it is easiest when the outside distractions are fewest. For some people, that's the middle of the night.
Plus, when you're caught up in the excitement of adding the latest and greatest feature to your new project, it is very difficult to stop. Have you ever tried halting a twenty-file debugging session in the middle and coming back ten hours later? The computer may still be in the same state, but your mind needs time to reacclimate to the situation. (Developer conferences reinforce this non-stop programming mode, although someone once remarked that it's good that MacHack only lasts three days, otherwise he'd be dead due to lack of sleep.)
Some developers have tremendous vision, always knowing exactly where their project is heading. For the rest of us, it can be hard to explain what you're trying to do when you're discovering as you go. But eventually the vision (and product) takes shape. When you do reach your goal, and deliver version 1.0, it all becomes worthwhile.
Writing Macintosh software has always been, for me, a process of learning by doing. Although you can find Macintosh software development courses offered professionally or at some universities, I suspect most programmers learned the intricacies of Macintosh programming through hands-on experience. I spent a lot of time reading and experimenting for a few years. I originally (and naively) expected it would take a few months to master the Mac. Now I see no end in sight, which I find very encouraging. There is always something new to learn.
Software development, both now and in the foreseeable future, is by no means a simple endeavor. I think the ascendance of "Internet time" has made it more difficult to master development skills, not for technical reasons, but because the perceived need for immediate payback warps one's judgement and patience.
In addition, the delivery mechanism for programming materials has changed over the past five years. Printed material has declined, and electronic files have proliferated. The increased number of online tutorials partially compensates for the decrease in the number and variety of Macintosh programming books, but there's often a lot of noise mixed in with the signal. And since the underlying technology gets more complicated everyday, we continually need simpler APIs and programming languages to help ease the burden. It may be a little tough for new developers. On the other hand, if it were easy, everyone would be doing it.
These days I spend most of my time working with CodeWarrior and MRJ. I write more Java than C/C++, building applications rather than system extensions, and I'm learning MRJ's strengths and weaknesses. Apple's Java offering has come a long way in the last few years. The performance of the current release on my iMac is great. But like many other developers, I am eagerly anticipating the version they decide to release with OS X. Although Apple isn't committing at this time, I'm hoping for Java 2 compatibility.
This industry is unique in its willingness to let the future be directed by relative newcomers. Today's ideas are tomorrow's products. (And sometimes, today's engineers are tomorrow's millionaires. That can be attractive too.) The result is a continual influx of fresh ideas and talent that eliminates stagnation and generates competition. As developers we need to encourage this process. After all, thinking different is the essence of the Mac.
In the end, for me it boils down to making a difference in peoples' lives. If I can make someone's online time more fun or productive, or their life easier, then I've succeeded. When I receive email about software I've written, I know I've touched someone. And, it keeps me coming back for more.