Design Patterns are problem specific templates developers have perfected over the years for writing correct and efficient codes. It encodes correct practices for solving a given piece of problem, so that a developer need not re-invent the wheel. MapReduce program bugs can be hard to debug – using well established Design Patterns can alleviate the pain.