Fundamentals really are that important. As I'm doing my master's thesis, I realize that most of my work is based on rather foundational work done around the 90s which is then enriched with recent advances in the field.
While recent papers seem overwhelming at first, learning and really understanding the fundamentals takes away at least half of the cognitive work necessary to understand the papers. And if you think about it, that shouldn't be surprising at all: A lot of research consists of about 50% foundations, 40% other researchers' work and 10% own contribution.
While your article covers a lot of the important lessons I learned at University (in a great and concise way!), I needed to learn another lesson myself: Be brave! Learning something new can seem like a daunting task, so it's important not to let it discourage and paralyze you. For some people calculus can be such a difficult subject. Others fear statistics or databases. But fear is your enemy, not the subject!
Thank you for the great comment @gadse
! I think you're right, fear is the great enemy of learning. Especially with math, the jargon and symbols can be intimidating, and if the idea that it's too hard becomes firmly implanted in a person's mind, then it becomes a self-fulfilling prophecy.
Along these lines, I saw this video several years ago that I think is great to inspire everyone that math is just another skill that we can all improve. It applies just as well to any other skill we might be intimidated by:
Thank you for the video! It instantly reminded me of those guys in my 1st semester who already knew all the programming stuff because they started programming in 9th grade. Of course I was foolish enough to compare myself to them, and I'm so happy I stuck with my CS studies despite feeling as if I should have already known all the details.
Great article! Seriously. Ironically, however, my learning habits deny thorough reading of such long texts, so I just briefly looked for key points.
There is a spectrum of learning styles from academic, diligent, like yours (and I have an envy for it) to "jumping here and there trying to quickly extract most valuable information", but in my experience the most effective is the mix of these extremes. I.e. extensive scanning for good material (via google, etc.), check if it really good and worth spending your time and mental resources (reviews, rankings or sometimes just intuituion) and then intensive, thorough reading the documentation from A to Z.
Hehe :) I have actually come around to a style that is more similar to yours than how I started. If I'm learning something, I tend to focus on solving problems and letting that drive my learning. So instead of just reading a lot up front, I do just enough reading to get a problem solved, then I see whether I need to read anything to solve another problem, and so on (I call this PDL in the article as a shoutout to TDD).
It's easy to get carried away and write too much - there were finer points I wanted to make that I had a hard time throwing away - but I tried to at least make the paragraph headers clear so that people could skim those and get the idea.
I was thinking about documentation driven learning in the past. When combined with PDL, DDL ensures that while we learn we build high-quality resources that we can ourselves go back and learn from.
Thank you for this article!
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.