For me, if I can make a kickass testing system that people love so much that they actually build features with it and it’s not an afterthought, then maintenance becomes much easier. It’s often called test driven development but I’ve rarely seen it done in such a way that the dev ex is good enough for it to work.
But say you have that. Then you have great profiling. At that point you can measure correctness and performance. Then implementation becomes less of a focal point. And that makes it a lot easier to concede coding to ai
Yes, that is how I see it too. What I would add is - intent testing - collect user messages, and check them against executed work from time to time. Every ask must be implemented and tested, every code must be justified by a user message.
Which to me is why it’s so important to build cooler and crazier shit. A web app to facilitate some business process was always boring, but at least you got to code. Now it’s just boring. The thing I’m building right now is pretty wild, involving computer vision, robotics, and surgery. It’s super complex and without AI, the development would have bankrupted us. But because of ai, we did it and the product is going to FDA this year.
I wasn’t talking about unit tests. Was talking about tests that accelerate development, where you can setup everything and test a feature by just pressing enter vs clicking around or whatever. The tests are how you build features, so I don’t consider that boring
There is problem solving in coding, but the bigger problems exist at a higher level and that’s still on you to solve.
Also I’ve been messing with “ai-only” files recently. You make a markdown file that basically tells it what the file does, how it’s used, and point to an API contract in some other file. Then you can run async ai that will try things and only submit a PR of all the tests pass and the perf improves. The files become almost unreadable to be, but I decided to embrace it because they were already unreadable. But so is the output of, say, the protobuf code generator and I never had a problem accepting that
I also love to build. And I'm mourning the loss of coding as a craft that is sought after and well compensated. I like to get my hands dirty and it feels wrong that I can basically write specs and the real labor that I love is done for me. But it also allows me to build some pretty amazing stuff that I would have never been able to do otherwise. So I'm slowly accepting it and want to come up with ways to coexist. I code for several hours a day because and will continue to do so because even after 36 years I still get joy and comfort from it
Validation plans and acceptance criteria aren't tests. Those aren't "boring" - they're the most important things in order to make sure your software actually does what users need.
Translating those into executable tests is a different process entirely, and one that in the past has been done (often quite poorly) by humans, and it's actually pretty well suited for AI.
But say you have that. Then you have great profiling. At that point you can measure correctness and performance. Then implementation becomes less of a focal point. And that makes it a lot easier to concede coding to ai