To provide perspective, I’m an early adopter iPhone owner and I’m a serious fan of Apple’s OS X operating system and the latest wave of software products we’re seeing come from Apple.
I was chatting recently with a friend of mine who is considering learning Objective-C and programming for the iPhone. He is the 4th person I know personally that is either developing or about to develop software for the iPhone. I told my friend, “Go for it.”
To develop for the iPhone you need an Intel-based Mac. I am currently not developing software for the iPhone, only because the Mac hardware I currently own is still PowerPC based. But that doesn’t mean I don’t want to.
The iPhone has been out for about 2 years now and after the first year Apple made the software development kit (SDK) available so that interested programmers could create their own applications for the iPhone. I remember when the SDK was announced there was also an announcement about a venture capitalist project, the iFund. Kleiner Perkins Caufield & Byers announced a $100 Million fund to get software projects launched. I remember when hearing about that, and their compelling explanation as to why they were doing it, that this would make possible many new applications for Apple’s mobile platform.
Just today I read an article in the New York Times about what they called “The iPhone Gold Rush“. Check out the article. It tells of how software developers have found a relatively easy way to get exciting new ideas out and generating meaningful income for the Apple iPhone. Now, I’m not saying that everyone will make millions of dollars doing this, not even enough to pay for a home mortgage. But what I am thinking about is that we are in fact seeing a new development platform that will likely have a lot of life in it and relatively easy entry for talented programmers.
It’s a bit like the dream come true for creative motivated developers. Come up with a great idea, produce it and then make it available through iTunes. That’s pretty exciting.
Sure, the problem is there’s a lot of crappy applications out there, and the herd of early software developers have all seem to gravitate towards common applications. But if you really do have a new idea, it’s easy to see how you could make some income by just writing really good code.
What’s the deal about the software development itself? Well, Apple is using Objective-C for iPhone, and Cocoa Apps on OS X. You may not be too familiar with Objective-C. I can share a little bit about my informal view of how Objective-C ended up there.
I remember when Brad Cox‘s book “Object Oriented Programming” came out. I still have my hard bound copy. That was around the time I was also aware of C++, which was gaining market awareness. In those days the conventional wisdom (which is almost always not what you should be doing) was to migrate from the programming language C to C++. Brad Cox was describing Objective-C as an alternative. What I remember most about my interest in Objective-C in those days was that it was supposed to be a “cousin” to Smalltalk. And of course I was already quite a fan of the Smalltalk programming language. So I bought the book and breezed through it. I didn’t really do any Objective-C programming at the time, so nothing really sunk in. I was a pretty good C coder in those days however, even though I had started my Smalltalk career.
I was paying attention to what Apple was doing in software development tools in those days too. They had already begun the shift away from Object Pascal towards AT&T’s C++. Shame really since I really liked Object Pascal. I remember reading that since Apple had already chosen C++ for their next generation software tools, they were pushing hard on AT&T to get V2.0 completed.
Again, this is just my personal observations. But I think Apple learned the hard way that really big projects in C++ were tough to deliver. Then the big wave of Java development hit the industry. And Apple started to support Java development in a really big way. I was at the first Java One conference back in 1998. I was already using Apple computers and had a pretty good eye for spotting one in use. It really struck me how many of the Java evangelists from Sun, including Gosling, were using Mac PowerBooks for their Java development. Of course that made sense since Apple had adopted Java in a big way (once again following the crowd) and of course Microsoft had very poor support for Java in Windows. Still, was pretty cool seeing Apple computers getting used by Sun engineers.
I really think the turning point for Apple in recent history was when Steve Jobs came back on board. But you know, the software development enthusiast in me sees Apple’s big improvements not only because of Mr. Jobs’ formidable personality and vision. The also purchased NeXT. That’s something key. Because NeXT Step was developed around Objective-C. I really believe that after Apple began to develop more and more software on top of the rich NeXT Step Objective-C software base, they started to produce better, reliable, and more interesting software. I really think the switch of focus away from C++ and Java towards Objective-C is a key component to the success they are having in software products (including OS X and it’s Cocoa Apps).
And this brings us around to the iPhone. Developers are often discovering Objective-C for the very first time. My friend Blaine reminds me that Objective-C is nowhere near as cool nor powerful as what we have in Smalltalk today. But I gotta tell you, I think it’s a big step in the right direction.
So, do I think more programmers should take a hard look at developing for the iPhone? Sure. It’s got a lot going for it. And I think anyone paying attention can see that the iPhone has got to be the first product in what surely must be many generations of mobile platform products yet to come from Apple. Pretty exciting time to get involved.
I’m waiting for the right time (read that as budget constrained) to replace my old G4 PowerBook with one of these newfangled Intel Macs. Truth is, for things I am doing today it’s still an excellent computer. I develop Smalltalk code on it just fine, so it’s nothing I need to spend money on upgrading right away. But when the time comes, I’ll also be signing up for a Apple’s iPhone SDK and getting busy.