My Background

I am a software engineer by trade, with long experience in Southern California’s aerospace industry.

Most of my programming experience is on the system side — compilers in particular. I spent almost ten years with a company called TLD Systems in Torrance, California working on various aspects of an Ada compiler, mainly the code optimization phase. I know lots about syntax parsing, optimization, and code generation. I have also worked for Hughes Aircraft Company and NASA’s Jet Propulsion Laboratory.

Programming the Macintosh

I experimented with programming the early Macs in Pascal and C, and later got heavily into C++ using Metrowerks PowerPlant. All this was on my own time. I wanted to try my hand at application programming rather than always focusing on abstract, behind-the-scenes stuff.

I got far enough with C++ and PowerPlant to build some fairly elaborate software for business management. I still use some of it myself, but never got far enough to see it through to general release. What I found was that as a solo programmer I kept getting bogged down in the details of building the general functionality. It was difficult to do all that and still find time to work on the higher level logic. A large team can divide up the tasks and parcel them out. I found that I could not do everything myself.

Enter Cocoa

PowerPlant was useful in providing some underlying functionality, but not nearly enough. Cocoa goes much further. It has been wonderful to discover in Cocoa many things that I spent months developing on my own — all there, ready to use.

I feel some vindication in discovering that Cocoa implements so many things I built myself — it proves that I was on the right track. In my own code, some things were completed, some were coming along pretty well, and others I couldn’t find time for. But now I don’t have to worry about building and maintaining these components — Apple provides them for me.

My prior experience puts me a step ahead in learning Cocoa, since I understand many aspects of what the Cocoa team had to deal with in their design. What remains a challenge is to figure out how they organized their logic and what hooks they provided to make effective use of it.

The Cocoa Advantage

I see Cocoa being a great advantage to someone like me. While I could probably build many of Cocoa’s components on my own, it would take several lifetimes of work. But I don’t have to build them — they’re complete and ready to use. Yes, I have to learn how to use them properly, and the learning curve is certainly steep, but that is still much easier than creating everything from scratch. This is the evolution of computer science. There is no sense in re-inventing what others have already put enormous time and effort into developing and refining.

I’m very impressed with Cocoa and the huge number of services it provides. As I gradually get more comfortable with finding my way around, I’m starting to see how the details fit together into an overall scheme. I can also start imagining what I’ll be able to do using these capabilities.

Cocoa will free me to concentrate on the higher-level aspects of an application, without getting bogged down in so many details. I believe that this will make it possible for me to complete applications that I would not be able to build on my own any other way.