I want to talk about some recent thoughts on writing code.

Before college, I had no idea what Computer Science or programming even was. In senior year of high school, with no direction and no clue, I applied to seven different schools for seven different majors: math, business, economics, game design. UCSB was the only one where I picked Computer Science. I barely got in. It was my second-to-last choice. I didn’t even get into UW, the school I really wanted.

The only reason I picked Computer Science at that one school was because it sounded like it had something to do with computers (duh). I didn’t Google it. Or maybe I did, but the description didn’t mean much to me. It just sounded cool, so I picked it.

I could sit in front of a computer for ten-plus hours without eating or drinking. Playing games, browsing, whatever. Back when Windows used to blue-screen (I’m realizing younger readers might not know what that is: BSOD), I’d poke around in the control panel until I fixed it. Someone who can sit still that long and also fixes computers? I figured I had some edge in this field.

Turns out I was completely wrong. But it still led to a beautiful accident. From the very first class, I loved it. Through college I slowly picked up all sorts of knowledge, and learned how to talk to computers using code.

Writing code was my thing

I used to really enjoy it. Compared to YouTube, games, and novels, coding was obviously second. But if you asked me to pick a major, it would always be Computer Science. Later at Stanford, I picked Computer Science again. No hesitation.

I have plenty of interests, but I still can’t think of a major more fun or varied than Computer Science. To me, it’s a way of solving problems through logic. There’s so much to it I’ll never finish learning. It always feels fresh. And even when I’m not coding, what I’ve learned applies to everything. Playing board games feels like running an algorithm, doing cost analysis, planning optimal paths. Writing a book feels like designing a user experience.

Writing code is one big part of Computer Science. Building something line by line to solve a problem is like completing a fun puzzle piece by piece. Some puzzles come from teachers, with a standard solution. But the ones I liked best had no framework. I could put them together however I wanted. The same puzzle could be solved in different ways, with very different results and efficiency. Even the order mattered. Starting from the left vs the right would often lead to different outcomes.

How you organize code, how you make it beautiful and clean, is a whole art too. At the big companies I worked at (Facebook, Amazon, Microsoft), people really cared about how pretty your teammates’ code was. During reviews we’d comment on each other’s code, for the boss to see.

The satisfaction after finally putting it all together, sometimes after days or months, was huge. I felt really clever. And if the finished thing got great reviews, that was the ultimate high.

“I” built this thing, it’s awesome, and it’s helping lots of people.

Then the cheat code showed up

But starting last year, I noticed coding was getting less fun. It’s like buying a puzzle set and finding out there’s an auto-complete button. Press it and the puzzle solves itself. Faster than me, better than me, prettier than me. It’s like playing a game with cheats on.

I don’t even have to touch the pieces anymore. I just tell the auto-solver what I want. Tell it I want a bird, it gives me a bird. A pirate ship? Here’s a pirate ship. At first I never imagined it could do a rocket, but with its help, that went from fantasy to reality fast.

Sometimes it doesn’t quite match what I wanted, but usually just telling it what’s wrong fixes things. The whole process is so fast that, if nothing’s broken, I don’t even bother looking at how it actually solved it. That would just waste time.

A few things make coding feel less fun with this new assist mode.

The source of satisfaction changed. It used to come from “I figured this out.” Now it’s more like “I’m good at talking to the assist mode.”

Results come out too fast. Sometimes feelings need time to develop. Shipping a project now feels like a dating app chat. I’m already itching to swipe to the next thing.

The fun of puzzle-solving is gone. That feeling of trekking through the hard parts and finally reaching the summit is gone. Now it’s like taking a cable car up.

Before, I had to think alone for a long time, try things, experiment, until I finally cracked the problem. Now with the assist mode, it’s like doing college homework where the teacher already has the answer key. I just ask and I get a standard answer. Easy games are not fun.

Coding went from craft to management. “I” went from a craftsman with standards to a foreman watching workers do the job. It’s just not the same. And “foreman” sounds kind of weak.

Can I get the fun back?

Some people will say these aren’t real problems. I could just not use the assist mode and solve the puzzle myself.

But everyone else is already using the new way. Even if I patiently build something by hand, the feeling isn’t the same anymore.

I know I can’t beat the assist mode. What used to take me two weeks now takes 10 minutes, and the result is better than anything I would’ve shipped in two weeks.

If you’re trying to get somewhere far away, why would you ride a bike when there are trains and planes? If I choose to bike, it’s probably just to shoot a YouTube video showing how different I am, not for the pure joy of it.

So what can I do to get the fun back?

A few things worth trying.

Raise “my” participation level. Plan every key detail out on paper first. Design the whole architecture myself.

Make the puzzle harder. Before, I’d build a small app. Now I can take on way bigger challenges. Say the old puzzle had 2000 pieces, and each line of code I wrote moved the progress bar by 1. The assist mode now moves it by 100-1000 per pull, which is why it feels boring. But if we upgrade to a 200,000-piece puzzle? Then each time I use the assist mode, it feels like writing one line of code in the old days.

But the most important thing is to accept that the fun has changed. You used to love a toy as a kid, but the toy went out of style. You still feel nostalgic, but you don’t really want to go back. It’s like the game getting a version update.

For me, maybe the question itself is wrong.

“Writing code myself” is the toy that has already gone out of style.