Writing the article “Desktop Applications are not dead!” was an interesting experience that led to vivid discussions about the business of software for desktop applications, including the current limits and options available in this field. In the last comment by Eugueny Kontsevoy (the person I was responding to with my article in the first place), he expressed once again his frustration regarding Windows development:
“Seriously: I am an engineer for the sake of it: I love what I do and spending 20% of my time planning the deployment and dealing with failing Microsoft OS components is NOT something I want to do anymore. Period.” — Eugueny Kontsevoy
Before you dismiss his comment as an over exaggeration or peg him as having too picky an attitude, I would suggest thinking twice. The guy has a point, and if you’ve done Windows desktop application development before, you know this is often the case. My article proposed possible (partial) solutions for making Windows a more enjoyable and viable deployment platform for software startups. Of course, the easy way out is to leave the desktop market and move exclusively to the Web application arena. Hey, that’s what everyone else is doing, that’s the future, it’s buzz compliant, etc… But I want to take my own advice, and put my money where my mouth is.
Taking the red pill
I felt more at ease with my Mac after 5 weeks of using it, than I had with Windows after a dozen years. We feel like old friends, like Hemingway’s old man and the sea. I absolutely love Mac. I love its culture, the quest and appreciation for beauty. Quality over quantity, simplicity over complexity, beautiful design over crowded ugly interfaces. Mac is productive; Mac is zen-like, inspiring, and enlightening. Mac makes me happy to be a computer geek, and in my mind, Mac OS X is simply the best operating system available today.
I’m taking the red pill: I’ve decided to get serious about developing applications for Mac OS X. I can’t refrain from programming with this beauty.
Oh boy, where do I start?
I’m writing this as a quick guide for whoever decides to follow a similar path as mine. Consider that I’m just starting out, so I don’t know anything beyond what I’ve researched from reading other peoples’ opinions. I think it’s a sensible plan though. There is a wealth of good information on Apple’s site and many guides all over the web. Here is a list of resources that I am using or which I plan to use. They refer to Objective-C and Cocoa, which are respectively the favored language and framework for developing Mac applications.
First Step: Let’s get excited
Second Step: Let’s read some documents
Third Step: Let’s get serious, with some books
I actually ordered the three books below yesterday night. The second one is already here, while the other two should arrive soon enough. All three of them have stellar reviews.
- This should teach the language in depth and serve as a decent reference to have on hand.
- This is, I believe, *the* crucial book. I plan to read this cover to cover and work through it.
- This book should provide some advanced techniques.
Fourth Step: Join the discussion
- Join the irc.freenode.net channels #macdev and #macsb, respectively about Mac development and the business side of Mac programming;
- Subscribe to the Cocoa-Dev and the MacSB mailing lists.
Fifth Step: Keep Reading
Apple Developer Connection (ADC) has a huge amount of information about developing applications and guidelines for delivering high quality products. Bookmark http://developer.apple.com/ and come back to it often. I know I will.
What about Ruby and Python?
RubyCocoa is a nice bridge that allows you to develop in Ruby and Cocoa. Yes, I’m super interested in this project, but I want to learn first the traditional way of using Objective-C and only then consider when and if Ruby and Python can be beneficial for my Mac development needs.
And what about DB2?
Do I miss DB2 when I am on my Mac? Hell yes. DB2 Express-C is just plain awesome and it’s the only software that I really miss on my Mac. It runs fine in a virtual machine, but wouldn’t it be great to see it run natively in Mac OS X? Well, this won’t happen tomorrow, but I’ll tell you something… sooner or later, we’ll get there!
I already know that the biggest challenge is going to be finding the time to study all this stuff, and above all, finding time to code (the only way to really learn). But it’s going to be awesome. What are your thoughts about this strategy for learning Mac development? I especially welcome comments from experienced Mac developers and people who, like me, have decided to give Cocoa a serious go.