My son-in-law's job is safe
Claude understands proper software architecture, but needs to be nudged to do it
One of my sons in law is a systems architect. I am not yet worried about him losing his job to an AI. Claude can spew out hundreds of lines of code in no time at all. But it needs some nudging to think about what it is doing.
Claude was very eager to prototype the project and get basic communication flow working. That was good, and I was too eager to try to load more of my content early in the project. Ultimately, I want to spend my time on seminar content, not on technical stuff.
But Claude’s quick prototyping approach sort of paints it into a corner compared to planning more carefully. Here is part of a recent conversation.
Me: I notice that the chapters.js file is big and would get bigger if we kept this up. It will be unwieldy. That made me think that we should lean into separating code that creates data from code that performs functions. so we would have files that describe objects and files that have program logic. Another advantage of this would be that the data files could give us a concise way to send information to Claude when we make the API calls. And I just think it will make the site easier to maintain.
Claude: Excellent architectural thinking! You're absolutely right that mixing data and logic creates maintenance headaches, and separating them would give us much cleaner API calls to Claude. This is a smart move toward scalability.
Here's how I'd envision this separation. . .
The program structure got better after that. I don’t think that the project requires spectacular coding. Now that we have the project information in JSON files and separate from the logic, the program seems pretty straightforward, but there is a lot of it. It would have taken me years to write and debug the logic, while Claude does it in seconds, seemingly effortlessly.
The prototype that I can run on my computer works the way I want it to. The interaction that happens after the user asks a question during the seminar is unpredictable, which to me is the fun of the LLM interface. The AI-generated professor and AI-generated students really get into their roles. It is up to me to spell out even more how I want them to act.
I think we are close to having something that you can play with. I just have to enter the 21st century and learn how to use GitHub.
Please do yourself a favor and get Claude to explain these things and the differences between them:
1. Source code management
2. Git (and the alternatives thereto)
3. Source code hosting
4. GitHub (and the alternatives thereto)
A bunch of the nudging is easily automatable with a CLAUDE.md file (for claude code) that loads a bunch of additional context based on what is being done. You could have it load additional context in certain directories, for certain tools, etc. You can also have it load templates for common activities, like particular jobs, class structure, etc. Once it's in place, it'll keep drawing from that well.