Hi! Welcome to LearnHowToProgram.com. This site is a step-by-step guide to take you from zero experience to web programmer in a few short months. Learn How to Program contains both lessons and practice exercises. This content is the curriculum for Epicodus, a school for people who want to change careers and learn how to code. You are also welcome to go through the site on your own.

Before we get started, let's discuss our general philosophy at Epicodus. If you talk to an experienced developer, they'll likely agree that the more you learn about programming, the more you realize just how little you know. It's like pointing a telescope out at the universe. There are more and more stars and galaxies and solar systems the further you go. The same is true with coding.

Being a developer is not about learning a fixed set of skills that you can apply for the rest of your career. A tool you learn today may be replaced by a tool you learn a few years from now. Even if it's not replaced, it will likely be updated and modified, perhaps to the point where it no longer looks like the tool you use today.

That understanding fundamentally shapes how we structure Epicodus. We believe that the languages, tools, and approaches you'll learn here are much less important than the general skills of solving problems. Successful programmers embrace the limitations of their knowledge and get good at figuring out what they don't know. They develop a mindset in which not knowing the answer isn't a source of anxiety, but rather an opportunity to learn and explore.

Now let's explore how this site works. Each course here lines up with the different courses Epicodus offers. Our "Introduction To Programming" course is designed to take you from zero experience to being able to create the content of basic web pages, style those pages so that they look nice, and add basic interactivity. This course also covers how to use the common tools of the programming trade including the command line and source control.

Once you've completed the first section, you will be ready to dive into a programming language. Currently, we offer two tracks: C#/.NET and Ruby/Rails. Both of these tracks include an Intermediate JavaScript course and a course on React.

Regardless of whether you choose the C#/.NET track or the Ruby/Rails track, you will first take two classes on JavaScript, including Introduction to Programming. JavaScript is the only programming language that web browsers understand. HTML and CSS are markup and styling languages, respectively, not programming languages - so even though browsers understand them, they are a little different.

If we want to work with ye olde interwebs (the internet), and we most certainly do if we are interested in web development, then we need to know at least some JavaScript. If you're more interested in front-end work, JavaScript will let you build out interactivity in your web pages. If you're more interested in back-end work (such as working with databases), JavaScript will let you wire up user interfaces to work with servers and databases. JavaScript can even be used for back-end code, too.

After JavaScript, both C#/.NET and Ruby/Rails are good choices. We recommend doing a little research on your own in order to make a final decision about which option you'd like to learn. Don't get too hung up on picking the "right" language and framework, though. Odds are, at your first job, you'll need to learn an entirely new set of skills and practices and maybe even a new programming language. That's part of why we require all students to study at least two languages - with two under your belt, it's not too difficult to pick up a third.

No matter what languages and framework you learn, our best advice is not to think of Epicodus as a place to learn a specific language. Instead, think of Epicodus as a place to learn how to learn.

Okay, let's get going!