I understand. You’re gonna come at me, and say -
Oh, but we are saving timeeeeeeee.
Listen, I know :)
It’s late night.
The codebase I’m working on is growing faster than ever, and the velocity we can achieve right now is objectively incredible.
One feature, two feature, three…. and so on.
But amidst all the rapid prototyping and instant refactors, a quiet realization has been creeping in.
Solving problems used to be a massive dopamine hit. And lately, that feeling is fading…
Looking at how the programming culture is shifting, it is incredibly clear that the human experience of programming is fundamentally changing.
Think back to how we used to build things a few years ago?
If you hit a wall in a complex Fast-API middleware or a Vue.js component, you could not just highlight the block and press a button to make the error go away.
You had to earn the fix.
- The Hunt: You spent hours digging through obscure documentation and Stack Overflow threads.
- The Experimentation: You scoured closed GitHub issues looking for clues and tried out five different variations of the logic, failing repeatedly.
- The Reward: When that terminal finally lit up with a successful execution, the satisfaction was electric. You built that mental model from scratch. You conquered the machine.
The struggle was the exact mechanism that made the reward so sweet.
The Numbing Velocity of AI
Today, that friction has been engineered out of the system.
If a test fails, the IDE catches it, explains it, and writes the patch before you even fully comprehend the root cause.
This is fantastic for business. It gets platforms shipped and features deployed.
But on a personal level, the fun of problem-solving has been significantly reduced.
We have traded the deep satisfaction of craftsmanship for the raw speed of delegation.
We are acting more like project managers reviewing code diffs than engineers wrestling with actual logic, right?
The MediaPipe Revival: Doing It Yourself
We recently built an app where I and my friend sat down to train that model on top of MediaPipe (An open source framework), we stepped out of the high-velocity loop and had to go back to the raw roots of engineering.
- Manually feeding and structuring the data.
- Tuning the layers and parameters.
- Watching the accuracy metrics slowly inch upward after deliberate, human adjustments.
When that model finally worked, it brought back that elusive, long-lost feeling.
It was the undeniable satisfaction of saying
I did this myself.
No AI generated the weights, and no language model abstracted the math away from us.
We were close to the metal again, and the dopamine hit returned.
So, how do we approach things moving forward?
We are never going back to a world without intelligent tools.
The productivity gains are simply too massive to ignore when you are trying to scale a startup or build a complex open source tool.
However, keeping the soul of programming, or even anything alive requires intentional friction.
We have to compartmentalize our work.
Let the machine handle the repetitive boilerplate, the CSS grids, and the basic CRUD operations.
But when it comes to the core architecture, custom machine learning models, or deeply complex logic, it is worth turning the autopilot off :)
Sometimes, you just need to read the docs and get your hands dirty to remember why you fell in love with coding in the first place.
In case we are meeting for the first time, come over here, it’ll be worth the roller coaster of articles that are gonna come up in the next few weeks.
If you’re someone who loves the UFC or MMA, we analyze and predict who wins every week here