Why new frameworks make better developers

A look at the cognitive science behind the Hierarchy of Competence, and how dabbling with new frameworks and tools can make you a better developer.

This past weekend, I spent some time building a new project with 🧑‍🚀 Astro. It describes itself as "The web framework for content-driven websites", which was perfect for my use case - rebuilding a content-heavy site for APIs You Won't Hate, called openapi.tools.

I've been building with React for a good long while now, and Astro's come-as-you-are approach to javascript frameworks means that I was able to mix in React components with Astro's own syntax. At first, this felt a little bit like getting peanut butter in my chocolate, but... it works surprisingly well.

Astro + React feels like getting peanut butter in my chocolate

In true extrovert fashion, I jumped into learning about Astro by building with it in public on a YouTube Livestream last Saturday.

It... was tough, honestly.

Over the course of a few hours, go from explaining my approach and stream-of-consciousness thinking, to silently debugging a react-in-astro challenge for... a while.

Perhaps appropriately, the stream ended abruptly after my wife told me my webcam was no longer working... followed shortly by OBS (the streaming software I use) crashing. 🤦‍♂

So learning in public wasn't a great success

The livestream was a struggle. I stepped away from my Astro project, and came back to it the next day.

Something clicked. I was able to get past the issue I was having, and my project really started to fly together quickly. I was able to get a lot done in a short amount of time, and I was feeling pretty good about it. (By the way: I'll be sharing the fruits of my labor in the coming weeks...)

My second day of building honestly felt a lot more like typical dev work does for me - I was in a flow state, juggling tiny tasks and debugging issues as they came up. I felt unfazed to be working with Astro; a completely different experience compared to just the prior day.

It's familiar, but not too familiar

As I got to this point into the project, I could feel myself pulling from experience building with all of the other web frameworks I've built with, whether directly or indirectly.

I've built production apps with many frameworks over the years: from create-react-app to Remix.run, Next.js to Ruby on Rails and now Astro. I've also poked around at countless CSS and UI libraries like Bootstrap, Tailwind, Chakra, and ShadCN UI. It's a little difficult to describe, but the time I spent with each of these tools has made me a better developer.

Of course, learning about Bootstrap doesn't inherently make me understand React -- but it did add to the foundation of skills I use to debug things, to research solutions when I'm stuck, and to ask for help when I need it.

That new error that just popped up? I've seen something like it before. Oh, this component isn't rendering correctly? I know how to debug that. This layout isn't quite right? I know how to fix it. You get the idea.

The Hierarchy of Competence

In cognitive psychology, there is a model called the Hierarchy of Competence. It describes the stages of learning a new skill, from unconscious incompetence to unconscious competence:

Hierarchy of Competence
The Hierarchy of Competence, not to be confused with the Dunning-Kruger effect...

In the early stages of learning, we stumble between the "unconscious incompetence" and "conscious incompetence" stages. We don't know what we don't know, and then we start to realize how much we don't know. Getting through this phase can be a slog, but it's a necessary part of the learning process.

Don't get me wrong - I'm not going to tell you that I've mastered the damn thing after a weekend - I wouldn't want to end up hanging out with my dear old friends Dunning-Kruger again. I will say that I'm likely past the "conscious incompetence" stage with Astro. I'm starting to see the patterns and the ways that Astro's approach to building websites is different from what I'm used to.

What I am saying is that weekend projects like this inevitably bolster my skills as a developer. They're a good reminder that my expertise isn't just in React or Rails or Next.js - it's in problem-solving, debugging, and learning new things.

If you happen to manage a team of engineers, this is a good reminder that giving your team the space to explore new tools and frameworks can be a good thing, whether in a weekend project or in a more formal setting.

And if you don't manage a team, remember this the next time someone tells you that it's a waste to try out a new framework or library: it's not about the tool itself. It's about the skills you pick up along the way.

HELP ME PLZ: 💌 Tiny Improvements feedback

I've been writing Tiny Improvements for a while now, and although I occasionally get a reply or two, I'd love to hear more from you.

  • What do you like about this newsletter?
  • What things would you like to see less of?
  • Anything I can do differently to make this more valuable to you?

Hit reply and drop me a line - let me know what you think. There's no idea too big or too small.

I'm all ears. 🙏

***
Hero
Why new frameworks make better developers

A look at the cognitive science behind the Hierarchy of Competence, and how dabbling with new frameworks and tools can make you a better developer.

devdevelopercareerreactrails
Mike Bifulco headshot

💌 Tiny Improvements Newsletter

Subscribe and join 🔥 985 other builders

My weekly newsletter for product builders. It's a single, tiny idea to help you build better products.

    Once a week, straight from me to you. 😘 Unsubscribe anytime.


    Get in touch to → Sponsor Tiny Improvements