Editing 2021: Software Development

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 16: Line 16:
 
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.
 
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 {{w|Npm (software)#Notable breakages|March of 2016.}}
+
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 [https://en.wikipedia.org/wiki/Npm_(software)#Notable_breakages 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.
 
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.

Please note that all contributions to explain xkcd may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see explain xkcd:Copyrights for details). Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel | Editing help (opens in new window)