Automated Program Repair
Automated Program Repair is happening. This new and exciting field is exactly what it sounds like- a system that helps developers build, debug, secure, and optimize programs autonomously. The concept is still mostly fictional, however there are some emerging technologies that embody the idea on a toe-in-the-water level. For example, "Facebook recently announced a tool that automatically suggests fixes for bugs found via their automatic testing tool for Android applications" (Le Goues, 59).
Automated Program Repair would lift a huge weight off of programmers' shoulders, which is manually fixing bugs and other issues in their program, which, depending on the complexity of the program, can take a huge portion of their precious time. This automation would exist at every step of the way, including understanding the problem, localizing the issue in the source code, develop strategies for fixing it, apply the strategies, and then test and analyze the results. Because there are so many steps, all of which can take an unknown amount of time, Automating this entire process would allow developers to be monumentally more productive. As a novice in software development, one of the first things that became clear to me about the field was there there will be bugs and then there will be more bugs. Generally speaking it is extremely rare that a program is written and it works perfectly every time, but if that were the case, we would be much more efficient with our time! This is what Automated Program Repair can potentially offer and why it is such an exciting topic.