Do yourself a favor. Learn to code. Here's how.
I’ve said this to my non-techie friends countless times. It’s no secret that being able to code makes you a better job applicant, and a better entrepreneur. Hell, one techie taught a homeless man to code and now that man is making his first mobile application.
Learning to code elevates your professional life, and makes you more knowledgeable about the massive changes taking place in the technology sector that are poised to have an immense influence on human life.
(note: yes I realize that 3/5 of those links were Google projects)
But most folks are intimidated by coding. And it does seem intimidating at first. But peel away the obscurity and the difficulty, and you start to learn that coding, at least at its basic level, is a very manageable, learnable skill.
There are a lot of resources out there to teach you. I’ve found a couple to be particularly successful. Here’s my list of resources for learning to code, sorted by difficulty:
Novice
Never written a line of code before? No worries. Just visit one of these fine resources and follow their high-level tutorials. You won’t get into the nitty-gritty, but don’t worry about it for now:
w3 Tutorials (start at HTML on the left sidebar and work your way down)
Intermediate
Now that you’ve gone through a handful of basic tutorials, it’s time to learn the fundamentals of actual, real-life coding problems. I’ve found these resources to be solid:
Difficult
If you’re here, you’re capable of building things. You know the primitives. You know the logic control statements. You’re ready to start making real stuff take shape. Here are some different types of resources to turn you from someone who knows how to code, into a full-fledged programmer.
Programming problems
Sometimes, the challenges in programming aren’t how to make a language do a task, but just how to do the task in general. Like how to find an item in a very large, sorted list, without checking each element. Here are some resources for those types of problems
Talentbuddy
TopCoder
Web Applications
If you learned Python, Django is an amazing platform for creating quick-and-easy web applications. I’d highly suggest the tutorial - it’s one of the best I’ve ever used, and you have a web app up and running in less than an hour.
Django Tutorial
I’ve never used Rails, but it’s a very popular and powerful framework for creating web applications using Ruby. I’d suggest going through their guide to start getting down-and-dirty with Rails development.
Rails Guide
If you know PHP, there’s an ocean of good stuff out there for you to learn how to make a full-fledged web application. Frameworks do a lot of work for you, and provide quick and easy guides to get up and running. I’d suggest the following:
Cake PHP Book
Symfony 2 - Get Started
Yii PHP - The Comprehensive Guide
Conclusion
If there’s one point I wanted to get across, it’s that it is easier than ever to learn to code. There are resources on every corner of the internet for potential programmers, and the benefits of learning even just the basics are monumental.
If you know of any additional, great resources that aren’t listed here, please feel free to tweet them to me @boomeyer.
Best of luck!
I’d also like to add some more specialized resources!
Video games:
Easy game engines (virtually no coding):
- Game Maker Studio (2D; free and paid versions)
- GameSalad (2D)
- RPG Maker (2D; numerous versions ranging from free to $69.99)
- Stencyl (2D; free and paid subscription versions)
- Scratch (good for kids and is more general; 2D; free)
More difficult game engines:
- Unity (lots and lots of platforms; C# and JavaScript script; 2D, 3D, VR; free and paid versions)
- Unreal (specializes in graphics; C++ and visual script; 2D, 3D, VR; free with a royalty on successful products)
- CryEngine (Lua script; 3D; paid subscription and full license versions)
Mobile game development:
- Corona (free and paid subscription versions)
- SpriteKit (2D) and SceneKit (3D) which are built into the official compiler to create iOS apps (see iOS apps for more resources)
- also all of the above game engines (cross-platform)
Game console development:
- Game Maker Studio (with a paid subscription)
- Unity
- Unreal
- CryEngine
Note that games can also be created on more general platforms like iOS and Android apps, but the resources listed above are specialized for game development.
iOS apps:
In order to develop iOS apps, you’ll need to purchase an iOS developer program membership for $99 a year, which requires an Apple account. Here are some general resources:
- Xcode (the official IDE for iOS apps; can be installed on OS X)
- Start Developing iOS Apps Today (Objective-C)
- Ray Wenderlich iOS tutorials (Objective-C and Swift)
- Code School: Try iOS (Objective-C)
- Developing iOS 8 Apps (2, 3, 4, 5, 6, 7; Swift)
- TutorialsPoint: iOS Tutorial (Objective-C)
- How to Make iPhone Apps With No Programming Experience (Swift)
- Swift Tutorial: Building an iOS Application (2, 3)
iOS apps are developed in the 2 official languages of Apple: Objective-C and Swift, the latter of which is newer and generally much easier to learn.
Objective-C resources:
Swift resources:
- the official documentation
- The Swift Programming Language (free official e-book)
- Swift: A Quick Reference Guide
Xcode also has SpriteKit, SceneKit, and Metal built in, all of which are incredibly useful for creating apps that require elaborate graphics, particularly games.
SpriteKit resources:
- How to Make a Game Like Candy Crush With Swift (2)
- Sprite Kit Swift Tutorial
- Create Space Invaders with Swift and Sprite Kit
- iOS SpriteKit Physics Tutorial in Swift
- Build the Game of Life (Swift)
SceneKit resources:
- Scene Kit Tutorial: Getting Started (Swift)
- An Introduction to SceneKit (2; Swift)
Metal resources:
- the official documentation + other resources (Obj-C)
- iOS 8 Metal Tutorial with Swift (2, 3)
- Getting Started With Metal (Obj-C)
- An introduction to 3D graphics with Metal in Swift
Also, in order to publish iOS apps, you’ll have to juggle certificates, app ids, and provisioning profiles. This process can be convoluted at times so here are some resources:
- How to Submit Your App to Apple: From No Account to App Store (2)
- Beginner Tutorial: iOS Certificates & Provisioning Profiles
Android apps:
In order to develop Android apps, you’ll need to register as a developer for a one-time fee of $25. Here are some general resources:
- Android Studio (the official IDE for Android app development; free; can be installed on Windows, OS X, and Linux)
- the official documentation
- Getting Started
- Android Tutorial For Beginners (2, 3)
- Learn Android SDK From Scratch
- Introduction to Android Development With Android Studio
Android apps are developed in Java and the layout is coded with XML.
Java resources:
- W3schools: Java Tutorial series
- TutorialsPoint: Java Tutorial
- Core Java Tutorial
XML resources:
- W3schools: XML Tutorial series
- TutorialsPoint: XML Tutorial
For publishing (which is somewhat easier than publishing iOS apps):
3D modeling/animation:
- Blender (can also be used to create games; Python script; free and open-source; can be installed on Windows, OS X, and Linux)
- Maya (specialized script; free trial, free 3-year student subscription, and paid subscription versions; can be installed on Windows, OS X, and Linux to an extent)
- 3ds Max (Python script; free trial, free 3-year student subscription, and paid subscription versions; can be installed on Windows and OS X)
- RenderMan (specialized script; free for non-commercial/educational use and pay-per-license for commercial use; can be installed on Windows, OS X, and Linux)
Misc. resources:
Stack Overflow is an ask-and-answer community for programmers. It’s amazing and will save your life. Sign up and don’t be afraid to ask for help.
Github offers a student pack (here) if you create an account and prove you’re a student. This gives you free access to a bunch of great programming resources for free for a certain period of time, such as Unreal Engine. Also, Github in general is a site that you can host your code on. Other users can see it, and “fork” it to make a copy of your code and modify it.
Parse is a backend service that allows you to store data in databases it hosts on its own servers. It lets you use push notifications, create users, store and retrieve data, etc. It’s compatible with iOS apps, Android apps, Windows apps, Xamarin, React, Unity, OS X, Windows, JavaScript, PHP, .net, Arduino, and Embedded C. It’s free up to a certain limit that depends on the services you use.
Cloud9, Codebox, and Squad are online IDEs that allow for real-time collaboration and support a variety of languages, so they’re useful for team projects.
And some general advice:
- Your program will not work right away, 99% of the time. That’s okay. Do your best to figure out where the error is. Here is some advice on debugging (written for PHP but the methods can be generalized).
- If you’re stuck, Google. Google like there’s no tomorrow.
- Ask questions on a community like Stack Overflow.
- For that matter, browse relevant Stack Overflow questions. You can probably find some solutions there.
- Don’t be afraid to copy and paste.
- Take breaks sometimes if you’re getting burned out. But don’t stay away from your projects for too long or you’ll lose track of its status.
- Backup your code. On the cloud, on a USB drive, wherever. If your IDE has a backing up feature like snapshots, use it whenever you hit a milestone.
- If your project is big, split it up into milestones and set goals. Don’t tackle everything at once.
Like the OP said, coding isn’t just for professionals and “geeks” anymore. Anyone can learn it if you really try, and with the rapidly expanding tech industry, learning coding can really broaden your opportunities.
If any of the links are broken, or you have a question or some information/resources to add, you can contact me through the askbox or the OP through his Twitter (as mentioned in his post).
If you’re interested, try some of these out and best of luck!
Great work expanding on my humble list to include a much fuller collection of resources for learning how to code! Cheers!