The shotgun approach is best described as shooting first at a target without knowing where or what the target really is. For the sake of this conversation, let’s say the target is a defect in an application. Often it seems like the shotgun approach is practiced by reckless and or inexperienced developers who really don't have a clue about where to start solving a problem. It is also common among developers who do not have a solid coding standards or lack a proper software development methodology to guide their workflow.
Let's get something perfectly clear. While the shotgun approach can eventually hit the target, it is rare and usually is very costly in regards to productivity. To compound the problem, the loss in productivity in a team of developers with a shotgun approach goes up at an exponential rate for every one of the developers involved. Think of it this way, the shot pattern gets wider for every developer that utilized this approach. In addition, the wider pattern doesn’t mean that you are more likely to hit your target; quite the contrary. The number of potentially invalid ideas that these developers will end up exploring will be quite substantial.
So what can you do to avoid the shotgun approach? First and foremost, always approach the solution from the simplest angle possible. Second, keep to the core principles of software development. This means different things to different people, so in the future I’ll will address what I believe to be the guiding core principles for every professional developer. Third, remain calm. When all heck is breaking lose, it is very easy to get caught up in the firestorm of the situation and not approach the problem with a clear head. Finally, do not let management distract you from the first three.
If you are in management or a project lead:
I understand that the pressure on us can get intense, but please do your best to not distract your developers with rabbit trails. The developers we lead generally feel an obligation to at least consider our ideas. We can try to steer them in the right direction. However, placing more pressure on our developers and having them explore rabbit holes will only exacerbate the problem we are trying to deal with.