If you are a .NET developer and if you happen to also have a Mac environment, I highly recommend that you learn iPhone development. Why? Read on.
I purchased a Macbook Pro a week ago and started coding an app within the first 2 hours of getting home! I tell you what, I’ve been a PC for a long, long time and a first-time Mac owner. This Macbook Pro Unibody plus the Snow Leopard OS is a really one sweet device. Am I done with PC laptops? Nope–I’m just waiting for the HP Envy 14 series to come out–16Gb RAM config with newest iCore 7 chip plus SSD drives–that’s going to be my configuration for SharePoint 2010 mobile development. Anyway, back to the Macbook. So, I started coding my first night owning the Mac. I saw some samples on the Web and started coding iPhone apps. Holy-moly! I saw and typed keywords that I haven’t used since college (I think)–the malloc and dealloc commands/keywords!!! I dreaded those things as a young programmer. Memory leaks, buffer overruns–yep, I got burned many times when I was starting out and I didn’t allocate/deallocate memory properly in my programs.
So, what does iPhone development got to do with .NET development? Well, technology-wise, they are different worlds. XCode uses Objective-C while .NET (mostly) uses C#. They’re kind of like distant cousins; they’re similar in some ways but different in many ways. No, I’m not recommending you abandon .NET and totally convert to XCode. I’m recommending that you try iPhone development because it will bring you back to fundamentally sound programming practices. As a developer, I felt like it brought me back to my roots. Developers need to be mindful of performance and memory use when developing for the iPhone. In XCode and .NET, there are garbage collectors. Developers don’t worry about memory-allocation thanks to the garbage-collectors. iPhone apps don’t have garbage-collectors. Also, device memory is limited on the iPhone. No gigs of RAM. No swap files. Should you try iPhone development, you will see malloc and dealloc again and you will be constantly asking yourself “maybe I should clean-up stuff in memory and make room for new objects”. If you’ve never seen malloc and dealloc, we’ll I hope it’s a fun experience discovering for the first time what it’s like to develop where you are constrained by limited memory.
.NET developer with a Mac: go try iPhone development. If anything, because you’re forced to think limited CPU cycles and limited memory, it should improve your overall programming skills!