3 ms·
No tool will ever successfully enforce discipline. If anything, it makes people more lax. But the end goal is not disciplined programmers! It is better, safer
by adamlett 9y ago
No tool will ever successfully enforce discipline. If anything, it makes people more lax.
But the end goal is not disciplined programmers! It is better, safer and more timely software.
Your argument applies just as well to safety equipment in cars and on heavy equipment, and you may be right that the reduced risk of being killed or maimed makes people more lax. But you can’t argue with the results: Far fewer people do in fact get killed or maimed!
- mrleinad 9y agoFewer errors get deployed to production code because tools help us catch them more often? Yes. Fewer errors get deployed to production code because programmers have a more rigorous discipline when creating software? Also yes. Which part should a teacher like Uncle Bob (I consider him as such) should care more about? People using tools or processes, or having them care about the discipline enough? I'll go with the latter. And if he seems dismissive about the former, is because he's trying to teach about discipline, which is far more difficult to teach, than to use a tool or follow some process.
- erik_seaberg 9y agoI complain about quality a lot. I might almost have this superhuman level of discipline on my best days, and only then if business allows me to indulge it. But think about the worst programmer you've ever worked with. In his hands the tool is a much bigger win.
- mrleinad 9y agoA tool is short term, shallow, and goal-oriented. Building discipline and good practices permeates a person's life far more deeply than tools.
- Illotus 9y agoBanking on discipline in any human endeavour seems to be fool's errand. You will get more reliable results by improving the environment, systems and tools. This can be seen in how much checklists have improved the quality and reliability in fields like medicine. We are in a field where we can literally codify the checklists to enforce them.
- adamlett 9y agoYou’re creating a false dilemma. It’s entirely possible to be a disciplined programmer and use good tools. And, yes, a teacher should care more about the skills than the tools, but Uncle Bob is actively against the tools, claiming that they impede learning the skills. Which is no more true than claiming that automatic transmissions or anti-spin in modern race cars impedes learning how to race.
- mrleinad 9y agoThere's no dilemma. I never said it wasn't possible. I'm saying that it's far more difficult to be disciplined oneself, than it is to learn some tools. Thus, it's far more interesting for a teacher to try and instill discipline in the students, than to teach the latest set of tools. The former is far more stable and will affect a person's behavior much more deeply, the latter will keep changing and can be added to a skillset within a week by reading some tutorials.
- mrleinad 9y agoI don't think he's actively against those tools. I think he's actively against claims that those tools actually solve the problems developers deal with, instead of uncovering the true behavior that lies beneath those problems.
- adamlett 9y agoNo, he really is against the tools. He is on the record as being opposed to static typing, optionals etc. And by the way, noone is making the argument that tools solve all the problems developers deal with. But to say that actually, they solve none of them, is foolish. Optionals, to take one example of something Uncle Bob is against, prevents a large proportion of what is probably the most common runtime error, namely dereferencing a null pointer. And yes, Uncle Bob is right that it comes at the small expense, which is having to think more carefully up front about your data and your abstractions, and there is no doubt he is right that some programmers will feel constrained and will find and use whatever mechanisms exist to bypass the safety that this feature offers. But in much the same way, there are also some people who feel constrained by seat belts, hard hats, helmets, dust masks etc. and choose not to wear them, yet you don’t find many people who would argue that this makes them pointless and generally a bad idea.
- s73ver_ 9y agoI want both: Better tools and more disciplined programmers. The tools will catch errors, and that's great. But they won't catch all the errors, whereas disciplined programmers will work to minimize the potential of them.