"Rubber Duck Development" or "Rubber Duck Debugging" has many names and is a method of troubleshooting/debugging code and systems. The concept behind it though is incredibly simple and makes a surprising amount of sense!
The concept behind Rubber Duck Development
The primary idea behind Rubber Duck Development is to obtain a rubber duck (it can be another in-animate object if you'd prefer - rubber ducks are most common though!), place it on your desk/computer and explain your code to it line-by-line.
In most cases, developers will only explain their code when they're debugging an issue. If a function isn't working as planned, you explain exactly how the function is supposed to work and then explain line-by-line how you've developed the function, to your rubber duck. By doing this, you then realize exactly where you went wrong in your code (which is usually a minor oversight/basic error) - without having to explain it to an actual person... saving you a little bit of dignity!
There's a great four point summary on rubberduckdebugging.com
Why should I do this?
You don't have to at all. There's no necessity or requirement to develop or build in this way. It's also not a methodology that is restricted to app/web developers. I've built systems and infrastructure this way!
However, I've found this method to be fairly useful - not only recently, but throughout my career. If you run into an issue, there's not necessarily always someone around for you to bounce your ideas or process off of. Some people also feel uncomfortable interrupting their colleagues, especially if the issue is minor.
Keep your rubber duck handy and not only do you not have to depend on having a colleague available. You can also save face by explaining your process to the rubber duck. Describe your/the business requirements to the duck and then in lay-mans terms explain what you've developed/built so far and chances are, you'll realize where you've gone wrong or what you need to do next!
Get yourself a duck!