There’s two paradigms in programming: the one who knows how the stuff works, and the one who knows how the stuff works.
In the era of the “ship it, brah” culture, it’s easier than ever to just build it, and that’s evidenced by the new wave of builders in the past year or so. You can build a frontend without knowing a clue about react and build a (meh) backend hooked to a live db without knowing what “a supabase” even is. And, with a bit more motivation and scouring through some documentation, you can build a real NextJS web app. But, what do you really learn? Maybe with some ai help you can build an app, and you’ve learned enough about the framework to understand how pieces go together, but, is it optimal? Or, if time constraints say otherwise to refactoring, do you know how to optimize it?
I’m realizing there’s perhaps levels, or two different, yet complimentary fields to programming. There’s the practical; the skill of knowing what libraries to implement and what cloud software can get a product out fast, and with enough room to scale. Then, the theoretical; knowing how a computer works to some extent beyond mashing keyboard buttons and bright colors changing on a screen, and are the ones developing the amazing things like Bun and Nodejs. The current tech culture, by all means, favors the former. However it’s the people like Ryan Dahl that get jobs at Google 😉
That, of course, isn’t to say you should know how the assembler works before you write your first hello world javascript app. In this current climate, undoubtedly speed is everything, so you should be in your favorite ide as often as possible building your next million dollar SaaS. But it is to say, that the idea of making the “right” Cursor prompt doesn’t scale, and eventually you will need to know things like what async/await means, and what blocking vs non-blocking I/O is.