About a year or so ago I released an article about coding, namely how it has become pop culture over the years and then just a few weeks ago another honest write-up about React and how learning it or any JavaScript library or framework for that matter, should not be taken too lightly. Between then and now and a few other articles that all tended to blast ice on software development trends, I realised that being the funny “John Oliver” of the software industry while fun(ny) and therapeutic for both myself — the author — and you — the readers, it doesn’t exactly solve much, so this time I am going to attempt to still keep the humour but amp the helpfulness a couple notches.
Now, before I become all helpful and empathetic, let me make something very very clear. I am by no means a rockstar coder, or the next Chuck Norris of software development. The only time I resemble a rockstar is in the mornings with the shower-head in my hand singing along to Robbie Williams’ I just wanna feel real love, while Chuck Norris… well, let’s just say there’s virtually nothing that I could do that he would be proud of.
I can barely keep myself on a treadmill…
I’ve written my fair share of bugs… (ehm)… I mean software, and felt like banging my head against the wall occasionally on a daily basis. On that note:
Dear parents, do not drop your children on their heads. Raise them to be software engineers and they’ll bang their heads against solid objects voluntarily.
The way I see it, and this is purely based on first and second-hand experience, learning software development has a few basic rules. Similar to dating, you need to be in the right mindset, you must give it your best shot, but always keep an eye open for something better out there (not saying there is, but there might be), while never forgetting that safety comes first! Having said that, you must always show respect and dedication to the one you’re currently dating, and threesomes are generally discouraged — trust me, I know where I’m going with this! 😂
That’s more or less what my father taught me during the ten excruciatingly long and embarrassing minutes of relationship advice he ever gave me, and believe it or not, it applies perfectly to learning code and software development in general! And yes, it applies to hipsters, lumbersexuals (bearded, looks like a lumberjack, hard on the outside, soft on the inside) and millennials as well.
Now, before I share the actual resources that I found to be both honest and valuable to you learning path, I think it’s worth mentioning a few tips. I should also mention that this article comes to be thanks to a request for help by Thabo Pali. Thanks, mate; hope you’ll find this useful.
So, tips. Bear with me, I’ll try to be brief. If you’ve got itchy fingers I suggest you purchase some E45 cream 😜 or, alternatively, scroll to the penultimate section of this article and see if that helps.
Disclaimer: if you genuinely have itchy fingers, scrolling won’t help. See a doctor.
I get it. You want to learn a lot in the space of as little time as possible, and everyone out there seems to want to tap into the unrealistic expectation that one can learn a lot in next to no time. That’s a lie and it will only set you up for failure, and not the good kind. Learn as much as you can, and take as much time as you need. The moment you feel your brain stops “getting it”, you need to distract yourself and do something else. Funnily enough, that doesn’t necessarily mean, you need to stop learning. You can try learning something that has nothing to do with what you were studying previously, and activate other neural networks in your brain. Picking up those guitar lessons where you left them off five years ago, might be just the thing you need!
Speaking of failure, one must understand that failure in programming can be intricate path to success. While calling programming computer science is maybe a bit pretentious, for argument’s sake humour me and think of it as science and remind yourself of all the scientists who have solved major hurdles throughout history. Sometimes there is a “quick win”, but often it comes down to trial and error, see what works and see what doesn’t. So your code fails to compile or WebPack is throwing yet another error? It’s fine. You’ll debug it, you’ll fix it, someone else might help you, and voila — you’ve learnt something. If I’d be hiring someone for a software development job, I would spend half the time talking about errors they’ve encountered and mistakes they’ve made in the past. I wouldn’t trust an engineer who never had to fix their mistakes.
Nothing creates more passion and dedication than having a goal or a vision. Why are you even reading this article? Why is it that you’re interested in honest, well developed learning materials? If you cannot answer that, maybe you shouldn’t even bother getting into it all. I always wanted to build, create. Something out of thin air. It’s the God complex within me that I fulfil every day by writing code. What’s your goal?
The internet is a great place. In fact, thanks to the internet I can fulfil my passion, I was able to learn on my own, overcome the financial barriers of higher education, but the internet is also an extremely crowded space of freely available information. Because there is so much of it freely available, it’s also poorly curated which will lead you to stumble upon various personal views on software development all the time. Language, library and framework evangelists are popping out of the woodworks like mushrooms after a rain. Today it’s React, tomorrow it’s Riot and the day after tomorrow they’re maybe back to Vue and Laravel and it goes on and on. It’s mostly noise. I am not saying ignore it all completely. Sure, take note of what’s happening around you, but there’s a time for learning, and there’s a time for discovery and dabbling, and they tend not to coincide.
So, this is it. This is where I provide you with a few resources that I have tried, enjoyed and learned a lot from. I am absolutely certain there’s more out there, and you’re welcome to comment with a link, and I’ll add them as recommendations from you.
Before you dive into any of the below courses, I would like to recommend you to take a step back and understand what you’re actually trying to attempt: build web applications — in this particular case with JavaScript. Not sure how to put this in any other way than “Learn the f%$*ing language!” first.
Be that React, Angular, PWA, build tools, Node or whatever else, at the end of the day you are writing JavaScript and that’s what you should really learn, but it turns out that JavaScript just like the Tardis, it’s “bigger on the inside” and there’s heck of a lot more to it than variables and if statements. So much more that I started putting together a Medium Series called The Hitchhiker’s Guide to Modern Javascript because the best way to learn is by doing and sharing.
Disclaimer: most of the links below will take you to premium Udemy courses. I do not get anything out of you clicking or potentially purchasing them. This is not a promotion or marketing piece, I do NOT get paid to recommend these courses, and I only recommend those I’ve taken myself and found genuinely useful and good value for money.
On that note, here’s two very good JavaScript courses, both meant to get you started and up there with the best of the best:
While I am a huge Udemy fan, this course is actually not offered by the platform as it’s a privately owned set of learning materials. React For Beginners is by far the best online course I have ever taken. It simply gets the message through in such an efficient way that by the end of it you’ll actually feel confident enough to build your own React app, and that, after less than a week of learning. It won’t make you a react guru or expert, but it gets you very far, and certainly far enough to not have an impostor syndrome after putting React on your CV.
Feminists will love the fact that this course was done by a lady, but feminism or not aside, she really does a good job at explaining React Testing with Jest and Enzyme. It’s also modular, you can learn sections that you need when you need. There’s also other bits you’ll pick up like writing in-the-code documentation and a neat trick to your tests using the data-test
attribute, enforcing the philosophy of testing the behaviour rather than the implementation.
I took this course because I had a grunt / gulp background and I found myself having to poke around WebPack without having too much of a clue what its potential was and how to properly use it. Turns out, it’s an amazing tool and knowing how to use it, is a skill most definitely worth picking up. Build automation has never looked sexier and the course does justice to it.
Max — the instructor — is by far my favourite. I’ve part done an Ionic course from him in the past, but it’s only when I plowed myself through this massive Progressive Web App course that I understood the true genius of his teaching methods. PWAs are amazing, but in many ways they bring stuff to the web development world that simply wasn’t there at all before, and therefore it’s hard to compare or build on previous iterations of knowing something. This course is enlightening to say the least, and also incredibly empowering and inspiring. It takes a real teacher to make you believe in something you learn, and this course does that. PWAs are definitely the future!
My father needed ten, I only need a couple minutes with you to talk about relationships. Yup, we’re back to that uncomfortable bit about threesomes, using protection and how it all relates to software development. Because it really does.
When picking up something new you’re ready to learn, you must give it your best shot. It might work out, it might not, but do put in the effort while not being completely oblivious to what else is out there. Say you’re great at Angular, which is fantastic because you’ve put a lot of effort into it, but honest to God, sometimes it’s just not the right tool for the job, so it’s good to know what else is out there so that you can pick up the appropriate skillset for the right task.
While you’re in awe of one library and another framework, do keep in mind that eventually that code goes live, to production and testing is important to keep your app running safely and keeping your users safe while using your application. Brittle tests, shoddy security measures, poor file versioning can all land you into a hell you’ll find very difficult to climb out of.
If you’re working with an opinionated framework or library, try and respect its boundaries and rules. Yes, there’s an Angular way of doing things, and it’s there for a reason, and yes you must use a stateless React component if you’ve no state in it, because it’s better for your app and fellow developers. Show respect to the tool you are working with, and stop bastardising it into something else.
Finally… threesomes. Not everything works with everything else. Sure, a lot of things work with a lot of other things. NgReact is an example of something that technically can be done and works, but most often shouldn’t. We have technology stacks and they’re there for a reason.
Attila Vago — writer of codes, blogs and things that live on the web. Programming polyglot, pragmatic doer, member of the “taking care of business” crowd, with a no nonsense attitude. An easily inspired inspirational individual with a strong predilection towards most things nerdy, good, carnivorous food, and Lego. Uses a Mac. Exercises at 6 a.m.
HackerNoon and Quora author.