DEV Community

Cover image for Learn programming by peeling back layers of abstractions
Bao Huynh Lam
Bao Huynh Lam

Posted on

Learn programming by peeling back layers of abstractions

Learn by peeling back layers of abstractions

Here’s my programming hot take 🌶️: Libraries are amazing, but they might also make you and me “dumber”. Let me explain.

Preface: Libraries, frameworks, and code sharing in general is absolutely fantastic. The programming world wouldn’t have existed if we weren’t able to utilize other’s well-written and battle-tested code and everyone had to reinvent the wheels every time. Efficiently using the right libraries for the job is one of the best ways to quickly and securely deliver an impactful product.

However, recently I realized that I have been using so many libraries mindlessly without considering what exactly do they abstract. Some libraries masterfully cover away so many painful complexities that using them feel so easy-breezy that I began to take them for granted.

And that is dangerous because not always will you have access to these libraries. Companies may have strict permission policies that prevents you from installing certain tools. Moreover, not understanding how the libraries work - what are they good at and what are their shortcoming - hinder my abilities to put them into a bigger picture. When tasked with a similar but more complex situations, I won’t be able to identify and comprehend how a library can help or what are some limitations I need to be aware of. When a new technology revolutionizes the space, I won’t be able to contrast and compare them with each other to recognize why this new thing is so valuable.

That’s why I have been striving to dig deeper and understand more about the mechanisms at work and let curiosity guide my next journeys. And I definitely encourage everyone, especially beginners to do the same.

You don’t have to know it all to the tiniest details, but having a general idea how the technology fits into the big picture helps a lot.

Seek to (and struggle to) learn by peeling back layers of abstractions.
Consider building projects without your favorite libraries.

  • If you have been building in React/Vue/Angular, try building an app with vanilla JavaScript and/or traditional server-rendered templating so as to see what areas JavaScript framework actually helps.
  • If you have been using an ORM, try making a small project using raw SQL
  • If you have been doing AI with PyTorch and Hugging Face, consider re-building a classic ML architecture using more native technologies (I learned a lot from a school project where we built a simple neural net with just numpy)
  • Or just start reading, listening, and watching more on the topics of what’s going on under the hood

I have found these basic projects to make me grow a lot by helping me understand what exact "pains" my libraries are abstracting away and help me be less confused about which features are natively-provided vs. library-specific.

Let me know if you have been doing the same thing to. Would love to hear your success stories!

Top comments (0)