Are We Cooked?
Some thoughts about the future of programming and where should I be betting my money for now.
In short, AI and Software Architecture and design.
AI #
I think that continuing to ignore and to not learn and harness AI to its fullest is a mistake. And that AI will never replace programmers is wishful thinking.
Will it replace programmers? In my opinion, yes, it will.
But, it will replace the superficial programmers. Those that are not willing to learn deeply, those that
will just continue to back and forth and never look at the code produced.
Those that doesn’t learn programming concepts and computer science, they may be good ‘vibe coders’ but there will a demand for those
that will fix things when things are stopped from being fixed by a prompt, and real big complex problems are introduced into the system.
I also think that since AI will (is, actually) be a part of every programmer toolbox.
As I do deeply believe, even since before AI, YOU SHOULD KNOW YOUR TOOLS!
AI is no exception.
My current workflow is using opencode, an open source coding agent which is awesome.
I also think that there are some things which are considered as fundamentals although things are changing in such a rapid pace.
- things like context-management, feeding better, quality input into the LLM will produce higher quality output.
- workflows and unix tools - knowing how to use these agent efficiently in a systemic way will be key and will separate those who are desirable and those which are not.
Software Design and Architecture #
Since AI will produce most of the code, what will us human do? Design and Architecture are some of these in my opinion. It is highly valuable to know these concepts, because starting out with bad design, no matter how fast you produce the code, will result in a rewrite at best and cost you a lot of money or even worse if it is really bad.
This is connected to context-management, I’ve learned about this concept of\
research->plan->implement cycle.
Which is basically, making a really good plan before telling the model to implement, and the impact of being wrong in the different stages
has different size of effect.
For example, if I describe the wrong bug, no matter how detailed the plan is, it will not solve the bug and end up with 1000~ lines
of bad code.
Describing the bug correctly but designing a bad plan will result in 100~ of code etc.
these ideas are originated from this talk from Dex Horthy which I find interesting.
And generally it is the same as in life, 20% 80% Pareto distribution, the wealth distribution, everything, there are a few things which impact the majority of of outcomes, programming is not the exception.
conclusion #
I’m learning how to use AI efficiently and in a systemic way. I’m learning about building application with good design and the underlying concepts of it.