Jan 00 Viewpoint
Volume Number: 16
Issue Number: 1
Column Tag: Viewpoint
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.