The tide is turning or so it seems. Well, maybe it’s not quite so monumentous as a tide shift, but there is certainly a buzz in the air that I think is indicative of at least a gradual shift. I can’t speak for all Windows developers of course, but I’ve talked to enough of my friends to know that the Macintosh is no longer in their eyes some obscure computer made by some obscure computer company that makes computers for artists. It’s got some amazing tech that would appeal to any geek especially programmers who have the initiative to take advantage of it.
I made the switch to the Mac along with a job change back in June of 2007 and I have to say that I am glad I did. It’s not to say that there aren’t good tools for programmers on Windows, but there is most definitely a different approach to everything from the kinds of applications that you build to the way you build them on the Macintosh. These differences in some areas are subtle, but in others they are monumentous.
Core Animation, for instance, a technology that enables programmers to use animation to provide users with visual feedback of many different sorts (e.g. change window frame dimensions and watch the window change in steps rather than having the frame update instantly), is really groundbreaking. It’s not something that you see in Windows programming. There are many other technologies that have a similar appeal. Some frameworks that I’ve used such as WebKit–a framework for building web applications, or QTKit–a framework for building multimedia applications based around QuickTime, are exciting and interesting to work with.
I have made predictions in the past that haven’t come true, so when I make a prediction, you ought to take it lightly. However, on this one I feel pretty confident. Apple just gets doing technology elegantly and they’ve made their tools and libraries available to everyone so that anyone who takes the initiative can build elegant software themselves. This fact, I think, will soon have a snowball effect that will start brining programmers from the Windows world in droves. Considering the disappointment that Vista is and the fact that Microsoft doesn’t even seem to like it, Windows programmers are going to start looking for ways to deepen and broaden their toolsets and even consider new platforms such as the Mac.
So what are the hurdles to entry? I think the following list pretty well summarizes it:
- The cost of a Mac. I’ll put this one out there even though I don’t agree with it. To get a decent professional laptop, you’ll pay at least as much if not more to get similarly equipped systems to the MacBook Pro line. The MBPs were just recently upgraded and the price is actually excellent for the specs you’re getting
- The cost of the development environment. Oh wait… XCode is free and comes with every new Macintosh. Scratch that!
- Objective-C uses square braces. Well, you will need to learn a new language. Just take it by the horns and go for it. It’s not that hard and once you become proficient with it, you’ll prefer it. It’s very powerful and often intuitive.
- No real hurdles. There really aren’t any major hurdles to entry. Just get a Mac and start coding. It’s that easy. And if you need some pointers, take a look at my XCode 3.0 article to get your started. When you’re done with that, head on over to Cocoa Dev Central for some great tutorials or your can check out Cocoa is My Girlfriend a new site that Marcus and I put together.
If you are planning to switch or have just recently switched to the Mac, you should know that you are far more likely to find work building applications for consumers. Most of the work I’ve done over the years on Windows has been business software. This is one of the main differences. I think this will also shift over time, however, for right now, expect to build applications your mother might use rather than software your company might use. And if you have any questions as to what other benefits there are, talk to any successful independent Macintosh software vendor out there. There are lots of them and they do very well.
4 thoughts on “Windows Programmers Shifting to the Mac?”
I made the switch back on Aug. 2006. Just minutes after the Mac Pro was announced. My reason for switching was the total screw-up that was Microsoft Windows Vista. :)
First thing I noticed was that XCode 2.x was available free on the OS disk. I was pretty amazed by the tools that came in the Development folder. But now that Leopard is out, I am more than amazed. It’s really great that Apple is giving us the same tools that they use including some great debugging tools!
I started looking at programming the Mac a few months ago. It’s been pretty slow sailing so far. My first hurdle is trying to learn Objective-C. I’m finding some of it’s concepts a little baffling. However, I am starting to get the hang of it and am pretty impressed. Plus, I don’t mind the “” at all. I actually like the message passing pattern when compared to Java.
My really big hurdle now is getting my head around the frameworks (Kits, what ever they are called here). I was pretty good with Java on Windows, but I’m not finding it very easy to figure out the API frameworks. Websites like this and Cocoa Dev Central has been a big help, but they only go so far. So, I try to pull as much source code down as I can and look through as much as I can to get a better feel for this stuff.
I’m sure I’ll get the hang of this soon. Then I just have to try to come up with a great program that no one else has thought of to write. ;) Not all that easy for the Mac since there seems to be a really great program for just about everything you would want to do. :) Still…
I made the switch from Windows development w/ .NET in C# to MacOS Cocoa development about a month ago. Fortunately, I have access to a large team in the office of highly skilled Cocoa developers. This has naturally eased the transition.
The biggest hurdle for me has been the tools. Xcode, pardon my french, sucks rocks compared to Visual Studio 2005 w/ Resharper 3. The language syntax difference hasn’t bothered me much at all. I do miss the powerful reflection features, especially Reflection.Emit.
The other big change for me is that I came from working on high-load server-side applications to working on a desktop, single user, GUI application. For contrast, the former had a primary focus on multi-threaded performance and required close attention to resource contention, etc whereas the scenarios I’m dealing with now are primarily single threaded, or “fire and forget” multi-threaded. I suspect now that Macs are getting more and more cores, we’ll start to see an increased focus on multi-threading, and I’m looking forward to that.
All in all, the transition has been pretty smooth, but the tools still have a LONG way to go — a LONG LONG LONG way to go. I’m just sort of left thinking that with Xcode you get what you pay for (i.e. it’s free,) but from what I understand it’s really the only game in town for Cocoa development.
I did C# development for nearly 5 years and never once did I use Reflection.Emit. I find it strange that you would name this as the functionality you miss. Do you find yourself needing to dynamically emit code a lot in the work you do? It’s a pretty specialized feature. While what it can do is very cool, it’s not terribly useful for the vast majority of programmers.
I think if you spend a little time looking into KVC and KVO in Cocoa, you’ll find you don’t really need reflection. Everything can be done dynamically by design.
I’ve always felt that one of Microsoft’s few strengths is their dev tools. This hasn’t changed, however, I wouldn’t say that XCode isn’t just as powerful. It doesn’t slow me down at all now that I understand it and that is the key, I think. I can do just as much if not more on the Mac after 8 months of just learning in my spare time using XCode.
And as far as multi-threading goes, it’s super simple on OS X. It’s not terribly difficult in C# either, but I again wouldn’t say that the Windows side is better by any stretch.