I have developed a rule of thumb for when it's best to code by hand.
If I don't understand the problem super well, I'll start digging in with an agent and gaining familiarity.
However, if after 10-15 minutes of prompting, the solution isn't something that I feel I could implement myself, it's time to go do it by hand.
I do it the way I did pre-AI. Finding the relevant code, reading and understanding it, and trying out various ideas.
Usually when I'm about 30-50% done, the system is mapped out really well in my mind, and all that remains is execution.
Then I'll write up a detailed spec and ask the agent for feedback. It almost always finds edge cases I didn't consider and "gets" where I'm going with it. I let the agent take it forward and also have it do the things I usually don't have patience for, like TDD and running all the tests and whatnot. The grunt work.
What's nice is that I am fully qualified to review the code afterward and, not only that, any future agentic work on that system is easier. I understand it better because I did the manual work.
It's still really fast and it makes future work faster. It's this kind of hybrid human + agent workflow that makes me feel superhuman.
upon Doing The Thing, you will invariably find two things to be true:
1. Doing The Thing was pretty easy, actually
2. not having Done The Thing was bothering you more than you thought it was
🚨🎙️ | Casemiro:
“The new generation, they are about STATISTICS.
“You finish the game, and he has 97% pass [accuracy]. WHAT passes? Just passing back and back. Negative passes.
“You need to play FORWARD, it doesn’t matter if you lose the ball...”
[@RioMeets]
A really simple but effective hack in life is to note down literally everything you’ve agreed to do in future.
It’s astounding how often I see someone nod that something will be done, but later simply forget about it.
I doubt everyone except me is carrying a super-memory in their head; perhaps it’s a matter of habit that commitments (even to your future self) don’t matter?
This is what a country in decline looks like: people are distracted with entertainment, trends, and politics while the education system keeps collapsing in plain sight.
Lowering admission standards instead of fixing primary and secondary education, improving funding, building better institutions, and creating real opportunities for students is not progress. A nation that stops taking education seriously slowly mortgages its future.
You guys can watch the video here.
He didn’t even mention the part where they said Bruno Fernandes is better than anything they’ve got… the ending is hilarious.😭
The gravity of bad governance isn’t obvious in things you can immediately see or measure. E.g the actual tragedy of kids not feeding properly today isn’t just stunted growth. It’s the consequences of stunted growth e.g self esteem, career/earning potential, dating options, etc.
Every man eventually discovers that competence is the only real stabilizer of self-esteem; no amount of praise, affirmation, or philosophical comfort can replace the confidence that comes from knowing you can produce results even when conditions are hostile.
If you had to do it everyday as part of your job, you’ll eventually commit it to memory just as you don’t need AI to remember how to define a variable.
For commands I don’t need regularly, I create an alias and add it to my .zshrc file, but over time I found that I had memorised the command for killing a process running on a port. And this is because it was something I did regularly.
I understand conceptually how to retrieve a key-value pair from a json column in Postgres, but did not know the exact query syntax off hand. At my new job, I had to deal with a lot of json columns and there’s no ORM. Due to repetition, I can write the query even if you ask me to do it at midnight. I also know the difference between SELECT attributes -> 'sku' FROM coupons and SELECT attributes ->> 'sku' FROM coupons.
AI should help you do things that are mundane, but as you do them frequently, you should also understand and know how to do them without AI over time (if you don’t know it already).
I know reading a book is hard, but try to read The Mythical Man Month: Essays on Software Engineering and A Philosophy of Software Design.
The reason we’re saying you can’t build Jumia in 2 weeks is not because of your skills, abilities or the capability of any AI model. This thing is engineering and there is a PROCESS. You also need enormous domain knowledge.
Thinking in implementation details as the first step to a system design challenge shows you lack software engineering fundamentals.
Just read those books, and you’ll understand why you’re wrong.
Unsolicited advice:
When you use AI to generate code, step back and try to design the entire system from scratch. Don't build as you go. Before generating or writing any code, create a Technical Requirements Document in markdown format. You can use AI to brainstorm about how to do it.
Review the TDD.md and make sure you understand everything there.
Next step is to collaborate with AI to create epics. You can divide the entire project into 3 or more epics. Within each epic, create tickets. These are all markdown files and they will go into details of how the project is implemented, folder structure, testing strategy and overall architecture. Agai,n make sure you read and understand all the tickets and epics. You can choose to commit or gitignore the TDD, epic and ticket files.
For each ticket, start a new session, put the epic and ticket in the chat context and prompt the AI to implement it. After implementing a ticket, stage it and start a fresh session. This new session is to review what was done. You can prompt the AI to do the review; it will most definitely find bugs in what it generated. Go into the code and validate for false positives and hallucinations. Correct the AI or accept the requested changes, stage the files again and commit. Finally mark the ticket as completed. To start the next ticket, you clear the context again.
If you do this, there is no way you won't know when fastembed was removed from your dependencies. Also, you will actually own the codebase.
In the rare case that I have to generate code with AI, especially for tests, this is how I do it.
Of course, there could be better and more efficient methods other people use. Your current approach of finding out after the fact that fastembed was removed from your dependencies may very well be a better alternative. It depends on what you are optimising for.
The reason I keep saying you should learn the fundamentals is that there are people who are technically sound, like PhD-level sound, and they can still prompt an LLM too.
Just take a moment to imagine the quality of their prompts vs the quality of your prompts.
You don’t stand a chance at all if vibe coding is your strategy.
On AI usage.
Senior management does not care if you prompt AI to generate your code or if you write code by hand.
This is an implementation detail. What they care about is the financial statements. In the end, you are just one of the resources available to the company.
The reason you should care about over reliance on AI is that it is in your interest to retain the ability to think through difficult problems and arrive at a solution significantly superior to what any AI model can produce without expert guidance.
AI can save time, but what you do with the spare time is what differentiates you. I choose to spend the spare time studying and going deep into the internals of the systems I use.
I can now explore certain topics just for fun. You have to love learning and perhaps be addicted to it.
I will say it again, the average thug can’t be reasoned with. It’s a total waste of time.
Take this one for example, what do you want to tell him? He neither cares for morality or even his own sociopolitical right, which he has willingly sold for money.
He strongly believes if he kiss the ring long enough, snatch enough ballot boxes, and go to war consistently for the right person, he too, can become like those men he mentioned who rose from poverty to riches by walking the path he’s now threading.
He can’t be reasoned with. You can’t appear to his conscience. Politics is about self interest and he has identified his own. So why should he care for yours?
The solution is for Nigerians to make it clear to people like him that their determination to make their votes count far surpass his desire to make his masters happy.
That’s the only way.