Names. Where would be without them? How can we get along without verbally differentiating between this thing, and that other thing, which is similar, but not that similar?
I always come back to patterns as an example. Because they have names, it increases the communication level, since we don’t want to describe and re-describe everything over and over again. When I say Visitor, I assume that people know what I’m talking about. Smart ones, of course, I don’t hang around with other kinds.
But we can go too far with it. Mocks, stubs, fakes, test doubles, impersonator (which is a self-initializing test double, if you didn’t know), and probably other sub-types. Sure there’s a difference, Martin Fowler said so.
With all due respect to Martin (I worship the Refactoring book), this is doing more harm than good. Categorizing is ok, but most people don’t have all the nuances in their heads. When they begin to read about unit testing, they find out there’s a big pile of things they need to learn. When I see a great pile of reading material in front of me, I’d probably won’t read it. I might discard the subject altogether since it’s obviously complex, and I don’t want to deal with it.
Yes, it’s a jargon. And for the few that can spend hours discussing the specifics of when to use what, it’s very impressing. But for making the breakthrough and getting people on board for your cause, simplicity is key.
Let’s use a simple language. When we need the little details, we’ll call, we promise.
So dear readers: Which ones do you use?