Let’s start at the end. The last sentence in “NeXTSTEP Programming Step One: Object-Oriented Applications” by Simson L. Garfinkel and Michael K. Mahoney looks like this:
Go out and write a killer app!
This is slightly punchier than the way the same authors signed off in “Building Cocoa Applications: A Step-by-Step Guide”:
Now go out and write a killer application!
I’ve still yet to do either (whatever your opinion on their products, the only real killer app authors are probably Dan Bricklin, John Warnock, Larry Page, Sergey Brin, and Mark Zuckerberg). But I have read to the end of many books on programming. It’s quite an uplifting activity in the Objective-C community. The final sentence in the first edition of Aaron Hillegass’s “Cocoa Programming for Mac OS X” is “Thanks for reading my book!”, but it comes after this paragraph:
Finally, try to be nice. Help beginners. Give away useful applications and their source code. Answer questions in a kind manner. It is a relatively small community, and few good deeds go forever unrewarded.
Having explored the backs of these books, let’s go back to the beginning. When NeXTSTEP was launched, Object-Oriented Programming was new, and hard. The Smalltalk team already knew, as we previously saw, that it would be harder to teach existing programmers how to understand objects, than how to teach non-programmers how to use objects to program. The way Garfinkel and Mahoney describe it is almost paradoxical: “there’s a steep curve to climb when learning to program in this easy-to-program environment”.
NeXT wasn’t really a big platform, they maybe sold a total of 50k workstations and a large minority of them went to the same three-letter agency in the US federal government. So there wasn’t a big market for third-party books about programming their system. In the beginning, NeXT had a training program, and a great set of manuals (a combination of in-house material and copies of the FSF documentation), and a trade journal. Developer advocates would write letters to Dr. Dobb’s Journal of Computer Calisthenics and Orthodontia, showing how much shorter code for NeXT was than examples in articles about other platforms.
An early “third-party publication” about writing NeXT applications turned out to be something else: the author, “Ann Weintz”, was actually a NeXT employee called Tony who’d published the book under a pseudonym. This book talked up the platform’s C heritage, trying to convince people that NeXTSTEP was more familiar than a first glance suggested. By the way, continuing the theme of interesting messages in books about Cocoa, the first page in this book is a call to home-school your children (at least in the second edition). The last is a collection of bullet points about low-energy refrigerators and political corruption.
It’s into this environment that Garfinkel and Mahoney launched their book. What they wanted, and undoubtedly achieved, was to make it clear that the O-O features of NeXTSTEP made it different, and that those differences simplified application development, once you got your head around them. There are enough objects in here to make the live environment and object network construction in Interface Builder useful, but not enough to tie you in knots wondering whether your Dog isa Rectangle. When I say “object network construction”, it was common in NeXT apps to create many of the objects in Interface Builder and hook them together there, using it as a dependency injection tool. The final step would be to generate the headers and source files, and type out the implementations of the methods.
NeXTSTEP Programming Step One showed developers—including me—enough of the APIs to make applications, but not so much that it was a slog to get through. It first introduced the environment and tools, showing you how to make an app using Interface Builder (Project Builder wasn’t introduced until NeXTSTEP 3) and without, to demonstrate how much code is being abstracted away by the environment. Then it walked through building a four-function calculator, a mathematical word processor (MathPaper), and a graphing application (GraphPaper), introducing concepts like pasteboards, saving and loading documents, and custom graphics along the way.
Am I over-egging things? Not according to contemporary reviews. “NeXTSTEP Programming is so thorough that it can be used as a reference book.” “This is a well-written and illustrated book, and serves both as a primer for novice NeXTSTEP users as well as a handy reference for already initiated NeXTSTEP application developers.” “I believe “NeXTSTEP Programming, Step One” will rapidly become the classic textbook for learning to program in what may soon become the standard GUI and object-oriented environ- ment for the 1990s.”Programming book a must for all developers.” “an unqualified success.”
This 1993 textbook was so good that it when, a decade later, Apple wanted some third-party books for Mac developers, they turned to the authors again. With Mac OS X being new for both users and developers, Apple wanted to kick-start an ecosystem of training material to give people confidence in adopting the novel system and tools. They partnered with O’Reilly on a combination of first and third-party publications, with Building Cocoa Applications by Garfinkel and Mahoney being one of the guides to using the Apple APIs (alongside the Apple-penned “Learning Cocoa”). Partnering with O’Reilly turned these into professional-looking manuals with a familiar theme, O’Reilly’s Dover Pictorial Archive animal etchings on the covers. O’Reilly had already used big cats for their Java series so turned to dogs for the Apple Books.
Apart from the screenshots and the newer APIs, this was the same book as Step One. There’s an introduction to the graphical environment and tools. There’s an example application using Project Builder and Interface Builder, and an example that doesn’t use Interface Builder. There’s Calculator, MathPaper, and GraphPaper. As we’ve seen, they even ended with a more prolix version of the same sentence.
If you’re in the business of making developer tools, get yourself a copy of this book (it’s still effectively “in print”, on O’Reilly’s learning platform). Find out why it was the best book for learning how to develop for two platforms by two vendors. And make sure the on-ramp for your technology is at least this good. If you need help, I can recommend a couple of names.
Go out and write killer docs!
Cover photo by the author.