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’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.
Avoid Information Overload
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!
Failure is Achievement in Disguise
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.
Have a Goal, a Vision
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?
Avoid the Hype
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.
Itchy Fingers, Stop Here!
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.
The basics done well
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.
Library: By far the best React course
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.
Building: WebPack v4 in all its glory
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.
Cutting Edge: The most comprehensive PWA course out there
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!
Before You GoGo…
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.
And NOW you GoGo
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.