So You Want to Learn to Code?

But first, let’s address the elephant in the room.

George Saieed
Curious George
8 min readAug 6, 2018

--

Some of the code that comprises my personal website, georgesaieed.com.

‘So what subject are you majoring in? Computer Science?’

I’ve been asked this question easily over a hundred times over the course of this past few years, by co-workers at both Accenture and Chase, friends I haven’t spoken to in years, and even family. The conversation that then follows is always the same.

Me: I‘m actually studying neuroscience!
Person X: *Looks at me blankly and then tries to formulate a polite response*
Person X: But… you’re an intern at a technology consulting firm/bank. And don’t you just program or design things or whatever?
Me: Yup!
Person X: *Continues staring blankly*
Person X: Um… so why are you a neuroscience major?
Me: Well, mostly because I’m interested in the brain. But I’m also a pre-med!
Person X: *Begins to look more offended than confused*
Person X: *With vocal inflections that indicate the following is a statement and not a question* — Your internship is basically useless, then.
Me: No?
Person X: So what exactly are the skills you’ve learned through it useful for? And what in the world are you doing (t)here?!

I kid you not, almost every conversation I’ve had about this subject with someone has followed the same general outline as the one I wrote above. At this point, I’m more or less obligated to explain myself, and so I try to. I

Me: Well, for one, I really like building things. I also just like picking up new skills.
Person X
: You’re crazy. Whatever floats your boat, I guess.

Which, honestly, is an understandable response. If I want to be a doctor, what am I going to do with software development?

For one, programming teaches you to solve problems. The difficult part about software development is not the actual act of coding; it’s coming up with the logic behind the solution. Learning to think like a programmer is not just useful for writing scripts or building applications, but doing so will also make you a better thinker and a better problem-solver.

I feel like I should have a ‘for two’, but alas, I do not. Enough about me, though — onto the fun part! Most people simply ask me “how do I learn to program?” The answer to that question is more complicated than it seems, as it depends on what you want to do with the skills you learn.

This is a long post — feel free to skim it and only read the sections you want, depending on what you hope to accomplish with the skills you want to learn. Also — I am not being paid to endorse or recommend anything mentioned in this post. All of the links/tutorials I mention I have gone through and used myself (albeit only bits and pieces in some cases).

You’re a Complete Beginner Who Wants to Hit the Ground Running

Learn Python.

Python is easy to learn because (at least with more simple blocks of code) it’s almost as readable as English. You can use it to write scripts — for example, if you rename a lot of files, or perform a ton of tedious calculations yourself, you can easily write Python scripts to automate these tasks for you.

The language has a large user base and tons of beginner support. There are hundreds, if not thousands, of libraries that you can download that will do various things for you, and you can even use it to create web applications (Django is a Python web framework — but more on those later).

First, head to python.org/downloads, and download the latest version of Python (3.7.0 at the time of writing this post). Macs come with Python 2, but I’d recommend downloading the latest version so you can stay up-to-date.

Next, pull up https://www.codecademy.com/learn/learn-python. Codecademy is great (and is actually how I learned Python), and has everything you need to get started (you actually code directly on the website itself), and it walks you through a bunch of tutorials.

Once you’ve used that, feel free to go to https://www.learnpython.org/ and go through that as well, skimming through what you already know and reading through what you don’t.

You’re a Complete Beginner Who’s Okay with Moving at a Slower Pace in Order to Learn Object Oriented Programming More Thoroughly

Learn Java.

Java is an object-oriented programming language. I won’t go into the details, but you can read about what that means here if you’d like. Regardless, Java gives you a very solid understanding of what goes into an object-oriented programming language. It will not only teach you to think like a programmer, but will also give you a sense of the underpinnings of programming as well.

First, download the Java SE Development Kit (JDK) here. Next, download Eclipse Photon. I recommend reading this tutorial on how to set up Eclipse properly for programming with Java.

Finally, pick one of these tutorials on Udemy to go through:
The Java Tutorial for Complete Beginners
Complete Beginners Java Tutorial (Java, JavaFx & Maven)

The first one is free, and is a good starting point if you don’t want to spend money to get going. The second one goes a little further past the basics, but does cost some money. It’s currently $14.99 at the time of writing of this article, but is normally $194.99 (supposedly). Pro-tip: Udemy is great for teaching yourself, well, anything — but never spend more than $20.00 on one of their courses. If you wait it out, almost all their courses end up on sale at one time or another for under twenty bucks.

You Want to Learn to Build Websites

Learn HTML and CSS.

HTML and CSS are the two languages that create just about every webpage you encounter on the internet (there’s usually a lot of other stuff on top of that). They’re not technically ‘programming’ languages; they’re what’s known as mark-up languages. They compromise the ‘static’ part of every page — all of the text and image content on the page (this is what HTML does), along with what the page looks like (colors, fonts, positioning, etc. — this is what CSS does).

You don’t need to ‘download’ anything to start writing HTML and CSS — you can technically open Notepad (Windows) or TextEdit (Mac), save the file you’re creating as a ‘.html’ or ‘.css’ file, and then open the ‘.html’ in a web browser and you’ll be good to go. There are, however, some very powerful code editors that are extremely useful for web development. My personal favorite is VSCode — it’s fast, looks nice, and has a bunch of useful extensions you can download.

JavaScript is another language used in webpages (and you pretty much need some form of it if you want a user on the website to interact with the site or do anything with it). People generally learn HTML and CSS together, then JavaScript; this course on Udemy will do the trick, helping you learn all three.

Something to note: HTML, CSS, and JavaScript alone will only give you the ability to build a static webpage. Static websites have content that does not and will never change. Effectively, these are useful when you want every user to see the same thing. You can’t store information specific to users.

You Want to Build More Complicated Websites

Step 1: Complete the last section.

See above.

Step 2: Learn Angular 4 or ReactJS.

Angular and React are what are known as web frameworks. You can find a good explanation of web frameworks here. These two are only two of a bunch (but they are my personal favorite).

If you want to learn Angular, try out Google’s Tour of Heroes Tutorial — it’s pretty good as far as tutorials go. Be careful; the first version of Angular, AngularJS, is very different from Angular 4, so make sure when you look things up if you get stuck that you search for solutions involving only Angular 4 (or 2 — it’s pretty similar to 4). For an example site built with Angular, check out my personal website, georgesaieed.com.

If you want to learn React, see this official tutorial. It also does a pretty good job of teaching you the basics.

In order to learn more complex concepts, definitely search Udemy, PluralSight, or Udacity for more advanced courses.

Step 3: Set up a back-end for your application.

This is where things start to get complicated — a back-end will allow you to store user data, perform authentication for logging in users, etc. If I’m being totally honest, when it comes to web development, I deal mostly with front-end development (the stuff you actually see on a website, and the logic behind what you interact with directly), so I don’t have much experience in this area yet. Regardless, this is a good tutorial to use for getting started. I highly recommend being very comfortable with HTML/CSS/JavaScript/Angular before tackling this.

You Want to Build iOS Applications

iOS development requires a Mac. Though it does not technically require an iPhone, it’s pretty useful to have one to test the apps you build on, though you can get away with testing using the computer’s built-in iPhone simulator.

First, head over to Apple and download XCode. It’s the software that will allow you to build native iOS applications. iOS applications are now built in a programming language called Swift — it’s pretty easy to pick up once you get going, and it’s a lot less confusing in my opinion than Objective-C (which is what you used to use to build apps).

My two favorite tutorials for iOS application development are design+code and The Complete iOS App Development Bootcamp. The first one is somewhat expensive (though you can get it for half off if you’re a student!), but it is absolutely excellent; you build a very robust app while also getting to learn something about design in the process. The second one is also great — you build a variety of different apps, from a Music App to a Weather App to a Whatsapp clone.

You Want to Build Android Applications

Step 1: Scroll up, and learn some Java.

Read a little further up.

Step 2: Complete one of these courses:

Learn Android Application Development (Udemy — Free)
The Complete Android N Developer Course (Udemy — $14.99)
The Complete Android and Java Developer Course (Udemy — $14.99)

And that’s all folks!

That’s pretty much the extent of what I know — there are more programming languages out there, but these should serve to get you started, depending on what you want to do. Here are some more general resources that should be helpful as you progress in your software development journey:

StackOverflow — This is quite frankly the end-all be-all when it comes to programming resources; if you have a question about something you can’t figure out, something in your code that’s broken, or pretty much anything programming related, there’s a good chance someone’s already asked your question and had it answered on this site.

Codecademy — I mentioned this once earlier, but it has a ton of different tutorials, from Python to Ruby to Web Development to learning about the Unix command line.

This Ridiculous List of Resources — This has links to a ton of resources for a variety of different programming languages.

Finally: learning to program is not easy. It won’t take you a week, or a month, or even a year; it is nearly impossible to know absolutely every single thing about any programming language, and everyone runs into problems no matter how much they know. If you take things one step at a time, you’ll slowly get better and better, and you’ll be able to create better and more complicated programs, games, websites, or all of the above (depending on what you want to learn).

I know this was a long read, but I hope it was helpful; and please feel free to email me if you have any questions or concerns as you begin your journey, and good luck!!

--

--

George Saieed
Curious George

UChicago ’19, Kellogg MBA '23, CWRU MD ’24. coptic 🇪🇬, medical student, vfx artist, photographer, software dev, pianist, beatboxer. not always in that order.