Developing on Windows vs Developing on a Mac

No Comments »Written on June 2nd, 2008 by
Categories: Software Development

I experimented with Objective C and Cocoa sometime last year and had a lot of fun with it. It takes a short while to get used to it, especially if you're coming from .NET, but it really is a great development environment. But i couldn't really think of something interesting to write for OS X so i kinda gave up on it and went back to playing with .NET to scratch my non-work-related coding itches. I don't really have anything interesting to write in .NET either, but because i need it in my job, i tend to experiment with things that could be beneficial to it.

This morning, i read this very nice article from a .NET developer who moved to developing in Objective C and Cocoa on the Mac... The author seems to be as charmed by the OS X development platform as i was at the time. Just reading what he has to say about it makes me want to play around with it again as well actually. But for now, i'm probably better off spending my time on .NET related stuff purely because of my job. The thing is, there are so many different ways to go in the .NET world, and to me, most of those ways suck. The ALT.NET recommended approaches are very appealing to me, but other than that, i'm not at all interested in (or even impressed by) the .NET developer community. I think that the quality level in general is rather low and i actually feel that Microsoft is largely responsible for keeping that level rather low.

But when you're playing around with Obj C and Cocoa, and you start browsing the web for articles and figuring out how to do certain things, you get the feeling that the average quality level of the developers within that community is much higher. It seems like most of them really do know what they're talking about and there aren't so many variations in the ways they develop their software. Obviously, i have no figures or studies or whatever to back this up, but it's just a general impression. I largely believe that this is because of the difference of focus and quality between the Cocoa frameworks and the .NET framework.

The .NET Framework is huge. It tries to focus on a lot of stuff, but if you look at the kind of stuff that the Patterns & Practices group work on and what they're releasing on top of the .NET framework, it does make you wonder. Think about it: Enterprise Library, Composite Application Block, Prism, ... I don't think anyone in their right mind would build a large complex application using just the bare .NET framework. You'll either use the P&P libraries, or you'll use some open-source libraries, or you'll use a framework that you built yourself. And why is that? Because the .NET framework itself doesn't care about the stuff that you'll need in real applications. It just provides an incredibly large amount of stones that can be turned into building blocks that you can use to build applications. But it doesn't have building blocks out of the box.

If you compare that with Cocoa, there is a world of difference. Cocoa has no standard Regex implementation (at least, not when i was looking into it). There are however, a few open-source regex libraries available that you can choose from. On the other hand, Cocoa practically forces you to develop your GUI according to the MVC pattern. See the difference here? Cocoa is full of real, immediately usable building blocks which frees you from having to pick between a myriad of choises like we do in the .NET world. If you want to, you obviously can roll your own or choose between other available building blocks. And for some of the tiny stones that we get from the .NET framework, you'd have to go looking around in the Cocoa world.

I for one would much rather use a framework that already comes with high-value building blocks, instead of using a framework which in reality is just a huge glorified class library where you have to go out and find the really usable stuff from a variety of sources. It just seems so much more productive from the start. Now, don't get me wrong... i do like the .NET platform, as long as i can combine it with a few of my favorite open-source libraries. I just think i like the Cocoa world more. Too bad there aren't any Cocoa jobs in Belgium or i'd probably switch in a heartbeat ;)

Tags: , , ,