Vojtech Rinik

Learn Cocoa

Posted on 2012/9/13

When I was 18 my goal was to create a better product than Basecamp. I decided it would be a client-side JavaScript application, because that would make it much faster. At that time the most appealing web frameworks were Cappuccino and SproutCore (Now Ember).

I decided to try Cappuccino. This framework was very much inspired by Cocoa, and I had no idea how Cocoa worked. The documentation wouldn't teach you Cocoa, it would only tell you how to move from Cocoa to Cappuccino.

So instead of looking at a different framework, I started working on my Cocoa skills. I figured I want to build fast apps, so I might as well build native. Cocoa was one of the most important things I've ever learned.

The Cocoa way

Cocoa is complex itself. It contains solutions to all common UI problems, but what's more, they are beautifully implemented. I've learned about many software engineering concepts from Cocoa, and I'm using them every day to write better code.

Cocoa contains important patterns that are used in all UI frameworks. It's things like view hierarchies, responder chain or bindings. There is infinite amount of documentation and help on the internet, and you can make a lot of money with your Cocoa skills.

JavaScript frameworks are too simple

The simple JavaScript frameworks are too simple. The developers are coming up with guides on how to structure things, and other topics, but why not learn from pros if you can?

Most developers go from Rails to building client-side user interfaces. But they don't realize it's not just change of language. They have to understand concepts of UI frameworks first.

They start writing some code. As the complexity goes up, they start wondering how to make it better, they Google, they ask around in IRC. I believe they could save all this pain by just learning Cocoa first. At least I have.