Thursday, March 26, 2009

One Year In

It's been just over a year since we started writing Beginning iPhone Development. The time from March, 2008 until we finally shipped the book were extremely busy and trying. For a long time, we didn't know if the book would ever see publication. In fact, in September we were actually having discussions about whether to kill the book because we got unofficial word from some sources inside Apple that the NDA probably wasn't going to drop anytime soon. When the NDA did drop shortly thereafter, it was a huge and very welcome surprise. In fact, it was such a big surprise, that even a some of the people inside Apple were unaware that it was going to happen.

That fact that Apple dropped that NDA basically changed my life. It allowed the book to go forward which, indirectly, allowed me to completely change what I do on a daily basis. Instead of traveling 50 weeks a year doing programming I didn't particularly enjoy using tools I didn't particularly like for clients who often didn't even really know what they wanted, I'm now working from home, using tools I love and believe in for a platform made by the company who sparked my interest in programming oh so long ago.

I've been using and programming Apple products since 1979 or 1980, but in the late nineties my loyalties were starting to waver. Although I still had a Mac at home, I was starting to get exposure to a lot of high-end Enterprise systems, including several variants of Unix as well as some mainframe systems and, of course, Windows NT. I was starting to see that as much as I loved using the Mac OS and though I felt that the Mac OS was still better in many ways from a user's perspective, from a programmer's perspective, the Mac OS was falling behind rapidly, and it was frustrating to me.

Somewhere around maybe 1998 I had another life-changing moment. I read an old NeXT book. It's still available from Apple's web-site as a PDF, though it's been re-branded as an Apple product and deprecated. It was called Object-Oriented Programming and the Objective-C Language. Although I had been programming in object-oriented languages for six or seven years at that point, I don't think I really saw the true value of OO, and often programmed procedurally even in OO languages. That book really consolidated my understanding of the purpose of the object model. It was the most lucid and understandable explanation of object-oriented programming I'd ever seen. I think it still is.


That book stayed with me, and when I got my first glimpse of OS X with Developer Preview 4 (DP4) a year or two later, I became instantly fascinated with Cocoa. The approach it used was fundamentally different than what I knew from C++ and Java. It was certainly different from the Mac Toolbox of old. But I saw almost immediately that this was the "right" way to build a GUI application. For the next several years, most of my free time was spent learning a dying language that could only be used to create programs for an operating system made by company whose demise was being routinely predicted by pundits and analysts. There was very little possibility of making money off of Cocoa for me. But, none of that mattered. I had to learn it. I saw instantly that Cocoa had better and more elegant code than anything I knew how to write, and I didn't like that I was that ignorant of how to write truly good code. I became keenly aware of the difference between code that gets the job done, and code that is beautiful.

I didn't have much faith that the value of Objective-C and Cocoa would ever become widely known or accepted, but it didn't matter. Looking at the Cocoa frameworks was mind-expanding. Seeing the ingenious way NeXT and Apple engineers had solved difficult problems was absolutely fascinating to me, and before long, I could see that I was becoming a better programmer for my time spent with Cocoa. I was able to apply much of what I learned from spending evenings and weekends with Cocoa to my day job even though the languages and tools were different.

I never expected to get where I am now. Some days I wake up and wonder if I'm dreaming. I never expected to be able to get paid to do this stuff and I still can't believe I'm able to feed my family doing something I enjoy this much.

No comments:

Post a Comment