2016-06-05

grawly:

monstersyllabus:

laflahsdrive:

silktum:

maliwarm:

boomeyer:

piggywheel:

boomeyer:

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:

Dash - by General Assembly

CodeAcademy

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:

Khan Academy

CodeAcademy - Ruby, Python, PHP

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:

the official documentation

TutorialsPoint: Objective-C Tutorial

Ry’s Objective-C Tutorial

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):

How to Publish to the Android Market

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!

@veronicasantangelos You might want this at some stage when you finally start Uni!

Just to add to this;

1, Set yourself up an account on jsfiddle.net and you get yourself an awesome, easy to use sandpit for trying out JS/JQuery/JS framework stuff. YOU DON’T NEED TO INSTALL ANYTHING (woo!). It’s free.

Just remember if starting a fiddle from scratch, you’re usually gonna be coding with JQuery, so you gotta set JQuery as your framework:

2, Got a light/medium understanding of JS? Next step: learn AngularJS. Seriously, it’ll blow your mind. Just remember to select it as a framework in JSFiddle:

for the record, codeacademy is good with basic syntax but doesnt teach you much of the why/how of what’s going on. But if you want to learn python for instance, there are several free classes (all you have to do is get an account, but it doesnt cost anything) at udacity.com. also, automatetheboringstuff.com gives you access to a how-to ebook on programming in python, aimed at people who have never coded before. those two resources have helped me out a lot more than codeacademy and whatnot

for modeling and animation:
there is also Maya LT, which is $30 USD a month compared to standard $185+ Maya and 3DS Max subscriptions since it is geared toward indie game development

Few things worth pointing out/adding this post:

Xcode no longer requires an iOS developer’s license to push your app to a mobile device. However, it’s still needed for submission.

If you do develop for mobile and plan on submitting your app I would recommend looking at Apple’s human interface guidelines, or at the very least the do’s and don’ts of UI design. Your app doesn’t have to look and work flawlessly but if it’s clearly a mess Apple will reject it.

TalentBuddy was bought by Udemy and I don’t believe the actual coding problems are available anymore? HackerRank effectively does the same thing.

Speaking of Udemy, they just changed their terms of service and courses aren’t astronomically expensive anymore. It’s paid, but if you learn better through videos here’s my favorite iOS course.

Parse is shutting down, here’s a list of alternatives.

DON’T ignore GitHub. There are a LOT of open source projects available that are specifically created to make the production of your app easier. Few examples:

Chart.js makes adding graphs to web pages much easier [x]

Spring makes it easier to implement UI animations into your app [x]

New XKit’s source is on here [x] (not really something you’d “add” to anything but I thought I’d point it out)

Realm is super easy to use and is great for databases on mobile devices.

Udacity was mentioned but I want to stress how great it is at explaining concepts without taking up too much time. It’s faster paced but it puts a lot of emphasis on creating projects on your own without telling you explicitly how to do it, which imo is the best way of learning because it makes you have to actively think about the material you’re looking at instead of just copying everything the video does.

Show more