I see this question come up frequently enough with my students, so I decided to give my 2 cents on it. And let me start off by saying that the question is flawed from the very beginning and doesn't really lend itself to a yes or no answer. There is no such thing as learning to code. It's simply too generic and subjectivity will come into play in all this. You can learn HTML and CSS, but those are not programming languages. HTML is a markup language and CSS is a style guide for the most part. You can learn JavaScript, at least the syntax of it, but can you do something with it? Learning to loop through numbers 1 - 10 in a for loop is a good start, I'll say that, but it isn't applicable to anything in life. Similar to how counting to 10 has no real purpose. But counting the amount of money you are spending monthly has much more value. And learning to invest wisely per month is even higher on that list.

So let's use some code in order to paint a better picture of what I mean.

function learnToCode(user)
{
// learning to code goes here
// read things and follow some examples
}

This is what people think is happening when they attempt to teach themselves to code. And again, this is a good step 1. But, because it's somewhat vague and has no clear defined paths, most people will fall short and become lost pretty early on in their endeavor. Being an app developer for example, has little to do with HTML and CSS. Being a web developer on the other hand, pretty much begins with HTML and CSS. I always recommend starting off with the easiest approach until you build a strong technical confidence. But knowing the distinction is important.

I hear many people say they are learning to code so that they can build video games, but they begin with an HTML tutorial. Those things are not really mutually inclusive.

function learnToCode(user)
{
learnHTML();
learnCSS();
}

Split up the different disciplines into their own buckets. You aren't going to learn web development in one online lessons. But you can learn HTML, and you can learn CSS.

This gives some sense of order to your learning. If someone showed up and said 'fix my car' and that was it, you'd spend some time staring at the engine coming up with fanciful ideas that may or may not pan out, and eventually, you'll kind of sort of do some work or you might leave. But if someone comes to you and says 'change my oil', now you have a set plan on where to start and end.

Once you have a decent understanding of the concepts currently at hand, it is definitely good to test them out to verify. So put them to use. Many people fail to test themselves at this stage, and continue with book knowledge never knowing if they in fact do understand the concepts or if they are just telling themselves that they are.

function learnToCode(user)
{
learnHTML();
learnCSS();
BuildTestWebsite();
}

Whenever you learn anything you want to make sure that you secure your knowledge by testing it out. At this point, you aren't quite a 'coder' yet, which as I mentioned is just a generic marketing term. But you did build a website. And that's more meaningful. Now you are ready for some code. JavaScript is the language of choice for the web, so add that next on your timeline. But that also comes with the similar problem that we had earlier of being too generic. JavaScript is big. Like really big. You can perform complex 3d animations with it, process large data streams, play audio and video and much more thanks to the latest JavaScript API's.

Which is fine, because pretty much everything can be broken down into easy to digest parts.

function learnToCode(user)
{
learnHTML();
learnCSS();
BuildTestWebsite();
LearnJavaScript();
}

function learnJavaScript()
{
learnVariables();
learnIfElse();
learnLoops();
}

JavaScript has a few fundamental features that you need to get down in order to advance. You can't get into RESTful API implementations if you don't know what a variable is. And you can't really build anything without conditional and looping statements. Again, this isn't about "learning to code". This is about learning HTML, or learning CSS, or learning JavaScript. It's about learning different technologies and then working to make them play nice together.

And this roadmap is different for everyone. Other people learning web development won't necessarily follow in the same path that you did. Some might jump straight to server-side code, as I personally did myself and then get exposed to HTML and CSS as their work demands it. Different roadmap, but similar goals pretty much. Both learning web development, but just different facets of it at different times.

function learnToCode(user)
{
learnHTML();
learnCSS();
BuildTestWebsite();
LearnJavaScript();
TestJavaScript();
LearnServerSideLanguage();
LearnDatabaseManipulation();
LearnServers();
...
}

function learnJavaScript()
{
learnVariables();
learnIfElse()
learnLoops();
}

And the functions that we call life will continue forward as applies to you. So can you teach yourself to code? That's the big question that we started this whole thing off with. You can teach yourself anything that you are willing to work towards given that you have a clear set of goals that you can follow. Whether you call that 'code' or 'web development' or 'software engineering' is your own personal thing. But I personally wouldn't worry too much about labels as they can steer towards things that you really have no interest in. Learn something that you have interest in and enjoy and you can't go wrong after that.

Walter Guevara

Walter G. is a software engineer with over 10 years of professional experience. When he isn't blogging or being a CTO he enjoys coding randomly complex things that he hopes many people will get a chance to use one day.

Question or comment?

No comments posted yet

Add a comment

Send me your weekly newsletter filled with awesome ideas
Start
Score: 0
Use the following controls:
snake left
snake up
snake down
snake right