When learning to code, it can be intimidating trying to figure out where to even start. It can feel a lot like trying to write a 200-page novel without knowing how to read or write. How can you even begin People say that getting experience with coding is what really lets you learn. But if you need experience to learn to code, how can you get that if you don’t know how to code in the first place? It can seem like a Catch-22.

Maybe you’ve thought about getting started, but felt too overwhelmed to even try.


Here’s the simple guide to everything you need to know before you write your first line of code.

Step #1: Installing the Programs

Believe it or not, just installing the programs to run your first program can be quite a challenging undertaking. Rather than installing the programs on your computer— which, depending on whether you’re on a Windows or Mac, and the version of the operating system you’re using, will likely be a bunch of error prone steps— let’s use a fully-fledged web development environment that is accessible inside a web browser. This is the real thing, and will let you build your own web applications. It’s not an interactive tutorial— it’s a fully powerful coding environment.

See how to do that here:

Setting up a Cloud9 Development Environment

Step #2: Deconstruct the Skill

So you want to be a web developer. When you’re trying to pick up any new skill, the first step is to deconstruct the skill and actually know what the sub-skills are that you’ll want to pick up. By knowing the pieces that you’ll need, you can learn some of the skills on their own and then combine them together.

Here are the big skills (there are many more, but these will get you far).


HTML or Hypertext Markup Language is what powers all of the websites and web applications you use every day. Basically, it’s the stuff that web browsers know how to show the user. Right now, if you right-click this page and click “View Page Source,” you’ll see a mess of a whole bunch of code that represents this page. If it looks confusing or overwhelming to you now, don’t sweat it.

Learning HTML is fairly straightforward and shouldn’t be too hard for you.


CSS is what makes pages look the way they do. HTML is the content or the “stuff” that’s on the page. CSS is the ruleset that describes how the page should look. For example, making the headlines blue is something that can be done with CSS.

Just like HTML, CSS is pretty easy to pick up. Learning CSS probably makes sense to do in parallel with HTML.

A Programming Language

If you want to be a web developer, you’re going to need to learn a programming language. Programming languages are instruction sequences that computers can understand. While they may seem scary at first, skill with programming languages is a cornerstone of web development.

Unfortunately, at this juncture you’re going to have to pick a language to learn. A couple things to keep in mind:

First, know that this isn’t a huge commitment. You can learn one programming language today, and a different one later. Various programming languages often have a lot of things in common. Picking up your first coding language is a bit tricky. Learning your second one is generally easier.

So don’t let analysis paralysis set in. Make a decision, give it a shot, and try to learn one. We generally suggest people start by learning Ruby, but the detail is far less important than making the decision and pulling the trigger.

Your practical options here are: Ruby, Python, JavaScript, Java, C/C++. If you choose any of these, you’ll be able to pick the others up fairly quickly.

So why do you need to learn a programming language? Basically, the HTML web pages you’ll want to build are not written from scratch, but instead are generated by code. Web developers will write programs that build HTML pages, which will support features like user login and image uploading, which are more complicated than just a plain old HTML page.

A Web Framework

There are some problems that developers have faced time and time again. If you’re looking to become a web developer, it doesn’t make sense to keep reinventing the wheel. Instead, you can step on the backs of giants and make awesome apps! Web frameworks basically make it so you can build out applications fast!

On top of that, people who build out web frameworks have spent a long time thinking about security. If you use a web framework, your site will generally be secure against common types of attacks even without your awareness of them.

Is your app protected against CSRF attacks? SQL injection? If you use a web framework, you don’t even need to know what those are and you should be safe from hackers’ harm.

So what frameworks are out there? Well, it depends which programming language you choose. If you chose Ruby, the most common framework is “Ruby on Rails.” If you’re looking for a job as a web developer, most Ruby jobs use Rails. Sintra is another common framework, but there are dozens of other lesser used ones.

If you’re using JavaScript, the ExpressJS web framework is the big powerhouse that most people use. If you’re in Java, the Play! framework is common. In Python, there is Django, Pylons, and many more.

We generally suggest learning Rails first.

Step #3: Learn the Skills You Need

Now that you have a coding environment set up and you know what you need to do, get learning!

There are many cheap or free resources you can use to learn the basics of all the different technologies. Here’s a list of various resources we recommend to people who are starting out. We cover HTML, CSS, and a programming language (Ruby) in our free Software Engineer Intro Course, so we always suggest people start with that, but here are even more resources that you can use.


HTML Dog – A series of written tutorials that teach HTML, CSS and even go into some basic JavaScript coding.

W3Schools – A free HTML course. Be warned: the HTML certification they’re selling is generally considered pretty meaningless. Employers won’t care if you’re “certified by W3Schools.”


Codecademy – This in-browser, interactive tutorial will give you a bit of Ruby programming experience in a safe environment.

Chris Pine’s Learn to Program – This free online book is a great intro to the programming language of Ruby. It starts off pretty easy, but towards the end gets very complex.

Learn Ruby the Hard Way – This free online tutorial is a great way to get an intro into the Ruby programming language. It moves a bit faster pace at the beginning than Chris Pine’s book, but it maintains that level throughout the tutorial.

If you go through Learn Ruby the Hard Way, we highly suggest you go through the “Study Drills” towards the end of the lessons.

RubyMonk – This is an online interactive tutorial on the Ruby language. It’s a bit challenging if it’s your first taste of Ruby, but if you already have a bit of experience, it can help you out.

Codewars – This site has a series of Ruby challenges. It’s not a great resource if you’re brand new to coding, but if you have a little experience, it’s a great way to level up your coding chops by completing different “katas” – or basically coding problems – on their site.


Michael Hartl’s Ruby on Rails Tutorial – This is the industry standard— it’s the most popular free Rails tutorial out there. It has testimonials from DHH, the creator of the Rails framework, and is a great taste of how to build a simple web application.

TeamTreehouse – A ton of video lessons on all the various technologies, including Rails. Again, it’s not free, but at $25/month, it’s a super affordable way to get deeper skills.

If you run into problems, generally your best bet will be to run Google searches with the details of the error messages you’re seeing. Someone has likely asked a similar question on the developer technical Q&A site called StackOverflow.

The one thing you’ll notice about the cheap and free resources out there is the difference between width and depth. While there are many places that will teach you the basics and the essentials, there are far fewer resources that go deep and get you job ready, or prepared to actually build something without the guidance of a tutorial.

Spending some time learning things through cheap and free resources before diving into a coding bootcamp or intensive program can give you an advantage and will allow you to spend your time going into more “next-level” topics. (And it’s why most coding bootcamps have prep work for their courses.)

Step #4: Join the Programming Community

The Ruby programming language has plenty of “Ruby user groups,” or groups of Ruby programmers who like to hang out and talk tech. Each city will be a little different, but here in Boston the BostonRB group is a wonderful and welcoming community. Your community will likely have a similar meetup.

We know that right now it might be a little uncomfortable to put yourself out there in the community, but it’s never too early to get involved and people will typically be incredibly welcoming. You might be totally confused by some of the presentations, but it’s worth the experience. Remember: doing things that are uncomfortable is often more productive than doing what feels comfortable!

Now take action!

You have everything you need to start taking action and actually write code and learn to program! Dedicate a few hours each week to begin to hone the craft! You’ll be amazed by how much you can learn (and how fun programming is!). Writing your first lines of code are the first steps to coding success!

Coding Success

AuthorKen Mazaika

Ken Mazaika is the CTO and co-founder at Firehose. Previously, he was a tech lead at WHERE.com (acquired by PayPal) and a member of the PayPal/eBay development team in Boston.

2 replies on “Everything You Need to Know Before You Write Your First Line of Code

  1. Hello,

    I enjoyed your explanation of coding very much is very clear to understand. I would like to make a change of career into coding, but my age of almost 55 would I have a real shot at a change of career, I would feel a little bit like Robert De Nero in the intern. Thanks for explaining Coding.


    Jaime Sousse

Leave a Reply

Your email address will not be published. Required fields are marked *