4 ms·
Uncle Bob's rant on Jeff and Joel
- jd 18y agoThe podcast covers unit testing and code quality at 45 minutes in or so. I haven't listened to the entire podcast, so I may have gotten this wrong, but it seems like Joel and Jeff made only nuanced statements. No unqualified remarks like "testing is bad" were made, I think. Joel and Jeff mention that code quality doesn't matter much from a _business_ perspective. In Jeff's case - does the code quality of StackOverflow's internals matter? Probably not. There's no critical information there - so security is not an issue. It makes sense to me that time spent on features is going to be appreciated more by the users than time spent on code quality. As for the unit tests - I don't think they mean to say that unit testing is a waste of time in general. From what I understand they're saying that unit testing isn't "real actual work". You write unit tests to save yourself debugging and regression testing effort later. If you consider unit tests intrinsically valuable you may end up writing tests for every getter and setter, and that's just a waste of time. They also mention that unit-tests themselves have to be maintained and updated, and if architectural changes break a significant percentage of unit tests then you have to put a lot of effort in fixing your tests. The .NET framework was even mentioned as an example where high code quality is incredibly important and where all interfaces should be extensively unit- and regression-tested by Microsoft. > I’m starting to wonder if anyone should be using any of their products. So happy users of Fogbugz and StackOverflow should leave because Joel and Jeff are too pragmatic?
- azanar 18y ago> From what I understand they're saying that unit testing isn't "real actual work". You write unit tests to save yourself debugging and regression testing effort later. This sent off my faulty logical implication detector. Assuming that debugging and regression testing are work, doing something that isn't work right now to avoid having to do something more tedious and time-consuming that is work later on seems like a good trade-off to me. This seems like splitting hairs over the definition of work, and worrying about semantics rather than the end result. > Joel and Jeff mention that code quality doesn't matter much from a _business_ perspective. Yikes. This reasoning scares me. I can understand the business not caring directly about the quality of code, in that people working from that perspective would go in and start doing code reviews. But indirectly the implications are huge, and any business man who would claim not to care about the code base is really saying to me they don't care about the longevity of their business. The success of the business is directly tied to the ability of the developers to continue making things that people want, and this is way easier and faster when they aren't consistently confounded by the code.
- wyday 18y ago"Uncle Bob" doesn't provide any really provide proof for his argument any more than Jeff & Joel did. He says "The vast majority of the code I write, I write test first. (And no, Joel, this isn’t a waste of my time.)" But how do you measure wasted time. Or conversely, how do you measure success? Jeff and Joel have in the past measured success by user base size and profit. "Uncle Bob" doesn't define success or good use of time.
- Encosia 18y agoBob's discussion of the SOLID principles on Hanselminutes (which is what Jeff and Joel are referencing) was pretty good. Jeff and Joel started by talking about the Bob interview, but then went on to criticize the dogmatic types more in the abstract than directed at Bob. At least that's how I took it. Seems like their arguments and rebuttals crossed in the mail. Nothing to see here.
- spolsky 18y agoI'm pretty sure Uncle Bob is misrepresenting what we actually said, so I transcribed the ten minutes or so from the podcast that he's upset about here, so you can judge for yourself: http://www.joelonsoftware.com/items/2009/01/31.html http://www.joelonsoftware.com/items/2009/01/31.html
- brentb 18y agoI agree with Joel here: Bob is being unfair. Here's what I heard Jeff and Joel say when I listened to their podcast: Quality matters, but there are other things that also matter, such as actually getting working code written. Some of us (and I've personally struggled with this for a long time) have a hard time letting go of our quest for perfection and settling for shipping code that's imperfect but works. When Jeff says that "quality just doesn't matter that much," what I took this to mean is: quality matters, but it matters less than we sometimes feel like it does. And that doesn't mean he's condoning writing crappy code; he's simply saying that we tend to overvalue this abstract concept of quality and that can have a crippling effect on our productivity. Joel focuses on dogmatic adherence to development methodologies/principles as an example, specifically testing. I got the impression that he thinks testing is great and it has its place in the software development ecosystem. It tends to increase software quality and there are certain types of software for which it is really, really important (Jeff mentions framework code as an example). That said, taken to an extreme, testing can get in the way of getting things done... getting working code written and out the door / live on the server / whatever. It can also get in the way of modifying working code, as intentional changes to the way that code works always breaks some percentage of your unit tests, just as a regression will. And while catching unintentional regressions is great (and one of the best reasons you should unit test), constantly having to rewrite your tests every time you change the behavior of an internal class can be a real drag on your productivity. And that can be bad. The key is to avoid being overly dogmatic in your adherence to development principles. Instead, be pragmatic and find a balance. Test enough to ensure adequate quality (whatever that happens to be for your product), but no more. Otherwise you're just doing yourself (or your employer) a disservice.
- spolsky 18y ago
- kungfooey 18y ago#38 was the first podcast I had listened to, and before doing so, I had not heard of Uncle Bob. Now having read his blog post, he comes across as a pretty sour fellow with a bone to pick. As others have pointed out, his nitpicking at this particular statement is not very fair. He also implies that J and J give bad advice and shouldn't be trusted with your business, which just reinforces the idea that they guy maybe just has a chip on his shoulder. He appears to be selling his services as a consultant, so it makes economic sense for him to belittle his free "competitors" with this sort of nonsense. I don't buy it.
- steven512 18y agoI agree with Joel's position wholeheartedly. I've read Robert Martin's book "Agile Software Development, Principles, Patterns, and Practices". Referring to the book, which demonstrates the SOLID principles, it's not that you can't do it that way and be successful, it's that a pure object oriented approach is not necessarily the best approach to building every kind of application. He says in his book regarding an example implementation of a payroll system, that we are paid to create "behaviors". I disagree. This detailed critique explains it well: http://objectmix.com/theory-concepts/10776-critique-robert-c-martins-agile-principles-patterns-practices.html http://objectmix.com/theory-concepts/10776-critique-robert-c...