median blog

The value in knowing fundamentals

Over the years I have seen a lot of "this vs that" arguments. React vs Vue, Postgres vs MySQL, Tensorflow vs Pytorch. These debates often lead to zealots who refuse to budge on their position of superiority. More often than not, the differences between these options are minor. Having a good grasp of the fundamentals can help to remove the noise and marketing and allow strong developers to work with whatever is in front of them.

While these debates exist in many software communities, I see it most often in web development. There seems to be a pattern of taking ideas and hiding them behind complex sounding names. Take for example 'runes' in Svelte. Unless you read the source code or have a good grasp of the internals of modern front end tools, 'runes' has an almost mystical feeling. In this case on purpose.

I am not opposed to branding, naming, or in the case of 'runes' having a bit of fun with software. We're not robots at the end of the day. Despite that I've seen a lot of developers take part in very heated debates over the superiority of one idea over another based on details only found at the highest level. Many times, behind the scenes of whichever two ideas are on the line, the underlying fundamentals are very similar.

I see a lot of new developers start their career via online resources, bootcamps and tutorials. To me, this is fantastic. Anything we can do to teach programming to more people is a win in my book. I see a gap however in this pathway. In a race to be doing 'real' things as soon as possible it's common to skip a lot of the fundamentals. Sometimes with a promise to learn them later, sometimes with a dismissal. I think this is a short sighted tactic.

I worry that, taking frontend web development as an example, we are training a whole slew of developers in a set of tools that is far too specific. Developers will be 'React' developers or 'Vue' developers and give little attention to anything outside that ecosystem.

I've been around long enough to know that no framework, library or programming language is in the zeitgeist forever. In knowing the fundamentals I can pick up a new language or framework relatively quickly. That's not to say I will know all of the nuance within a week but I have seen younger developers look at a new JavaScript framework as if it was written in hieroglyphics.

If you want a long and valuable career in programming, learn the fundamentals. Learn the things you'll almost never have to write yourself like how to make obscure trees and implement search algorithms. Learn multiple programming languages, not to become an expert but to develop a radar for the aspects that are shared between them. Learning these things will help to push away the hype, marketing and zealotry and provide the clarity that behind the scenes even the most complex sounding paradigm can be worked through and understood.