Discussion about this post

User's avatar
Between Bronze Ears's avatar

I think an important realization for software development and AI is that AI compresses development, not code comprehension. A developer and YouTube influencer I follow once said that _the_ thing that made him tremendously valuable to one of his former employers is that he could sit down with stakeholders and iterate versions of software prototypes so fast that he often significantly changed the direction of a project before it even became an official design proposal. (My comment: Isn't that that supposed to be how agile development works?) AI has the ability to let more people do that exact thing -- iterate code at greater speed.

There is another half to the process that the developer acknowledged: with the mental map embodied in a prototype, he, as a software architect, could help drive the project to completion by understanding what parts of the prototype are incomplete, what parts need to be reworked, and what is needed for the application to function at scale. This is where AI is less helpful, because it only understands what has seen in its training data and the contents of the prompt. In fact, it can hinder (or significantly alter) this part of the process because it can generate thousands of lines of code quickly. For humans to comprehend those lines, they need to longer amounts of time reviewing the code to ensure that implementation choices the AI has made are acceptable. This reduces velocity. To do otherwise can turn a product code base into something more like legacy code -- parts of the system written in the past, that work (or at least pass tests) but no current employee fully understands.

There are those who say that this changes how software engineers should be trained. To keep the code comprehensible, developers need to become better design spec writers. Perhaps design spec readers is the better term, because AI can be prompted to write or modify existing specs before actually generating code. Engineers make sure that the AI shapes code correctly by critiquing and modifying the specs. This steps away from the "code as source of truth" approach that has prevailed in industry for a long time. While the best code should always embody that principle, a good spec makes an effective cheat sheet to understand how a particular 200 lines of code should work in the context of a much bigger picture.

The other part of it is testing. AI written code can be created so quickly that the bare minimum test for its acceptability is that it passes any tests bundled with it. Evaluating the scope and completeness of those tests is something human engineers will need to do.

No posts

Ready for more?