How I Solved It With Code

Building things with AI in a way that actually teaches you something.

AUTHOR

Nathan Horvath

PUBLISHED

2025-09-01

Nine months ago, I was copy-pasting AI solutions and spending too much time debugging code I didn't write. Now I approach any technical challenge with confidence because I understand every piece I build. I'm one of only 1000 people who got early access to what made this transformation possible.

I discovered the How to Solve It with Code course last November while scrolling X. This was the first fast.ai course (now under Answer.AI) since the ChatGPT era began, and I was curious about Jeremy Howard and the team's take on AI-assisted coding. Their announcement video was deliberately vague but intriguing, and I trusted Jeremy's reputation and wanted to learn from the best. I immediately signed up as one of 1000 guinea pig students for the experimental cohort, which was a smart decision in retrospect, because it filled up in 24 hours. Little did I know what I was getting into!

The Secret Sauce

The course introduced SolveIt, which is Answer.AI's AI-assisted programming platform. SolveIt is both a product and a methodology. A new user might describe the product as "just AI mixed with a Jupyter notebook", and without the training and methodology, that's exactly what it is—fancy Claude.

The methodology draws from George Pólya's principles from his 1945 book "How to Solve It" which emphasizes decomposing larger problems into smaller steps to solve them incrementally. SolveIt's interface reinforces this through clever design. The editor defaults to one row and expands only as needed, nudging you to write small code chunks. It defaults to code rather than chat, encouraging you to act instead of outsourcing to AI.

The AI operates like a coach, prompting you to solve problems rather than doing the work for you. You learn and understand your code with AI assistance, giving you confidence to enhance it later. This contrasts sharply with traditional AI that gives you reams of code you may not understand. To me, SolveIt directly contradicts what's trending right now in the AI community.

The Agent Obsession

A few months into the course, somebody noticed SolveIt on my computer screen and was curious about it. I explained the premise to them, but I got the vibe that they weren't impressed. I suspect it's because coding agents are what everyone's talking about right now. Something like SolveIt seems low-tech and unimpressive to the untrained eye when compared to tools like Claude Code. These coding agents are marketed as solutions to complete maximum work with minimum effort, making SolveIt seem unworthy of consideration.

My hot take is that people want to appear intelligent without doing the hard work, and tools like Claude Code make it more likely to achieve that goal. In practice, "vibe coding" shortcuts create long-term tech debt that's painful to undo. I find that even when trying to use coding agents responsibly, it's very easy to fall into a trap of letting them take control because of the dopamine hits created from seeing its output. Actual learning requires effort and much less instant gratification, and the SolveIt experience was a good reminder of that.

Old Habits Die Hard

As someone new to SolveIt, I had to unlearn bad habits I'd picked up from the ChatGPT era. Many people fell into this trap society-wide. We repeatedly ask AI to solve tough problems in one shot, resulting in long conversations and oodles of copy-pasted code. But since we're so focused on task completion, we didn't check the output and didn't learn anything. Early on, we bought into the idea that these models would solve all problems without oversight. But we now need a reality check. The models can easily struggle with complex problems, but breaking complex problems into small pieces works much better.

To begin deprogramming these bad habits, the course tested students on Advent of Code problems: fun, holiday-themed challenges that rely only on Python's standard library. By focusing on these problems first, instructors leveled the playing field so we could focus on problem-solving methodology, not technical complexity. At first I was getting comfortable using this method for the easier problems, but it was more difficult to stay on track when faced with something more challenging.

Advent of Code 2023, Day 5 was a problem about mapping seed ranges through conversion tables. I solved Part One with a straightforward brute force approach. But this wouldn't work for Part Two because of computational explosion. I used SolveIt to find a different approach, but initially failed. I got frustrated and leaned harder on the AI. We began going in circles, confusing each other. Finally, I asked, "Do you even know what you're doing, or are we just going in circles?" It confirmed it was clueless. I called it quits, thinking to myself "that's enough coding for today".

After taking a break, I returned with fresh eyes a couple of days later. I recommitted to applying Pólya's principles by reviewing the problem, working through examples by hand and starting from scratch. This reframing made me realize I had fundamentally misunderstood the second problem, which helped me course correct and re-solve it in SolveIt. This solution wasn't overreliant on AI and I understood every code component because I built it incrementally.

Getting My Hands (More) Dirty

Learning the SolveIt methodology on toy problems was one thing, but could I apply it to real-world projects that actually mattered? The course covered web development, APIs, databases, and more, encouraging students to work on projects that would test the methodology.

As a mini-project to test my mettle with web scraping, I decided to scrape Magic: The Gathering Online tournament results. I had no idea how to do this before the course, so I was learning as I went. The challenge was that data loaded dynamically with JavaScript, requiring me to learn Playwright and work through local environment issues. I approached each obstacle incrementally using SolveIt, eventually processing the scraped data into pandas dataframes for future analysis.

Jeremy mentioned the benefits of starting a blog during one lecture. This made sense to me because writing is thinking, and documenting your learning journey is worthwhile whether anyone reads it. I decided to build my own website as a capstone project applying multiple course concepts.

I used FastHTML for rendering HTML components in Python, MonsterUI for styling, and deployed on Railway with a custom domain. I added SQLite database integration and Postmark email workflows to challenge my ability with data management and unfamiliar APIs. This process took several SolveIt dialogues, but each component was built piece-by-piece and tested. Even today's coding agents couldn't one-shot my specific requirements and desires.

Having this first website up was extremely gratifying, as it was something I built with my hands! Better yet, I understood everything I built because I used SolveIt to enhance my learning, not outsource it. Now I can say I own a slice of the internet as the primary builder, and it's still functional today as you are reading this post!

The big takeaway was learning through the process, which SolveIt made possible. If I had to do this again, I'd have a semblance of what to do instead of being completely clueless.

Taking Back Control

Nine months later, I can't imagine building anything important without SolveIt because it changed how I approach problem solving. If this appeals to you, keep an eye out for the next cohort signup announcement. If you can't wait to learn more, here's a video of SolveIt in action.

I hope my experience has challenged how you think about AI-assisted programming. Ask yourself: Are you spamming ChatGPT or Claude to solve most problems? Are you actually reviewing and testing AI output, even for simple code? More importantly, are you actually learning anything from the code you're using? When you see unfamiliar AI-generated code, do you verify it exists in the documentation or check if it's hallucinating?

You don't need SolveIt to apply these principles, so don't use that as an excuse! Working in notebooks lets you build bit-by-bit and test as you go. The next time you're tempted to copy-paste 200 lines of AI code, ask yourself: do you want to deeply understand it? Or are you just hoping it works and that you never have to touch it again?

Thanks for reading!

Enjoyed this post?

Subscribe to get notified when I publish new content