From Scratch to AI: How Coding Paradigms Are Shifting and What It Means for Human Creativity
Discover how modern tools like Scratch and AI are transforming coding education, and why foundational programming skills remain crucial for creativity and problem-solving.

A New Generation Embraces Coding
It was barely 7 a.m. on a Saturday morning when I woke up to the sound of my six-year-old son tapping away at the trackpad of his school-issued Chromebook. The house was still quiet, but there he was, already engrossed in his favorite weekend activity: coding in Scratch.
He had a YouTube tutorial open in one tab, guiding him through how to program a blue car to follow a black arrow. He was focusing on coding as he dragged and connected colorful blocks of logic on the screen. By the time I stumbled into the living room, still in my pajamas, he beamed at me and exclaimed, “Look, Daddy! I can move the arrow with the mouse, and the car follows it.”
On the screen, a simple blue car glided smoothly behind a black arrow, the direction controlled by the trackpad. I couldn’t help but smile at his excitement and marvel at his determination. Before breakfast, before video gaming, before anything else, my son was programming.
The Evolution of Learning to Code
This scene was a typical start to our Saturdays, but it always made me pause and reflect. Watching my son dive into coding with Scratch, I was struck by how drastically the process of learning to program had changed since I was 13, the age I started to code. The tools, the mindset, even the entire learning paradigm—it was all so different, and it made me wonder: What do these changes mean for the future of programming and creativity?
Scratch allows kids to dive right into coding with purpose and creativity. My son doesn’t start with syntax or algorithms; he starts with a vision—a car that follows an arrow—and then uses Scratch’s intuitive tools to bring it to life. He draws or imports sprites, defines events like mouse clicks or timers, and links them to pre-coded logic blocks.
My own journey into programming decades ago couldn’t have been more different. I taught myself to code by reading books and magazines, starting with BASIC, then C/C++, Java, Python, and assembly language. There was no instant feedback or visual gratification—just pages of abstract exercises. I typed out simple programs to print “Hello, World!” or calculate Fibonacci numbers, learning the mechanics of loops, variables, and algorithms along the way. Only after years of mastering these foundational concepts could I begin to create meaningful applications. The process was often frustrating, but it instilled a deep understanding of how programming works at its core.
The Shift in Educational Tools and Learning Styles
As I watch my son’s learning process, I notice how today’s educational tools focus on outcomes. Content on YouTube and online articles teach us how to get things done. They emphasize achieving specific goals—how to make a car follow an arrow, how to build a multiplayer game—without necessarily explaining how things work at a fundamental level. This style of learning prioritizes pattern recognition and replication over building a deep understanding from first principles.

Recently, my son tried to create a multiplayer game in Scratch. He and his nine-year-old sister sat side by side on the couch, debating how to make two players interact in the same game. Despite their enthusiasm, they couldn’t quite get it to work—the conceptual difficulty was just a bit beyond their grasp. Watching them, I couldn’t help but recall my own experience learning socket programming in college. Back then, I had to painstakingly write C code to establish communication between two terminals using Unix’s X display system. It was a laborious process requiring a solid understanding of low-level networking concepts and a lot of trial and error.
The comparison was striking. My son struggled with conceptual hurdles, but the tools at his disposal were far more advanced and user-friendly than the ones I had. Yet the challenge of understanding the logic behind interaction and communication remained the same. This made me wonder: Do today’s abstract tools risk obscuring the deeper insights gained from working directly with the building blocks of programming?
This new approach contrasts sharply with traditional programming education, which often begins with abstract building blocks like loops, variables, and algorithms, taught in isolation. For practical-minded learners, this can feel tedious and purposeless, even if it lays a strong foundation for problem-solving and innovation. Traditional methods appeal to puzzle-solvers who enjoy abstract challenges, while newer methods cater to practical learners who are motivated by tangible outcomes. Both approaches have their merits, but the shift toward “learning by doing” raises an important question: What happens when learners never encounter the deeper principles behind the tools they use?
AI in Programming: A New Paradigm
The way AI tools like GitHub Copilot and ChatGPT assist programmers today feels remarkably similar to how Scratch empowers my son. With AI, developers can focus on high-level goals and intentions, leaving the low-level details to the machine. Need to process a dataset or build a recommendation system? Simply describe your requirements, and the AI generates the necessary code.
What makes this possible is AI’s access to an immense repository of knowledge. By learning from countless examples on the internet, AI can select and combine well-established coding blocks to achieve a goal. This abundance of reusable knowledge eliminates the need for programmers to reinvent the wheel, streamlining the development process.
As AI takes on more responsibility, the role of programmers is shifting. Rather than implementing technical details, future programmers may act more like directors, articulating high-level intentions and guiding AI to execute their vision. This transition democratizes coding but also raises concerns about the loss of foundational expertise.
Abstraction makes programming easier and faster, but it also creates a disconnect between the user and the underlying mechanics. Without understanding the building blocks of algorithms or low-level systems, programmers might find themselves at a loss when tools fail or produce unexpected results. This “crisis of abstraction” is a growing concern. While AI and advanced tools are invaluable for efficiency, preserving foundational knowledge is essential for troubleshooting, debugging, and innovation. After all, every abstraction rests on a bedrock of deeper complexity that someone needs to understand.
The Importance of Patience and Perseverance in Learning to Code
One aspect of this shift that concerns me is the shortening of the effort-to-reward cycle. Tools like Scratch and AI make it possible to achieve results almost instantly, which is incredibly motivating. But in reality, especially outside of programming, meaningful achievements often require patience, persistence, and long-term effort.
As I think back to my own learning journey, I realize that the slow, often frustrating process of mastering the basics taught me more than just technical skills. It cultivated a sense of discipline and perseverance—it is a trainable virtue that plays a crucial role in tackling big, meaningful challenges. The immediate gratification provided by Scratch and AI tools might unintentionally discourage the development of perseverance. Yet, outside of programming, most significant achievements require sustained effort and the ability to navigate long periods of uncertainty. Cultivating patience through gradual, incremental progress not only builds technical skills but also fosters resilience and creativity, qualities essential for overcoming the complexities of the real world.
Mastering the basics isn’t just about technical competence—it’s about unlocking creativity. Understanding the building blocks of programming allows us to question assumptions, explore new possibilities, and imagine solutions that go beyond the constraints of existing tools.
Preserving Depth in the Age of Convenience
As coding evolves into a process of setting goals and combining pre-defined blocks, the importance of foundational understanding might seem diminished. But mastering the basics isn’t just about technical skills; it’s about cultivating a mindset that fosters creativity, patience, and innovation. Without this foundation, we risk limiting ourselves to what our tools can do. By preserving and teaching these skills, we can unlock our full potential and imagine possibilities that go beyond the boundaries of abstraction.
In a world where programming feels more like directing than building, we must ask ourselves: Will we settle for convenience, or will we strive to preserve the depth that drives true creativity and resilience?
✉️ This is a post from my "𝐈𝐧𝐭𝐫𝐨𝐬𝐩𝐞𝐜𝐭𝐞𝐝 - 𝐑𝐞𝐟𝐥𝐞𝐜𝐭𝐢𝐨𝐧𝐬 𝐨𝐧 𝐓𝐞𝐜𝐡𝐧𝐨𝐥𝐨𝐠𝐲’𝐬 𝐈𝐦𝐩𝐚𝐜𝐭 𝐨𝐧 𝐃𝐚𝐢𝐥𝐲 𝐋𝐢𝐯𝐞𝐬" newsletter in 2025. I will deliver thought-provoking topics to your inbox.