If you've ever programmed before, you know how challenging it can be. I do mostly front-end work for Vook; ebooks, at their core, are just bundles of HTML and CSS. And when an ebook is broken on a certain device (which, for all intensive purposes, is just a browser), I've wracked my head for hours trying to find typos in my CSS or errors in my mark-up.
Enter the world of Xcode. Programming in Apple's development environment is a dream:
- Libraries of quality code are pre-built for you. If you wanted, you could combine them like Lego blocks to easily form an entirely new program. All that's needed is the inspiration.
These libraries of code are not unique to iOS development; there are libraries out there for other languages as well. But, man, having them pre-loaded right into your software development environment is amazing.
- Inline validation and auto-complete. Xcode tests your code as you write it and let you know at the moment you write a new line of code if you have a bug. Similarly, Xcode remembers the names of all of your variables--and of those in its pre-built libraries--and will begin to auto-complete them for you as you type. This does encourage you to use long and very verbose variable names, but... It makes TextMate or NotePad++ look like something from 1991.
- iOS emulator. As soon as your code is done, you can compile and test right on your computer. This is amazing. With the front-end work I've been doing, I have to actually load a site into multiple browsers at multiple screen sizes and basically test everything manually. What a drag! There are some differences between the emulator and the actual device, but the emulator is good enough for you to quickly to get a sense of whether the new code you wrote seems to be working or you need to revisit the drawing board. Deeper QA can happen later.
- UI. If you're visually oriented, you can drag and drop buttons and the like and then style them the way you want in the Storyboard mode. Xcode does the heavy lifting to create the correspond code. This is invaluable for designers who want to dip into app development.
It's no wonder, that iOS has been such a dominant mobile platform for so long. The Xcode software development kit (SDK) makes programming apps surprisingly easy and incredibly fun.
When you're trying to create a platform, building out robust tools for contributors is key. The easier it is for others to publish on your platform, the more high-quality content you will have and ultimately the more valuable your platform will be. It's a decentralized model: create the tools for others to contribute.