Do we really need to know how things work? ๐ง
With AI, is everything we are learning (or have learned) destined to be relegated to a "trivial knowledge" heap?
Hi everybody - in my latest technical-focused article, I wrote about the ubiquitous Bloom filter data structure. If you prefer watching (for a thrilling 33 minutes!) my explanation as opposed to reading, then I got you covered there as well:
The big takeaway about bloom filters is that they are used in most situations where we have a large amount of data and need to quickly know if something we are looking for exists in that large amount of data.
Taking a step back, this touches upon a bigger question that many of us are grappling with. In a world of AI, what is the point of learning about these technical concepts?
Itโs always been about abstractions
The chances of you and I having to implement a data structure like a Bloom filter have always been quite low. Outside of programming or system design interviews, the time we would spend even thinking about Bloom filters and how they work is close to zero. With the rise of AI assistants that handle a lot of this system design thinking for us, does it even make sense to know about Bloom filters at all?
From the earliest days, working with computers has always revolved around abstractions. Most of us do not write logic in 0โs and 1โs. We write in higher-order languages that make it easier to express ideas in casual English-like phrases:
The many years of optimizations used to make programs work at a low level are lost to us. Our assumption is that when our higher-level code is compiled/transpiled, those optimizations come along for free. Knowing about their existence or not is a moot point. For many of us, we donโt even know what we donโt know when we dig deeper down into the lower-levels of how computers work.
Just like we no longer need to think about how memory is managed behind the scenes when creating a loop in JavaScript, with AI assistants, we are fast reaching a moment where we no longer need to know how the overall system is built. We describe the idea using natural language (text, visuals, voice, etc.) and iterate at the level of results:
AI becomes yet another abstraction to the many layers of abstractions we have been adding over the decades since the first computers were invented. As abstractions go, it is natural for us to lose awareness of crucial details lower layers may provide. What makes AI a bit different is the depth of abstraction it provides. We could argue that each abstraction we added over the years was incremental, but the abstraction provided by AI is a giant leap. By relying on AI, more of us are becoming quite successful in building apps without knowing the computing fundamentals that we would have needed in the past. Forget about Bloom filters and all the other famous data structures and algorithms! Even programming basics may no longer be needed.
Whatโs the point in learning the fundamentals?
When learning to read and write, we donโt really learn Latin or Sanskrit or Greek or any of the more ancient languages first. Why should app building be any different? Today, relying exclusively on an AI assistant to help us build apps that are scalable, performant, and secure is still a bit iffy. It is still important for us to be able to spot potential trouble areas and guiding the AI assistant appropriately. This is a moment-in-time problem, though. As the underlying AI models get more sophisticated, their ability to do the right thing without any human guidance on the implementation will only increase. We can assume that in the near future when AI generates an app, the app will have implemented all the right details and safeguards that would be on par with the most experienced app developers.
When we get to that point, knowing the details of how underlying computing primitives work wonโt really be needed. To take it further, there would be no need for a site like KIRUPA or a book like my Algorithms: Absolute Beginner's Guide to exist, at least not catering to a large audience as it aims to today.
What are your thoughts? Feel free to chime in on the forums, on Twitter / X, or in the comments below with your thoughts.
Cheers,
Kirupa ๐
I was kind of disappointed to see that you quickly jumped to the conclusion (jump to conclusion mat anyone?) that we will not need to know the fundamentals. Javascript is in the middle of your abstraction layer cake, but it is still being improved on and changed. Additionally, build tools that were previously written in node are being re-written in lower-level languages, and providing huge performance gains. If no one bothered to think about or learn these languages, we wouldn't have these improvements.
There is still the joy of knowing things that will be missed out if you just abstract away everything!!