AI assisted coding feels refreshing
I have a lot of ideas. I am driving my car to an Ikea and suddenly I think:
“Wait, there should be a pictionary with their silly names as words.”
A couple of years ago I would have thought about that, maybe sit down
and create a skeleton project, just to abandon it due to no time, or
just because I lost interest.
Today, I can do a quick MVP in a couple of hours and test if the idea is
cool or boring. Maybe play with my family.
I just don’t have to code it myself and it feels awesome!
Coding things myself
Over the years of working in software development, or generally gaining experience in the field, I went through a couple of phases of coding. Those phases don’t have specific dates, they were just flowing one after another and are more of feelings I have, when thinking about the process in retrospective.
Phase 1. Coding is pretty hard
When I was starting my journey I needed to learn how to code at all.
Like what the hell is a “class”, why that loop is not finishing, etc.
The process of coding was thrilling, because every time I wanted to do
something, I had to think how I would code it on the ground level. I
needed to look up the basic things. I remember doing my first interface,
it was mind blowing.
The Circle and Rectangle are both Shapes! Wow!
At that time the achievement was that the task that I had to do worked
at all… I still remember some code I wrote at the university, that was
simulating queues, with modes like FIFO, LIFO, etc. I was so proud it
ran at all. And it crashed for like 40% of all runs. I still don’t know
why…
The process of learning to code made writing the code thrilling,
challenging and hard. But it was something exciting.
Phase 2. I can code
After some time, I was able to code decently in one object-oriented
language. I knew what a class is, I knew (mostly) when I should use an
interface. There was generally no challenge in writing conditions. But
then I started wondering, how I should organize my code? Should this be
in that class, or the other class? What style should I use?
I remember the disputes between me and my friends from my first job, if
they prefer brackets in the same line as class/function name, or in the
new line. From today’s perspective pointless stuff, but then it was
important!
That led me to discover design patterns. And that in turn led me to
start creating code that was maybe slightly more maintainable.
Coding as a process of putting the logic into the editor was still
enjoyable and challenging, but I also enjoyed organizing my projects,
debating with other colleagues about the structure. The process was
still something exciting.
Phase 3. My code is clean and maintainable
I would be lying if I said that now my code is clean and
maintainable. That’s always debatable and I am my biggest critic. There
would always be a developer that would see the code and decide it is too
hard to maintain and we should just do a rewrite. That developer could
be me in like 2 years.
But generally that phase means, that I know patterns, standards, I no
longer call function with some stupid and funny names (long live the
ultimateGetter3000). I can call my code good enough.
But in that phase I started to think more of a bigger picture. At this
point I was already a backend developer for some time, so business side
of things was interesting to me.
The overall design of a system was a topic that I could’ve improved on.
How to model a business logic in a software, so we are both maintainable
and open for changes. It was a topic that was touching the subject of
coding, but coding was less and less a challenge and more like a task. I
just needed to write down whatever we, as a team, discovered on the
business meetings.
Don’t get me wrong. There were still some things that were challenging
when implementing functionalities. But the coding part started being
less and less exciting. It was just a means to get things done.
Phase 4. I want to understand business logic
This phase is where for the first time I didn’t use the word
“code” in the title. I was no longer as interested in coding
itself that much. I mean, I am still following development of languages
I use. I am trying to learn new languages. I am still doing something
for the first time. But that is not what I am thinking about the
most.
I started to focus more on understanding and modeling the business logic
rather than coding. I saw the challenge in software architecture and
this was the stuff that was fun.
The coding part became the boring part, because I already knew what I
wanted to achieve and I was capable of achieving that without any
troubles. Of course there is always some space to improve on, but
excitement about writing some code was very bleak.
How I feel today
I would compare it to driving a car with a manual. At first it is
pretty challenging. The process of just starting to drive is a big task;
don’t even start about changing a gear.
After a while you get better and with the progress you don’t have to
think about driving. It’s just pure instincts. You can listen to a
podcast, keep a conversation etc. Driving is mostly a day to day chore
you have to do to go to that swedish store or to travel to the
office.
Of course you can go to a track and you will have fun, but in a normal
day to day life it’s a basic thing to do, no emotions.
The same way I feel about coding today. It is a basic thing I have to go
through to get things done. The exciting part is somewhere else.
Coding pet projects
As I said, I have a lot of ideas. Most of the time the idea is
simple, but I am just too tired of coding that myself after 8 hours of
coding commercially. For me the coding part started being a chore. There
are times that I have the urge that pushes me to code the idea I have,
or I am excited to try some new language, but mostly I just leave it in
my mind.
I am also a bit sick with a disease called TBW - “The Best Way”. When I
start coding my small projects, I tend to fall into the rabbit hole of
selecting the right way of doing things. I start to think
commercially. But I don’t have to in all of my pet projects. Actually I
don’t care about the code’s style that much, I want the thing to work.
But the disease is too powerful.
And all of a sudden the AI boom came in. Now I have a tool in my hands
that can just do the boring part for me. It can choose whatever
library it wants. I will review that quickly and probably say “fair
enough” *shrug*.
It just feels so refreshing having a working idea in a couple of hours.
Since I started more heavily using the AI agents I am somewhat testing
like 70-80% of ideas I have. Previously it was like 2% at best.
It gives me more enjoyment out of the side projects. The thrill and
excitement is back!
In the past month I made:
- Decompiling and modernizing an old j2me game from 2005, so it was fully playable in the browser. (Sadly I accidentally deleted the project… but nothing stops me from doing it again!)
- The swedish store pictionary I mentioned at the beginning
- A script that every month collects all the fees and sends them via an email to a renter
- This site
- SponsorBlock addon to NewPipe
And there are still more to come.
The elephant in the room
There is a lot of discussion about AI usage in general. I was also
not the biggest fan of the vibecoding style. And actually I
still am not. At work I am using AI less and I am very strict about
reviewing every line that it produced. Because commercially I feel more
responsible about maintainability, I have to know how my codebase looks
like and what it does.
In my small projects I generally don’t care that much. Most of them are
for me and me only. I would probably create an ugly codebase myself if I
had to implement it on my own. But the bargain now rests on the AI’s
side. I am just pointing it into the direction I want.
The other benefit is usage of tools I am not very familiar with. Like in
the example of NewPipe. I know I am capable of learning the codebase, I
was writing apps for Android a couple of years ago, but I don’t want to.
I just wanted a quick addon. The entry point is much lower now. And that
is exciting.
A feeling that I was missing for some time.