This post was originally published on July 17, 2020 on my blog.
Happy Friday to all who celebrate it! Despite it being a very short week, I feel like I've gotten a good number of things accomplished, which feels nice.
Something I'm thinking about for the moment is how important it is to give yourself ample time to learn something.
More specifically, I'm looking back to when I first started teaching myself how to code and imagining that I'd be ready for professional-level stuff at the end of a couple of months.
I'm sure that, in some cases, it does actually work out like that and then people just end up learning a ton on the job, etc - but as I've been learning/teaching myself for the past 7.5 months now (!!), I'm realizing having that much time has been instrumental in truly dialing in the fundamentals and making sense of so much that I've been learning since the beginning.
Let's take React (a JavaScript framework), for example. When I first started dabbling in learning JavaScript, I also had a crash course on learning React at the same time.
It was all fine and good as I was learning, but once I started to do projects on my own, I realized I really didn't know anything at all.
As I'm slowly but surely getting further and further along with learning the true ins and outs of JavaScript, I'm discovering that so much of what I thought was the React framework is actually just native to the JavaScript language itself.
I recently responded to a post on Twitter where someone mentioned that they'd been learning JavaScript for the past 3 weeks and it just wasn't sticking, and they asked if they should stick with it.
Well, I'm here to say - 1000% yes because I've been with it for seven and a half months and some things are just now starting to stick that I wouldn't have even been capable of understanding at just a few weeks in.
Thanks so much for reading along! Now let's be friends over on Twitter >>
P.S. Did you know I have a podcast with new episodes each Wednesday? Go listen right over here >>
Top comments (21)
I guess it is different for everyone. Since march I've spent at least a few hours most days working thru codecademy and other online tutorials and I haven't learned a single thing, literally. I can't even do beginner tutorials anywhere else because I have no idea what to do. I would have given up 20 times by now because I HATE non sense gibberish and trying to make sense of it.
The bad news is I have to learn JavaScript to learn react/vue/angle/whatever these things are people use now because every single job wants someone to do that now.
Also, I started my career not ever touching, or even knowing React/Vue/Angular existed. I studied C#/.NET in an online bootcamp and started as a JR Dev at a consultant company. Not sure about every job, there are plenty of Dev jobs out there that don't even touch front end development. Or just do basic HTML/CSS and a little bit of JavaScript with Wordpress. Or even backend Database development.
Sure these JS frameworks are popular. But thinking that it's required to get a dev job puts you in the mindframe to panic and learn something just because it's valuable to others, and not necessarily valuable to you. Find a language that's interesting to you and learn it. Especially if you are struggling with programming concepts, find a language that you like the syntax of, that you find the documentation to be easy to read through (Python has great documentation.) And just learn.
I’ve been searching for a design or dev job for over a year, everyone has said because i don’t know all these weird languages and even the project managers use javascript. I really like html and css but now everyone uses javascript to write html and css...it is so confusing. I don’t like programming at all...but that is how life is. I might be more interested in it if i understood how it’s actually used but all the explainations are over my head. Someone else suggested learning python before javascript..i can’t figure out what python does. Objects?
Yeah, there is a lot to learn. And every job will have different requirements.
Yes, Angular, Vue, React are very popular requirements. But I think you should start at JavaScript. I was wrong to assume and push Typescript on you. So please forgive me for adding to your confusion.
The coding train is geared towards younger students, but it's a great tool to get into JavaScript. And you don't have to download anything. I highly recommend just grinding with that and see what you think, then just start experimenting. Find something you would enjoy doing. Like creating a site, or making a program that calculates something useful for you. Start small, and just get messy with the code.
I would be more than happy to help you think through the blocks you run into. I am sure most people would. But for the sake of your own sanity, take a step back from learning programming just to meet a job requirement and get some foundational concepts down and a bit of experience in one language before branching out.
Truth me told, the easiest way to describe Angular/Vue/React and the technologies that "replace" HTML, CSS. They DON'T replace CSS or HTML they compile down to HTML/CSS. That means that you aren't wasting your time learning HTML, CSS, JavaScript before learning these other technologies. Most companies, if they see that you worked hard to get down the basics, will invest in you to get into those technologies.
Thank you for breaking down and explaining the technologies...it's is helpful to see how they work together. Thank you for the coding train link as well, I'll give this a try. I worry a lot whenever i see computer programming and math terms... maybe that's why nothing make sense to me.
Originally I was excited about javaScript because it seems to be so popular for UX and UI designers for adding interactivity to the web....visual behaviors and enhancements. So far everything has to do with data and weird math equations...stuff I never liked or learned how to do. Maybe JavaScript isn't for me. I'll try out the videos and maybe something will help.
Or you could use Typescript which is an easier entry point, and you can use it with Angular/React/Vue, because it complies down to JS.
Typescript is an easier entry point??? What?!
I'm sorry but I have to strongly disagree. Sure, type-checking can help catch some common bugs that trip up beginners; but you have to bear in mind all the additional complexity Typescript introduces:
Anyone interested in learning plain JavaScript can get started with minimal effort. Hit F12 in your browser and you can try out JS in the console with literally zero set-up. Make a mistake and you'll see the results of that mistake (be that
1 + "1" = "11"
or a console error) instead of having to understand a type-checking error.But TBH for those really struggling to gain an understanding of programming basics I'd suggest something like Scratch (scratch.mit.edu); since that avoids one very common source of frustration for beginners: the fact that a simple typo or misplaced character can cause your code to break...
Haha true. But I found having type checking to be extremely helpful. And you can easily look up how to set it up. Most, if not all, text editors support it. (Or you can download a package to support it, VS Code detects it and says "want to download the package for TS?"Then you just click yes.
Types and type definitions in my option is easier point of entry to understand than car, let, and const.
I agree on the inferred types.
I agree on the compilation, but again.. with text editors you can set this up easily with a guide.
And yes, no results can mean a headache but on the flip side.. seeing results and not looking for errors begginers can think they didn't something correct when they did not at all.
Truth is, I feel like Typescript is an easier entry point because I learned C# first. I mentioned that in a nother comment and should of explained that in my comment you replied to.
I do recommend if you have little to no experience to try out an easier programming language, especially if nothing in JS is sticking.
Thank you for the advice Ben. What do i practice in the browser? I don’t remeber any code or how to write things. How did you get the code for the math? Is there insturctuons for this kind of practice?
Maybe i will try scratch. I keep reading all the terms and syntax and whatever but i can’t make any sense out of it
I think you tagged the wrong Ben.
Do i have to know how to use Javascript to use typescript or compile? I haven’t learned angular/react/vue yet becuase everyone says i need java for that.
No, although you will see some parallels.
Typescript is a subset to JavaScript. Should you ignore learning JavaScript and only use Typescript? No... Not at all. But I would recommend Typescript because it has an easier learning curve.
Think of Typescript like a chainsaw with a safety guard on it, and a bunch of features that make it hard, but not impossible, to hurt yourself.
And then JavaScript is without those safety guards and allows you to do things you couldn't do with Typescript.
Some may think, why ever use JavaScript when it's easier to get hurt, especially since Typescript serves the same end goal?
JavaScript is more flexible, although there are some really funky stuff to learn with JavaScript and the fact that you can confuse yourself into a corner dealing with it's quirks, it's still an important language to learn well.
Ultimately, once you get comfortable with programming concepts with Typescript, and enjoy the benefits of a strict types language, you can start looking at the complied code and see the vanilla JS and start learning more and more.
You don't need JAVA for Angular/react or Vue. Although learning JAVA wouldn't hurt I guess?
I'm curious why they are telling you that you NEED JAVA. Maybe you confused JavaScript with JAVA?
I’m not sure. I don’t know what anglar/react/whatever actually do. Everyone says i need to learn javascript becuae i can’t use html
And css anymore, everything is jacascript. This is just advice i’m getting from here, course discussion boards. I dunno, i’m clueless to how anyone uses it
Whoever told you that you can't use HTML and CSS is wrong.
HTML CSS and JavaScript are what make up a website.
Think of HTML as the Bones of the site. CSS is where you add the style to your website. (So fonts, colors, font size, etc.) Think of CSS as the skin of the site. And JavaScript gives you the functionality to the site.
Also I would recommend this YouTube playlist that utilizes P5.js it's an online editor where you could just code along with JavaScript.
youtube.com/playlist?list=PLRqwX-V...
The coding train does an excellent playlist teaching you different concepts while seeing results and it's fun.
I’ll try the youtube playlist out, thank you. I’ve used HTML and CSS professionally for almost 20 years so it’s good to know it’s not dead
Not dead at all.. yes, most places will have you use SASS or LESS or something that generates HTML but learning those technologies is just building on your understanding of the basics of HTML and CSS there is some added features and syntax changes, but 20 years of experience in HTML/CSS is a benefit to you.
I am often amazed by the amount of things that made no sense whatsoever when I was first introduced to them and a few days, weeks or even months later something finally clicked and I understood why it was all about.
Learning to code, like learning anything in life, really, is a continuous journey that only ends when you decide to stop learning.
I remember when I first started learning Angular. I was so lost, and as a Jr I just used others code as reference to see what "worked". Now I am back in Angular after 3 years of not touching it and things have clicked from my experience with JS, and React. It's funny, it's only when I start explaining something to a SR that I surprise myself with the knowledge I've obtained.
Great post and encouragement. I've been a programmer since 2016, and have worked professionally the past three years. I can say, the more I learn, the more I realize I have only scratched the surface. That being said, learning how to problem solve like a programmer makes it easier to see JavaScript and other languages as a tool set, one that allows you to read the manual when you forget what a tool does. I still wouldn't call myself proficient in any one language, but I have gotten more confident in programming, and I can pick up a new programming language well enough to work through it with some assistance from a senior dev.
Love your perspective and attitude!
Good post; and absolutely: no-one should be giving up after three weeks!
As a beginner it's really important to bear in mind that different people learn at different rates and respond better to different styles of teaching/learning. For some people things can just click; whilst for others they have to work over a concept a few times before it really sinks in. Some people like to have everything explained and to have properly understood before starting; whilst others want to get stuck in and figure things out as they go...
For anyone who is struggling it's important not to be discouraged. Do consider whether your source of learning is the best style for your needs. Try a few different approaches until you find one that works well for you.
Another really important point is that the fundamental principles of programming are fairly standard; so even if your end goal is to be working in TypeScript with Angular/React you can learn some basic principles from other languages that might be more fun to start with or give a more immediate response. For example there are 'drag and drop' languages like Scratch (scratch.mit.edu) where you can learn some of the basic logic patterns that are applied in all languages. I personally made good progress (many years ago) with Processing (processing.org) because the visual output was something that interested me. That's Java-based; but I'm now a senior developer working mostly with JS/Typescript.
Finally, don't just learn to use a framework or library. These are always changing; but if you have a good grasp of programming fundamentals you should find it easy enough to switch when the next Big Framework comes along... (But if you want a head start try Svelte - the most beginner-friendly framework I have ever worked with: svelte.dev/tutorial/basics)