I’ve had a couple of people ask me how they can learn to program, so I wanted to write something up about how I would go about it, if I were starting today. Caveat: I’m only referring to web programming (web sites), not programming for other platforms such as mobile (iOS or Android), Raspberry Pi, etc… However I would think that the steps are similar.
- Buy your domain: This is your http://www.mydomain.com web address. The reason I mention buying your domain first is that you don’t want yours to get taken. Domains are disappearing every day ( Mine is http://www.hoitomt.com. The domain will cost you less that $15/year and you can just sit on it until you intend to do something about it. I own all of my domains through GoDaddy.com but you can buy them through any Registrar, it makes no difference. See number 4.
- Learn HTML and CSS: take CodeAcademy classes: Start with Web Fundamentals. This will give you the basics of HTML and CSS. Do not use an IDE like Eclipse, NetBeans, or anything else like that. Only use a text editor for your websites for now. I recommend SublimeText, but you can use Notepad, among other options as well.
- Find an desire: This is idea for a website/project that you want to work on. This can be a website for a friend, for yourself, for your cousin’s business, anything really. This should really happen as your second step but going through the class work will help you better frame your idea.
- Learn to deploy: Pick a web host – if you are using only HTML and CSS there are a lot of good options out there (GoDaddy.com and Bluehost.com are two hosts that I’ve used). To keep things easy, buy your domain from the same place as you host your site. Once you get your idea started, push it out to your domain. This is a very gratifying experience. It’s awesome to see your hard work on display on the actual internet.
- Write Code: lots and lots of code. I had a professor that said “You don’t learn to drive a car by reading a book – programming is the same way”. You have to write code to get better at programming. If you have a strong enough desire to see your idea (number 3) come to fruition, this part is easy. You will want to write the code.
- Learn a server side language and framework: My recommendation is Ruby on Rails. Ruby is the programming language, Rails is the framework. Not only is ROR very easy to use but if you get good enough at it, you can get a pretty good job as an ROR programmer. Start with the Ruby course from CodeAcademy
- Learn about databases (only a little): This is really 7a, the language/framework step will cover some database stuff. Once you get to this point, you’re going to have run into a situation where you wish you had a database. Everything online (user information, pictures, products, etc…) is stored in a database.
Notes about learning
Programming is a tool, you use it to make things. You wouldn’t buy a hammer unless you had some nails that needed to be driven, you wouldn’t buy a spatula unless you has some eggs that needed flipping, and, likewise, there isn’t a need to program unless you have something that you want to make. So my first piece of advice is to answer the question: What do you want to make?
When we are young we learn because we are told to learn. To get by in the world do we need to know Algebra? State Capitals? History of the American Revolution? No, no and no, but they told us to learn it, so we did. However, starting in college you start to say to yourself “Why the hell am I learning this? I’m never going to use it and I don’t give a damn about it”. Learning takes time, and sometimes money, both of which are scarce resources. So, as an adult, we tend to learn only those things that help us to satisfy a desire or need.
This is a pretty good start, if you make it to the last step you will probably know what you want to do next. Please contact me via the comments or by email if you want any more information. Good Luck!