Many fans of the Star Trek franchise are familiar with the Kobayashi Maru. In the fictional series, cadets are taken through many training exercises designed to test their intelligence and leadership skills. One of the most difficult tests is the Kobayashi Maru, which is a test designed to be unbeatable. The test pitted an unwitting cadet as a starship captain on a mission to save a crippled vessel in enemy territory. The computer simulated exercise was designed to counter any actions the captain attempted and would always end in the destruction of their ship and the vessel in need of help. The only person to pass the test was a young Captain Kirk who reprogrammed the computer to allow him to defeat the no-win scenario. Although we can’t correct life’s toughest problems with a few keystrokes, we can make changes which allow us to redefine our problems which allow a new solution to be worked.
Agile software development can be considered as operating within the same boundaries of the fictional test. When there are changes to be made, they are designed, applied, tested, and given to stakeholders for their approval. These iterations continue until a workable product is created. In fact, continuous planning, collaboration, design, development, and testing occur until an acceptable product is produced. Instead of relying on the old methods of following one plan until the end, Agile practices allow developers to change the game in midstream, adapting to new challenges, without having to go all the way back to the drawing board. If a team member has an idea, it can be integrated into an iteration of code at the time of discovery instead of wasting time and money redesigning it from the very beginning of the process. Much like the young Captain Kirk, by constantly correcting issues, thereby redefining the code and the problem, developers are able to quickly adjust to programming problems and stakeholders’ changing requirements.