I thought I was pretty clear about that. I get pissed off at terminology for the same reason I get pissed off when Microsoft moves around the ribbons an icons and sells people a new version of Office. It’s the same as before, but sold as something new, and in the case of software neologisms the new ones are less exact than before, often to the point of uselessness. “Refactoring” is just a buzzword, meaning whatever the speaker wants it to mean at the moment.
I would mind less if they settled on one meaning instead of just UncleBobbing (good one) me with bullshit.
“the idea that developers write their own tests” — don’t think about it as tests of implementation. It’s more like “custom automated verification” of contracts only. It doesn’t prove program is correct. It’s more of a smoke detector giving you early feedback when changing implementation violates assumptions other components rely on, so you don’t have to wait until blackbox testing reveals issues.
That kind of breakage is something I never experience because I follow OOP principles; I’m a convert to OOP because in the mid 90s I took on a telephony project at Intel that I was absolutely sure was way over my head, expecting to get fired after a few months but get caught up on my bills until then .. instead I did such a good job decomposing my component into objects that the Intel managers were impressed enough to relieve me of most meetings, which at Intel is like being crowned Pope.
I’m not arguing against testing. But I’ve written several articles on this that I won’t rehash here. Please read my two on TDD.
Ah, no. You’re thinking of implementation specs, which almost nobody writes anymore. Requirements specs change occasionally, functional specs are only slightly more volatile, implementation specs are too volatile to maintain, and the reason for that is the same as my argument against pre-implementation test development. We discover things in implementation nobody anticipated.
In practice unit tests end up overly consuming indeed because people don’t know what they should write tests for, so they just test everything mindlessly like there were no tomorrow. Gurus didn’t tell them there were limits, so they just keep moving on and on.
Trust me we have no argument here. The people who say that anything short of 100% coverage is dereliction of duty (yes I have actually seen it phrased this way) are nutjobs, like Second Amendment lunatics who can’t go five sentences without steering back to the RKBA.
I’ve seen people developing e.g. complex SAT solvers without unit tests. Every time there’s a bug they have to trace through most of the codebase to pinpoint one little typo. The amount of time wasted for stone-age-like debugging is order of magnitude higher than time spent on succinct and focused unit tests that reveal issues early. It’s also easier to debug through failed unit test than blackbox testcase.
I do tracelogging, I find unit tests to be too much work and of little value. Yes they can reveal an error early but I almost never use a debugger once I know a codebase; I can read the code and see the error and got from bug discovery to propping the hotfix to production in minutes.
Stone Age debugging? Hyperbole much?
Tracelogging also serves as most commenting too.
I have better time management skill than that.
What I see happening in software is that concentration and focus have left the building; too many developers are gamers with the attention span of horseflies, they can’t write good code because they can’t concentrate and have never known a Flow condition so they think, and have plenty of support in this, that testing is more important than development.
Oh, I’ve run into the Uncle Bobs. Just look at my block list on Twitter. The ones who say that my desire for an uninterrupted workday is a sign of mental illness or that my preference for large responsibility/ownership and my capacity for detail represent selfishness and prima donna hateur. I don’t pay a lot of attention to them. I was a better developer two years in than most of them will be thirty years in. They can’t concentrate.