AI, right? What a thing!
I am a very senior developer. I learned programming on some of the first programmable personal computers
and I may end programming in the last ones. That is a very weird coincidence, that
such a time span would be the last 40 years of my life.
I am also a very good programmer. Really, I am very good. I am not the greatest
but I am waaaay better than average. There is very little I don't feel capable of
writing myself. If anything, I have sort of a fetish for wheel reimplementation because I feel I can rewrite almost anything better than what is out there by some measure.
And to be honest, I don't know how to feel about AI.
On one hand it's the death of a hobby. Coding is not really the point anymore.
Sure, I still code better than, say, Claude, but not a lot better. And it
knows more languages than I do.
I have much better design skills, I am way better at choosing things, I am
100 times better at having ideas. But writing them down as code ... he's maybe
50% of the programmer I am and I can run 5 copies of him.
So, the question everyone asks: are we programmers going to lose our jobs?
Sure, some. Me? Maybe!
But that's expected when a tool is much better than what there was before and
programmers have a weird tendency to be more numerous with better tools.
Compilers made programming much simpler than before, and there were many more
programmers after they were invented. IDEs made programming simpler, and there
were more programmers after they became popular. So, LLMs are making programming
simpler... who knows!
For people that are not familiar with programming maybe analogy helps. Imagine
you are a knife maker. You make knifes by hand. Each knife takes a day. Of course
there are industrial knife makers that make a million knifes a day. But suddenly
comes the knifer-2000 and it costs $200 and it makes 10 knifes a day.
It means anyone can make knifes, all they need is $200, some knife-making
inclination and a need for a knife that is not served by the industrial makers
that sell knifes for a dollar.
In software development, very few people have knife-making inclinations, and people
that need non-industrial knifes are super rare.
So, yes this makes the life of the artisanal knife-maker harder, but
the idea that any small business is going to go and create their own app/knife
because now they can is kind of silly.
It may mean the end of the small development shop, it may mean that only huge
companies survive, it may mean those companies may need fewer devs, too.
But I think it also means something else. I think it means hobbyists are going
to have a lot of fun. Open source devs in their home shops are going to have a lot of fun.
What am I basing that on? Well, on the lots of fun I have been having.
While during the day I am a mild-mannered dev on a medium-sized corporation, my
real personality is "guy with strange ideas who wants to turn them into code".
And boy is that guy having fun.
Projects I never tried because they were too much effort now are not.
Like, I have had a thing for spreadsheets for maybe 20 years. And why not write
an excel-compiler? Well, sure
And why not write a "powerpoint" that uses markdown and runs in a terminal? Well, sure
And why not write a tool to emulate hardware on servers and let you control them
over the internet? Well, why not indeed!
Literally, anything I want to make, I can make. Maybe nobody will use it. Consider
them the computer equivalent of Warhammer miniatures. I wrote all that just because I wanted it. Me.
I also think AI is going to change the programming language landscape and it may
already be visible. My guesses:
- Language readability matters less
- Language performance matters more
- Those who say LLMs will write machine code are idiots
This should reflect in things like Python's popularity decreasing, Rust/Go
popularity increasing.
Ideally it would be the death of server-side JS/TS, because I can always dream
the world will be better in the future.
It also means (or rather, I also guess) students and very early career devs
are in a pile of trouble because they are not going to get the formation
they need to support the bad parts of LLMs (systems design! taste! methodologies!)
For example, strict TDD works great with LLMs. If you can give them a good
preexisting test suite they are going to come up with a working solution
that passes the suite in no time.
Separation of concerns? They love it! Helps establish context.
Locality, modularity? Yes please!
All the software engineering "discipline" just works when not dealing with humans.
Damn, you can use freaking cascade, and it will work. What do you think all those "design mode" and "architect agent" are? Cascade baby!
This is going to be an interesting time, and I can say that from the nice position
of "I am close to retirement anyway". For people who were preparing for a long
career in software development, it's also going to be interesting, in a not so
nice way.
They will probably evolve and develop a discipline to manage these systems, which
is not going to look nothing like prompt engineering, harness fuckery, agentic
workflows or whatever people are talking about this week. All that is just the
dead chicken running around looking for its head.
What will come? Fuck if I know.