Yak shaving
In the examples provided in previous chapters, you may have noticed there was a lot of moving around of code that didn't seem to have any immediate benefit. In TDD, especially at the beginning of a project, some work must be done that doesn't seem to make much sense. Tests are written that do nothing more than proving the existence of a class or method. The code is refactored in a way that only pushes hard-coded values into another dependency. This means that more files are created, and you may find yourself writing a significant amount of helper classes. All of these activities are referred to as yak shaving.
Yak shaving has two meanings that pertain to software development. The first and the one to be avoided is writing things that aren't needed as a means of procrastination. The second is the act of doing all the things that must be done to prepare the code. The difference between the two is a fine line. The side of the line you are on is determined by your intent in writing...