I enjoy working towards finding ways of making AI more helpful, and that’s part of my job at work. Unfortunately, it feels like I’m constantly at war with everyone over the most effective way to do it. Management is looking to get 3x, 5x, 10x productivity boosts out of it. We’ve got AI reading the technical docs (which are partly generated by AI), requirements, and acceptance criteria, generating stories, implementing stories, and checking itself.
And then I’m supposed to review the output to see if the code looks good. Well shit, the code looks good, but I don’t really know what the fuck was attempted. Like the documentation is hard reading, and I have to evaluate 13 classes of new code and tests. And every line of it looks like good code. I might as well be reviewing code for my bank — I don’t know exactly what it’s supposed to be doing or the constraints or business reasons, but the code looks clean and well structured and written to good standards.
I’m trying to find the language to communicate to folks the right way to think about this. I’ve landed on this: Code is the most expressive version of telling a computer what to do. When you use natural language, there are necessarily ambiguities about what we are wanting to tell the computer — ambiguities which require interpretation.
So when you read AI written code, you aren’t just reading AI implemented code (which is actually well written for what it is), but that implementation is based on an AI making tens or hundreds of tiny decisions you don’t see about what you mean to be done. The code hangs together based on the decisions that were made — decisions that are opaque and unquestioned; questions that undoubtedly would’ve led to deep thinking and discussion with the team if I knew about them.
Anyway there’s this mindset in business: people are resources. They are means of turning requirements into code at a certain rate. I think this leads to the idea that individual expressions of thought or opinion are not valuable or are in fact even harmful. But these micro-decisions about what intent is and how to express it in code are where the magic happens. And without taking the time to think about those decisions, what am I evaluating code on?
It looks pretty and it compiles and it does what it set out to do in the story. And then I think you find it elegantly solved the wrong problems while ignoring things that really matter — things that aren’t expressed in code.
Shit. I ranted back rather than just making a little comment but it can be hard not to have an outlet at work to share these ideas because I can’t express too much disagreement with leadership lest I be seen as not a team player. Like I want to find ways to leverage AI for the most benefit and the least cost because it’s a hard puzzle to solve and I love solving such puzzles, but management comes along with MOAR AI! It doesn’t scale that way fuckheads! Now fuck off and let me see if I can bump productivity gains from 20% to maybe get another 5%. It’s not sexy but it’s real unlike your vibe-coded monstrosity.
I think you’re spot on though because we’re facing the same thing. Our team has realized code is now the easy part, it’s everything else that is difficult - and maintaining that code going forward is a separate item as well. Trying to think of metrics for how brittle code is, and defining patterns. One thing I’m still not happy with any of the models is it’s architecture over a codebase. All of them are great at patches and bugs, but shit at defining decent patterns, so I find myself writing a lot of scaffolding and designs of how the could should flow, and I have a feeling that’s where my jobb is heading. I think that’s what you’re referring to
I enjoy working towards finding ways of making AI more helpful, and that’s part of my job at work. Unfortunately, it feels like I’m constantly at war with everyone over the most effective way to do it. Management is looking to get 3x, 5x, 10x productivity boosts out of it. We’ve got AI reading the technical docs (which are partly generated by AI), requirements, and acceptance criteria, generating stories, implementing stories, and checking itself.
And then I’m supposed to review the output to see if the code looks good. Well shit, the code looks good, but I don’t really know what the fuck was attempted. Like the documentation is hard reading, and I have to evaluate 13 classes of new code and tests. And every line of it looks like good code. I might as well be reviewing code for my bank — I don’t know exactly what it’s supposed to be doing or the constraints or business reasons, but the code looks clean and well structured and written to good standards.
I’m trying to find the language to communicate to folks the right way to think about this. I’ve landed on this: Code is the most expressive version of telling a computer what to do. When you use natural language, there are necessarily ambiguities about what we are wanting to tell the computer — ambiguities which require interpretation.
So when you read AI written code, you aren’t just reading AI implemented code (which is actually well written for what it is), but that implementation is based on an AI making tens or hundreds of tiny decisions you don’t see about what you mean to be done. The code hangs together based on the decisions that were made — decisions that are opaque and unquestioned; questions that undoubtedly would’ve led to deep thinking and discussion with the team if I knew about them.
Anyway there’s this mindset in business: people are resources. They are means of turning requirements into code at a certain rate. I think this leads to the idea that individual expressions of thought or opinion are not valuable or are in fact even harmful. But these micro-decisions about what intent is and how to express it in code are where the magic happens. And without taking the time to think about those decisions, what am I evaluating code on?
It looks pretty and it compiles and it does what it set out to do in the story. And then I think you find it elegantly solved the wrong problems while ignoring things that really matter — things that aren’t expressed in code.
Shit. I ranted back rather than just making a little comment but it can be hard not to have an outlet at work to share these ideas because I can’t express too much disagreement with leadership lest I be seen as not a team player. Like I want to find ways to leverage AI for the most benefit and the least cost because it’s a hard puzzle to solve and I love solving such puzzles, but management comes along with MOAR AI! It doesn’t scale that way fuckheads! Now fuck off and let me see if I can bump productivity gains from 20% to maybe get another 5%. It’s not sexy but it’s real unlike your vibe-coded monstrosity.
I think I might have gone from rant to Ted Talk.
I think you’re spot on though because we’re facing the same thing. Our team has realized code is now the easy part, it’s everything else that is difficult - and maintaining that code going forward is a separate item as well. Trying to think of metrics for how brittle code is, and defining patterns. One thing I’m still not happy with any of the models is it’s architecture over a codebase. All of them are great at patches and bugs, but shit at defining decent patterns, so I find myself writing a lot of scaffolding and designs of how the could should flow, and I have a feeling that’s where my jobb is heading. I think that’s what you’re referring to