
Agile Tips
Unlocking Agile Wisdom: Insights from Decades of Experience. Scott Bain is a 44+ year veteran of systems development.
Agile Tips
#70-AI: A Tool For Product Development
This episode will use software development as an example of how AI can be used to make the product development process more efficient, and less wasteful. This is an example which I believe could apply to any kind of product.
AI - A Tool for Product Development
I spent the first half of my career as an automation specialist in the field of broadcasting. I built systems and networks, robotics for television cameras, satellite downlinks and so forth. But a big part of my job was creating software because at the time no industry-specific software existed.
AI is more than a software tool, but when we examine its role in software development, we can come to understand one aspect of its proper use.
When I was coming up as a young developer I wrote code in a very simple text editor. The tool I used had no sense of the syntax of the language that I was using, did not offer anything as simple as spell check, could not suggest what options I had as I wrote, and basically did nothing to help me. Back in those days I used the compiler and the linker to check my work, which was not a particularly good idea because of the speed of computers at the time. It could take 15 to 20 minutes for my code to compile and link. If the compilation stage failed, I would never get to the link stage, and so forth.
I would usually refill my coffee cup when waiting for this lengthy process, which is why I ended up drinking way too much coffee in my youth.
But for a long time, that's what was available.
Then integrated development environments, or “IDE”s began to emerge. The first one I used was something called Visual Cafe, but once the IDE concept was offered to the industry, we never looked back. These development tools would color code what I typed to make it easier to understand later, would suggest in many cases what the next legal options would be given the syntax of the language, and would highlight in red any mistake that I had made along the way. This meant that I could avoid certain errors entirely, and those that I made anyway would be revealed to me before I tried to run the code through the compiler and linker. I got my caffeine consumption under control too. 🙂
This was a game-changer for the industry, but it did not stop there. As the IDEs became more sophisticated, we were given the opportunity to design things like a graphical user interface by dragging and dropping premade widgets onto a form, and then the tool would write the code that would generate that interface. This meant that as a developer I would not have to figure out whether a text box should be 78 pixels wide or 79 pixels wide then correct it later when it did not line up properly. Such twiddly little details are things that human beings are not particularly good at (and are mind-numbingly boring to do), but computers are excellent at.
Soon other things were added to the capability of the IDE. One could graphically create database structures and network connections where, similarly, the code would be written behind the scenes by the tool.
This led some to believe that software would eventually be created by non-experts, because they would be able to use these tools to enforce and ensure the correctness of the code. The only problem I noticed with that was that the actual code written by the IDE was not particularly high quality by the standards that I'd come to expect of myself. I was faced with the choice of cleaning that code up, which is called refactoring, or separating the code I was going to maintain from the code that I was going to allow the tool to maintain, which is an architectural approach.
By using a mix of these techniques, I could obtain the maximum value from what the automation could do and what I could do given my experience and knowledge. My point is that I think AI as a development tool is a profound new step in this direction. Just as the IDEs made me significantly more efficient as a developer, I think AI will also increase the productivity and success rate of the human beings that use it to develop software.
But I have used AI tools to generate software, mostly for experimental purposes since now I am mostly a teacher and a consultant, and I have to say that from my professional view the code is not particularly good. I'm sure that will change, but my point is that I am looking at the same choices that I did previously. Do I take the code that AI creates and refactor it to something more professional, or do I separate the handcrafted code from the generated code and allow the AI to maintain the latter on its own? I think that is something one has to decide on a case-by-case basis.
So at least in this regard I don't think AI changes the game differently than the expert system called the IDE did, it simply does so to a greater degree, and perhaps to a better degree.
Next week I will examine another trend that happened in the past in our industry and relate that to the presence of AI. I’ll see you then!