A thought about training future software engineers
You know I've been using Claude Code and friends extensively in my work. To the extent that most of the python that I generated in the last month was written by Claude Code. You might know that up to recently I was teaching at Brandeis University in the Computer Science department. While teaching software engineering and robotics - and this is true of the whole department - we spent a fair amount of time teaching students "program". Either of the main topic of a course, or as an incidental part of whatever the course was about.
Students would learn through lectures, reading and practice how to write relatively complicated programs in a variety of languages. But the practice, usually was to provide fairly extensive instructions in these "PAs" (programming assignments. Sometimes with elaborate templates or starter code, sometimes with elaborate testing harnesses. I felt that the gap in our teaching was in software "design" with a lower case "d". I don't mean more sophisticated concepts like patterns, or object oriented design, etc. Those of course are important. I meant starting with a blank piece of paper and a problem definition. The steps of understanding the definition, coming up with a reasonable approach, writing the first set of source files, functions, methods, classes, libraries to use, etc. Basically sketching out the approach.
Connecting the dots with Claude Code or "agentic AI" (is that what we call it?). We are all going to be using that for development if we are not yet. My insight or thought was that in that world, probably learning to write correct syntax and passing tests is far less important. What is far more important now is to write and understand requirements and turning them into a sketch of the approach. A sketch that is detailed enough and correct so that the agent can take over and start writing the code. And then understand enough of what is generate to check it and improve or refine it with the help of the agent.
We need to start changing the emphasis of how we train new Computer Scientists and Software Engineer because that is where they will get stuck!