Software Development
Software Development
[Cueball and Hairy are standing together and Hairy holds a power tool in his hands.] Cueball: We need to make 500 holes in that wall, so I've built this automatic drill. It uses elegant precision gears to continually adjust its torque and speed as needed. Hairy: Great, it's the perfect weight! We'll load 500 of them into the cannon we made and shoot them at the wall.
[Caption below the frame:] How software development works

Software development is often characterized by graceless solutions to rudimentary problems. Cueball has built an elegant drill (function) that can adjust torque and speed as necessary automatically to fulfill his requirement of 500 holes in the wall. Hairy , in a categorically inelegant solution, loads 500 drills into a cannon and shoots them at the wall. This solution, in reality, would entail too many ludicrous safety problems to execute, but in software, the implications are only really bad code .
The casual disregard for the software itself is reminiscent of the idea of cattle not pets when deploying to servers.
This resembles assigning two different software teams to resolve different parts of a problem and of making the independent tools collaborate to form a fluid solution. The so-called "drill team" is given the task of making the part of the system that makes a hole in the wall. The cannon team was given the task of making the part of the system that aims what the drill team produces at the designated place on the wall and subsequently drills the hole. The drill team assumed that the aiming device would merely position their portion on the wall allowing it to make the hole, but the cannon team could not make assumptions about how the drill team would generate holes - they needed to make something that could use whatever the drill team produced to make the holes, thus making a cannon, so they could ensure their success.
The title text is a joke about how often in software the best solution to a problem is general rather than specific. See for example developers using Ruby on Rails (a full web framework with support for emails, templating, and web sockets) for a simple API-only service. They only need a very small part of rails (the hole drilling part), but end up with the whole framework anyway due to design limitations.
Another explanation of the title text is that software development is also often characterized by complexity and unintentional interdependence between different modules of code.  It is an unending source of frustration for coders that a seemingly minor change to code can cause major changes to how the program works, including changes seemingly unrelated to the specific code that changed.  A similar problem is when a line of code that “should be” unnecessary (according to the rules of the programming language) ends up being essential because the program will not work if the code is cleaned up and the line removed.  A final factor is that coders often write a particular function once in the first module, and then call back to that function when necessary in subsequent modules rather than rewriting the function over and over again.  In that case, the first module cannot be eliminated, even if it is no longer necessary, because then all of the calls to the original function would be null, and the rest of the modules could not work.  This can happen not just within programs but across them, as much software on the internet relies on large collections of program modules in public or open source software databases.  When a module goes missing it can have wide ranging effects, as seen in March of 2016.
In the context of the comic, it could be that the code for the cannon was written to check if it is “loaded” before it does anything, so the drill code is still needed to get the cannon to move on its motorized base and make the holes.  Or the code for the drill defines an obscure variable that is used by other code for the cannon or its base, so “removing” the drill code would cause the cannon to “crash” and not operate.
[Cueball and Hairy are standing together and Hairy holds a power tool in his hands.] Cueball: We need to make 500 holes in that wall, so I've built this automatic drill. It uses elegant precision gears to continually adjust its torque and speed as needed. Hairy: Great, it's the perfect weight! We'll load 500 of them into the cannon we made and shoot them at the wall.
[Caption below the frame:] How software development works
