hellodavid.dev

I Stopped Thinking

While building this site, I realized that I had outsourced my thinking to an LLM, and had unknowingly degraded my own skills.

My path into software engineering has not been linear. I graduated from college as a Molecular Engineering major, which I like to think of as a glorified physics degree. I enjoyed my time solving rigorous problems, as most of my problem sets involved thinking very hard for many hours to come up with a solution. Trying things and failing, and trying all over again. I found that this was what I enjoyed most about what I chose to study. Somewhere in my third year I realized that I would have to make money after graduating, so I started taking CS classes, which allowed me to solve hard problems, but now, on a computer! It scratched the itch in my brain, the part that wanted to think.

Enter AI

I eventually found my first role in a consulting company as a software engineer, and it was around this time that OpenAI came out with GPT-4. At the time, I was taking CS50 (my job really gave me nothing to do) and decided to start experimenting with AI for my final project. I had used ChatGPT loosely to answer some random questions here and there, but I decided to start creating apps using their API. I made an app that allows you to create math practice problems for any category of math and filter it down by difficulty. It was very simple and it allowed me to learn about web design. Throughout the process, I used VS Code's Copilot with GPT-4 to help me with designing and laying out the site. This made it really easy to code things without knowing the syntax or language itself. I was hooked.

The Easy Button

Fast forward a couple of years, and it was hard to stop pushing the easy button. I did not stop pushing it, in fact. I worked at several startups and organizations where I simply became the meat proxy between the LLM and my boss. Even this portfolio site, I opened up my computer, typed claude --dangerously-skip-permissions and let the LLM decide how to best represent my professional experience.

I stopped thinking.

Somewhere along the way, I stopped solving the hard problems. I stopped scratching that itch in my brain that wanted to think. Eventually I went back and tried doing some of the things that I used to find easy, and I could not recall where to start. I tried solving math problems whose solutions would come to me intuitively, and I could not. It was time for an intervention.

Assignment for my Quantum Computation Class

Oh to understand what I was even working on here

I decided to start here, on this website. I wanted to talk about my experience with AI, so I created a blog branch and started to dig through the code that Opus 4.5 had written. Some of its decisions were questionable, or more verbose than they needed to be. This was enough to convince me to keep grappling with the codebase, to mold it into something I could be proud of. I read Josh W. Comeau's post on how they built their blog using MDX and thought it would be a great opportunity to learn something new. I enjoyed working through the layout issues and the type errors that TypeScript gave me. I even planted some easter eggs on the site as a personal touch. It was really satisfying to watch everything come into place exactly how I wanted it to. I felt the sought-after flow state, something I had not experienced in years.

Choosing the Hard Way

I still use AI, in my work or in one off projects that I just want to get done, but I have taken a different approach to using it. I have found it useful when trying to learn a new skill. I like to learn with projects, so I have created project based courses for languages that I would like to learn, such as Zig and Rust. It has helped amp up my TypeScript skills, which I used to create this part of the site. When I get stuck on a particularly hard problem, I ask it for explanations of the bug that I am working on so that I am able to distill the context, and create my own mental model instead of outsourcing that to the LLM.

list items are not displaying correctly when working with mdx files.
Can you give me an explanation as to why? Don't edit any files

The gist of the response was that Tailwind cleared out the default styling of any elements rendered to HTML, so I had to provide my own list stylings. This form of prompting has brought back my inquisitive side and I am able to build a better mental model of the code base.

I know this technology is here to stay, but I am happy using AI in this limited capacity when it comes to my own projects. I like the idea of being able to jump anywhere in my codebases and be able to diagnose an issue immediately. Not only that, but I am more critical of how things are made and am more decisive when creating my own software. Even when prompting for my job, if I see that the LLM strays from the path of least resistance (which I can now identify), I am able to steer it in the right direction, not just accept the output tokens as truth. So for the time being, I am going to continue limiting my AI use.

I am enjoying thinking again.

Recent