App Development 103: Introduction to Coding
Finally ready to start coding? Before getting too excited, make sure to read App Development 101: Planning and App Development 102: Getting Started first.
First ask yourself a question. Do you have any coding experience? If the answer is yes, then skip to App Development 104: Coding on the Mac. If the answer is no, then read on, because you need to get some experience. The nice part about this is that any coding experience is good experience. You don't need to learn Objective-C to start. You don't have to have a Mac to get starting coding. While having both would be ideal, if you don't have any coding experience at all, but do have an opportunity to learn other languages on other platforms, then take it. There are a number of ways to start learning, each with its own issues.
The traditional route - school. You can always enroll in programming classes at your local college or university. This is how most developers working today learned how to code. But the demographics are changing and a university degree in computer science is no longer a requirement, if it ever was. The good part about formal education is that you you have a very high chance of success. You will learn both computer science theory and practical, hands-on experience. Both are critical for success. The bad part about formal education is the formality. They teach what is easily teachable, not necessarily what you want or need to know. It takes a long time. Classes run at their own pace, which is likely either faster or slower than you would like. Finally, higher education is meant to teach you anything. It is designed to provide you with a degree that is evidence of your abilities, not your skills. The weeding out of the less capable students is just as important as the teaching. Professors provide some assistance but it is ultimately the responsibility of the student to learn. At the top end of the market are big, expensive, private "Ivy League" universities that focus on high admission standards so they have the luxury of having only the best students who will all get jobs upon graduation. At the bottom end are the big, expensive, private "for-profit" universities that focus on profit and provide degrees that have very little marketable value. In the middle are a network of big and small, public and private institutions where you might be able to attend, actually learn something, and maybe put that to use. But you are going to have to work at it.
Do not bother to look for Macintosh or iOS-specific classes. At best, those would be upper-level classes and usually just don't exist. Again, any experience is good experience. Don't fall into the university trap of focusing on languages like Python, C, Java, C++, etc. Language is irrelevent. Each language has its own specific traits and focus. There is nothing wrong with that. Just learn another language and compare.
The do-it-yourself route - books, videos, and tutorials. Included in this category are any online classes from any institution that would otherwise be listed above. Programming is inherently a hands-on learning task. With enough practice, you can learn how to code. Undoubtedly you will miss out on a lot. Here is a list of recommended introductiont to programming books:
1) I need content here
2) K & R?
3) Big Nerd Ranch?
The bootcamp route. The latest craze in app development is the bootcamp. These are private, relatively short classes that focus only on programming - no French literature, hélas. These bootcamps will focus more on practical skills that are in demand. They are usually offered in major metropolitain areas. Some recommended bootcamp-style programs are:
1) I need content here
2) Big Nerd Ranch?
Finally, recognize that learning how to code takes time. There is no shortcut. Don't be intimidated by people who already know a lot. Also, don't try to code past your abilities. Work on projects that are only a little harder than you can manage. At any given stage of a programmer's development, there are lots of other programmers at the same stage. Seek out help online and in person from people who are close to your own abilities and experience level. They will better understand the problems you are having and will be better able to explain it than even someone who knows the material better. Look for online forums, clubs, and meetup groups. However, there is no need to wait until you have all the answers. Once you have written some cool code and developed an app you think would be valuable to someone, post it on GitHub and/or the App Store. Nothing has to be perfect.
Speaking of GitHub, be careful with open source. Open souce software can be a tremendously useful resource for end users and developers. I fear that it could be less useful for people trying to learn how to code. Don't use code that you don't understand. Play around with it. Modify it. Ask the author about it. Those are the strengths of open source. You can use it as a tool to code beyond your abilities, but remember Gandalf's advice, "Perilous to us all are the devices of an art deeper than we possess ourselves."
In spite of what you may have heard, Free and Open Source software is founded upon intellectual property and copyright. You must read and comply with all software licenses, especially as a developer. In some cases, developers are the ones that have extra work to do in order to comply with open source licenses.
Whatever route you take to get there, App Development is going to require Objective-C. If you already know C or C++, great. You are halfway there, if not more. If you don't already know C, now is the time to start. If you do know other languages, then the biggest difference is syntax. You can learn C on any platform, with any tools. The goal is not mastery of C, just the basics. If you want to start learning C on the Mac, then go ahead and proceed to the next User Tip, App Development 104: Coding on the Mac.
Writing Mac and iOS apps is an advanced topic. Don't try to build Rome in a day. Start small and slow. Take your time. Learn how to code. Learn to make good use of online resources like:
When you have mastered the basics and are ready to write some real Mac or iOS code, then proceed to App Development 104: Coding on the Mac.