Programming but for 8-year-olds

In the last few decades, Information Technology has seen an unprecedented growth. Everyone has computers and smartphones, and even smartwatches (among many more devices), and each of them have unique apps. So many of these apps have made their creators insanely rich, be it Doodle Jump, WhatsApp, or Instagram, such that practically everybody at some point has thought to themselves, “I could do that too! I wanna be a millionaire as well!”

But then the real question starts to manifest itself — “Where do I begin?”

The faint of heart will give up right then and there. Some of the stronger-willed people will go on a little further, then just plateau because they honestly don’t know how or where to continue. This is really sad, because as technology progresses, people need to learn how to program a computer as a life skill, like automotive maintenance or home repairs.

My parents work day in and day out with computers and IT, so naturally from birth, I’ve had quite the exposure to computers. When I was about 4, I was easily navigating through Windows ME figuring out how to play and playing Pinball, Solitaire, and Hearts. I typed extremely slowly, but it was good enough for my age.

Scratch

That was all fine and dandy, but when I turned about eight years old, my dad downloaded this program onto my computer called Scratch. It was this new program from MIT that basically had a drag-and-drop interface to allow a child to understand the basic architecture of a simple program by controlling a little Cat node.

The simple Scratch interface

As you can see in the picture, it’s really simple and easy to use and anyone can use it regardless of comfort with a computer.

I really started to like Scratch, and anytime I played a computer game or used some kind of software, I thought about how I could implement a more rudimentary version using Scratch. That whole process-based thinking and mental algorithm generation is truly what someone passionate in Computer Science needs, in my opinion. I’m not trying to show off; I’m just saying that’s what helped me understand the fundamentals of Computer Science.

Scratch looks kiddy at first, but seriously anyone of any age should not be discouraged from using this. It’s a great tool to understand basic programming.

Java (pretty much for Android development)

Though this helped me, I would not recommend this to most other people.

Java is a language that is still used a LOT (most famously known for Android development), but had its heyday a few years ago. In my honest opinion, it’s a dying and a boring language, but if you want to do Android Development, Java is pretty crucial.

After I had done Scratch for a little while, my dad got me SAMS Learn Java in 24 Hours when I was about ten. This book grounded my knowledge in Computer Science more and taught me basic Java syntax. I hated Java and everything about it, until in 2011, I found out about this new website called Codecademy. Basically what it does is that it enables you to type your own code and then get it validated and move on to the next level. They have courses for all kinds of languages from HTML/CSS to Javascript to Python to Ruby and so much more. THIS is when I started to like coding.

The SAMS book I got — it introduces you to Android as well

HTML, CSS, and JS (for website and cross-platform app development)

Codecademy.org is seriously an amazing thing. I did their JavaScript course first. This course basically taught me fundamentals of programming again with JavaScript, which is very syntactically similar to Java, so I was able to learn it rather easily since I had had that Java exposure. If you want to go with what I did, follow the proceeding steps:

  1. Take the JavaScript course (click for link) to learn JavaScript and the fundamentals of coding
  2. Take the HTML and CSS course to learn how to make a website
  3. Take the jQuery course to learn how to add interactivity to your website
  4. Take the Make a Website and Make an Interactive Website to learn frameworks like Bootstrap, a usable HTML framework
  5. Once you’ve got a strong hold on all of these, take the AngularJS course to learn how to make websites quicker

Once you’ve done all of these, you have the option of either a) making a website or b) making an app that runs on all mobile devices (not really suggested but you can if you want).

a) You can make a website with the skills you’ve learned, and host it with Github Pages, which is completely free and gives you a .github.io subdomain (instead of example.com, your website will be example.github.io)

b) You can make an app with PhoneGap that can run on most websites. This is not really suggested, and I’d recommend learning the platform-specific language (see below), but if you really want to do this, go right ahead.

Once you’ve done all of these, you can go on to learn back-end languages, which means you can make your code interface with a database. You can do this with Firebase without learning any additional skills, but this is getting to be unreliable since competitors such as Parse have now started to shut down.

The MEAN stack

MEAN stands for MongoDB, ExpressJS, AngularJS, and Node.js. MEAN is an amazing utility that allows you to use databases with your code. I would recommend learning each of these individually, since there is no true guide to learning them all at the same time. My order was as follows:

  1. Install Node.js on your computer to do anything — click here
  2. AngularJS (you should’ve learned this in the previous step; if you skipped to here, Codecademy has a great tutorial on it)
  3. ExpressJS (their website has a great tutorial on it)
  4. MongoDB (their website also has a great tutorial on it)
  5. Node.js

A little note about Node.js itself — in my opinion there’s no end all be all free solution to easily learn Node.js. Scotch.io has some great tutorials on specific parts of Node.js, but not the whole thing, unfortunately.

Some other things you may want to learn include Socket.IO and PassportIO for building stuff like chat and user authentication respectively.

Build Crap

Lastly, but certainly not least, and I cannot stress this enough, BUILD BUILD BUILD. It’s the best way to learn anything. Regardless of whether or not something already exists, think about stuff you want to build, and try to build it. As you begin your quest of Googling, you’ll learn more and more and gain SO much expertise that no amount of tutorials could ever teach you. Attend Hackathons, and build for pleasure, and make cool stuff to put on your Resume. Also while you’re at it, make a website to show off all your projects.

Continuing

Seriously, programming is the future, and you can never have enough. There’s so much more you could do with programming that the possibilities are endless. Below are some links to other things if you want to explore

Arduino (for Microcontrollers and robots) — http://arduino.cc

Raspberry Pi (a tiny computer) — http://raspberrypi.org

iOS programming

  1. Ray Wenderlich — http://raywenderlich.com
  2. Apple Developer Center — http://developer.apple.com
  3. React Native (a JavaScript framework) — http://facebook.github.io/react-native