Life as a software engineer is one of continuous learning. Some people enjoy exploring new technologies and others complain about #jsfatigue. At the end of the day though, we’re all in this together.
I’ve gathered quite a few useful resources over the past couple of years. I used them to learn more about various topics that I thought would either help me become a better programmer or that I just wanted to dip into for a bit. They could be of interest to all coders out there, ranging from Computer Science to Physics, and that’s why I wrote up a few tips for you.
All of these e-learning sources are free and available to you at any time - enjoy! (And let me know in comments what your favourite ones are.)
Functional programming textbook
This one is a good classic for anyone who’d like to learn a bit more about functional programming without having to delve deep into mathematical definitions and weird terminology. Professor Frisby’s Mostly Adequate Guide to Functional Programming (that’s the official name) is a wonderful book for beginners and others who’d like to strengthen their knowledge of the topic. It’s fun, easily readable and has plenty of examples to support the theory.
Let’s get onto the practical side of things! A lot has been said and done and written about Redux. However the more it gets wide-spread, the more misconceptions and mis/abuses of this library you can see. That’s why it’s really worth watching these videos from Dan Abramov (maker of Redux) because he talks not only about how to do things properly in Redux but also why you should stick to these rules. Not mentioning he points out a lot of good practices in Getting Started with Redux that can save you a lot of headaches.
Learn ES6 by fixing unit tests
This one might be slightly passé as probably every single JS developer uses ES6 by now. But still ES6 has a lot of features and some - such as generators - aren’t that easy to comprehend at first. On ES6 Katas, you can learn all ES6 features by fixing unit tests. Not only you can improve your knowledge of the new version of JS but you can also enjoy making tests go green! Perfect combination.
JSON Schema is super useful when working on web data structures that should be universal and generic. The docs are unfortunately quite cryptic and that’s why Understanding JSON Schemais such a bliss as it’s readable and shows a lot of examples along the theory. Obviously it’s not something you would read before sleep but it’s a good reference in case you need to find out more about schemas or some of their parts and capabilities.
I think I should really start this section with my favourite online textbook out there. Having said that, I must also admit I didn’t finish it because the learning curve got pretty brutal half-way through. However, thanks to Neural Networks and Deep Learning, I learnt so much about principles of this technology that I couldn’t have hoped to achieve on my own. There are practical python examples and mathematical exercises included so you can always check that you understand what it’s on about. The tricky part is that you need to have a pretty good knowledge of high mathematics, mainly matrices and derivations (and gradients and all these things in n-dimensional spaces). Still I highly recommend at least reading through the first two chapters that are quite accessible even for us who never finished uni studies ;)
Rich Hickey is the person behind Clojure and Datomic so as you can expect, he’s a pretty smart guy. He’s also a great presenter that makes some very complex ideas easily understandable for us common folks. I included two of my favourite presentations he did at QCon. Simple Made Easy is a talk that considers programming from a very general point of view. It works with the idea that we want to create very simple (even if complex) applications but that’s usually a difficult task. In Database as a Value, Rich shares some underlying principles of Datomic. Even if you don’t know much about Clojure or Datomic, it’s simple to understand the key ideas and start thinking about data in a more universal way.
AI course on edx
This was the first course I took on artificial intelligence, and although it wasn’t guided by a tutor, the videos and exercises are well sufficient to learn the principles. Apart from the fact that you can listen to talks on something incredibly cool from professors from Berkley for free, it’s fun and interactive, and it really feels rewarding at the end of the course if you stick with it. I’ve seen similar courses available online on the MIT website and the likes but they never made it to such high standards in terms of online accessibility.
It might be worth noting - because I didn't know when I started this course - that AI isn't really about making sci-fi like fantastic creatures as the authors of books and scripts would have us believe. It's about finding clever algorithms that somehow help computers understand our world and make intelligent decisions. As much fun as reading Assimov, if you ask me.
Algorithms and data structures
Four semesters of CS in 6 hours might be a slight exaggeration - you can certainly learn a lot in a relatively short amount of time because you won’t see much theory here. Instead, the concepts are briefly explained and then you do exercises which are based on fixing unit tests to check that your algorithms or data structures work as expected. Solutions are also available so if you get lost, you can always get back on the track easily. Great intro into computer science if you never managed to study that at uni or have forgotten everything since :)
I must admit I haven’t read this book but it is usually referred to as the “Bible” of learning algorithms. Plus it’s free and online so it’d be a sin not to include it on this list. It’s definitely very high on my list of books to read when I have some time… But you know how that goes!
Most of you have probably heard of Khan Academy or have even used it already but I can’t imagine not including it on this list nevertheless. You can learn pretty much anything there - online, for free, with exercises and videos and gamification, from biology to computer science. I used it to refresh my knowledge of derivations and integrals and I love their explanations of mathematical proofs. The videos (together with comments under them) are amazing especially when you’re trying to understand the underlying principles.
No Nonsense Guide to Special Relativity is another one of those great online textbooks that don’t rely on the dry theory as much as on examples and explanations made for normal (?) humans. If you always found this part of physics fascinating but couldn’t quite understand “what the hell is going on there”, try to check out this link. It’s not a version “for dummies” but it’s still very accessible.
Bonus: How we learn to code
This final entry isn’t really an e-learning resource but I found it so impressive I wanted to share it with you. Kathy Sierra did a talk called Making Badass Developer about how we actually learn to code. She mentions that we shouldn’t be too hard on ourselves - we all have only certain amount of cognitive energy for each day and it’s okay to take it easy. She shares a few useful tips on how to learn faster and more effectively and it sped up my learning process by a lot. Thinking about it, maybe this is actually much more important resource than any textbook or tutorial out there that would teach you a specific piece of know-how. What you gain from this talk is applicable to everything else I’ve posted in this blog.
At Red Badger, we have a generous training budget to learn even more, with experts in the industry, anywhere around the world. We are also actively supporting the OSS community by contributing to repos, running React meet-ups in London, and organising a conference in March 2017. Oohh and have I mentioned our amazing altruistic project Haller for African farmers? If you want to know more and maybe even work for us, drop us a line!