I’ve had several people ask me, “How can I do what you do?” The answer is simple: start. Any skill in life takes time to learn, whether that be programming, cooking, playing baseball, or playing the piano. With any new skill you need to start somewhere.
Below, I hope to highlight a few things that will help non-programmers start on a track to becoming one, for a job or even just for fun.
Set Your Standards Low
I am by no means a code guru (much more of a polyglot), though I have been programming for over 10 years. I started with basic Windows scripting, and moved on to Linux scripting when Counter Strike: Source came out. For half of that time I’ve been developing iOS applications, with a handful on the store, published either by myself or a company I’ve worked for.
If you’re familiar with programming and you’re switching to iOS development, you can probably knock out an app in a month or two. However, if you’re new to programming, and you don’t understand what methods, arguments, header files, and variables are, you will have a LOT to learn. That’s not to say it can’t be done, just that unless you dedicate your whole life to it, it’s going to take a while.
If you go into development with zero background, expecting to make the next Flappy Bird in a month, you will most likely be extremely disappointed. If you get into things expecting nothing, you’ll be happy with improvement of any kind.
Finding a Good Language
There are an extremely large number of programming languages, just look at this Wikipedia page. What language you start with has a lot to do with what your goals are. If you pick a language that is in line with your interests, you are more likely to stick with it, and more likely to succeed. And most importantly, you never forget your first.
Figure out what you want to do with programming: get a full time job, built yourself a website for a hobby you have, or maybe have your computer automatically check you in to flights for Southwest Airlines at exactly 24 hours before departure. Once you’ve figured that out, pick the language that will get you there.
Java often gets criticized for being slow, but if you’re new to programming you most likely won’t notice it. Android applications are developed in Java, and Java desktop applications can run on OS X, Windows, and Linux. The idea behind Java is to “code once, run everywhere”, so you could write a Java program on one computer, transfer it to another, and easily run it. With some modifications, you can also turn desktop applications into web applets. Java developer jobs are also highly in demand, so if you want to make a career out of development, Java is not a bad route to go.
Not to be confused with the snake, Python is very powerful programming language. It is often praised as the best programing language to start with, as it also has a clean syntax and is usually quite easy to read. Python powers applications such as Dropbox, and is used by large companies such as Google and NASA.
Ruby is an object-oriented scripting language. Built on top of Ruby is Ruby on Rails, which is a framework that allows you to create dynamic websites very easily. Over the past several years it has started to gain popularity, and many companies are hiring Rails developers. Websites such as Twitter, Ask.fm, and GitHub have been built using Rails. If you want to get into dynamic website creation with user generated content, you could start by learning Ruby, and working your way up to using a framework like Rails to make your code even more powerful.
CodeSchool has a great introductory course to Ruby.
PHP is a server-side scripting language. It powers sites like Facebook, Wikipedia, WordPress, Drupal, and many others. It first appeared in 1995, and is what runs over 20 million websites today. It is one of the most popular web development languages, though not many consider it a beginner-friendly language.
Once you’ve started programming, it’s hard to gauge your skill level without getting feedback. If you have an experienced developer who can be your mentor, that is great, though not everyone has that luxury. One way to try and get feedback is to your your code publicly online with a service like GitHub. Doing this accomplishes two things:
1) You learn how to use version control, which is an invaluable skill once you start working on larger projects.
2) You get used to other people looking at your code.
It’s easy to think “I’m not good, nobody should look at this”, but that is a feeling you need to get used to. When I look at some of my old code I feel slightly embarrassed, because with each passing day I improve on my skills, and my code from 6 months ago is not nearly as good as code I write today.
Another important note is that a lot of people on the internet can be pretty harsh. Quite often other developers can be hyper critical of your work, and you’ll have to develop some tough skin to deal with it.
The most important thing is to just stick to it. If you want to get better you just need to keep working at it. Accept critiques from other developers and improve on your skills. Once you understand the basics of the language you’ve chosen, you can use websites like Codewars which have little daily challenges on them to keep your mental blade sharp.