How to learn to code for free
- — 18 April, 2012 22:15
In days gone by, all you needed to make a website was a Geocities account and some basic knowledge of HTML. Maybe you'd throw in a bit of CSS (Cascading Style Sheets) if you wanted to get fancy. Times have changed, though, and now people build websites using at least one advanced coding language. Programming is a noble pursuit, but if you want to build apps and services for the Web, you need to learn one of these popular languages.
Unfortunately there's no lingua franca when it comes to coding, so beginners can find it difficult to choose their first language. Here's what you need to know to select a coding language that's right for you and take your first steps in writing code.
Choosing a Language
The first step in learning to code is selecting a language to code in. You'll find a number of languages with very different pros and cons, but the first decision you need to make is whether to learn front-end or back-end coding.
Front-end coding relates to the appearance of your website. If you're just looking to add some pizzazz to your site or your blog, a front-end coding language is probably the better choice for you. Front-end coding concentrates on extending the basics established with HTML and CSS so that you can customize your site even more.
Back-end coding focuses on the work that happens behind the scenes. Back-end languages govern server-side tasks such as setting up and manipulating databases that feed into the Web so that users can, say, log in to your website or read forum posts. If you want to build a Web app or create the next big social networking site, you'll need to learn some back-end coding.
If you're interested in back-end Web development, I suggest taking a crack at the Ruby programming language. Ruby is a relatively intuitive language in terms of syntax, and it has a lot of powerful built-in tools for Web development. Many of today's most popular sites (including Twitter) were coded in Ruby.
Some readers might disagree with my suggestions (in fact, I'm sure at least a few will have something to say down in the comments), and that's fine; there are good reasons for selecting other languages, so take a crack at learning Django or Python if you so desire. In the end, I wouldn't stress out too much about picking the perfect language on the first try. Most coders and programmers learn multiple languages during their careers, and your first few lessons in coding will be more about grasping the internal logic of coding than understanding the minutiae of the language itself.
Where to Start
Once you've gotten your feet wet, you'll need to start doing some of that heavy lifting I talked about earlier, which means you'll need some sort of test server to evaluate your coding skills. Setting up a test server on your own could be the topic of several articles; thankfully, most hosting services have automated systems that make setting up a test server simple.
This part might not be free if you don't already have access to a Web server owned by a family member or friend. If you don't already have server access with a Web hosting service, check out our guide to finding the right Web host, and get yourself a personal server. Once you have server access, poke around in your Web host's control panel to see if it offers a tool that will let you set up a separate folder to test your coding projects.
You'll also need an FTP (file transfer protocol) program to upload your programming projects. I suggest the free Cyberduck for Mac OS X and Windows. Linux users can try FileZilla, which is also available for Mac and Windows.
If you're getting serious about your coding, you'll probably want a specialized editor for writing code. Mac users have a lot of great options here, including Coda and TextMate, both of which have a pretty hefty price tag. Windows users can try the free Notepad ++, and Linux loyalists can check out the cross-platform Bluefish.
Learning new skills is always a challenge, but all of these resources will make getting started with coding a little easier. Good luck!