Live data from Hacker News

Uncle Bob and Silver Bullets

hillelwayne.com

31–40 of 228 posts

Re: Uncle Bob and Silver Bullets

#31
"Don't test the UI" is not equivalent to "No end-to-end testing." The XP people, for example, prefer to make UI a thin shell over a programmable interface that can be easily tested. Then, visually confirming the UI operates the interface is enough.

I admit I don't read much Bob Martin, but does he say you shouldn't use automated functional testing, e.g., Fit or Cucumber?

Re: Uncle Bob and Silver Bullets

#32
nah.

I think you could quite easily quantify the effect various tools have on a code base; adding unit tests, using a repl, static vs. dynamic etc. on the various aspects of your code:

- How quick/easy is it to add new features?

- How often do you add new bugs?

- How long does it take to fix bugs?

...but I think you could also look at the impact individual bad actors (the 'dont care' programmers) have on the same code base.

Now, because the 'dont care' programmers hack out rubbish at the speed of light, it may superficially appear that the net impact on the code base is balanced; more features, more bugs... but that rubbish slowly spreads out into the code base, and incrementally trigger a cascading bug creation rate for all the programmers.

Now, if you want to suggest that tools can add enough value to overcome the negatives from having rubbish programmers, I'm all ears, because I've never seen a tool that can do that. The bad programmers just abuse the tools or ignore them.

So... in that context, I think its fair to say, more tools really achieves nothing much, when bad programmers and bad programming practice results in such catastrophically bad outcomes for software.

Maybe, if you can make your tools nice enough and add enough processes you can kind of force bad programmers up a notch. I appreciate that; but the question really is, why are there so many programmers who are so rubbish? Why do they never seem to get better? Why don't they care?

Do you really think you engineer a solution to that? ...because I think it's a social problem, not a technical one.

Maybe some tools can help, and maybe not everything Uncle Bob says is gospel... sure; but I think this is just stupid:

> Uncle Bob gives terrible advice. Following it will make your code worse.

I think history has objectively shown this is false; but of course, you're welcome to have your own opinion without any substantive basis other than that opinion itself if you like.

Re: Uncle Bob and Silver Bullets

#33

Here is the post this post is in response to: http://blog.cleancoder.com/uncle-bob/2017/10/04/CodeIsNotThe... I don’t interpret the original piece as saying any of these tools and techniques are not useful. I interpret it as saying average developer mindset needs to shape up. I tend to agree. I work with guys who believe in formal reasoning tools (we collaborated with Amazon’s ARG for example[1]), and use all these t…

> First, do no harm, then use like Light Table, Model Driven Engineering, and TLA+.

Looking at some of Uncle Bob's other posts linked from this article, I don't think that's what he's saying. He (Uncle Bob) goes on and on about discipline, but at the same time dismisses anything that might actually force programmers to be disciplined, like type systems that force you to check references for null before dereferencing them.

For example, in http://blog.cleancoder.com/uncle-bob/2017/01/11/TheDarkPath.... he asks: "It is very risky to have nulls rampaging around the system out of control. The question is: Whose job is it to manage the nulls. The language? Or the programmer?" and goes on to answer: "Defects are the fault of programmers. It is programmers who create defects – not languages." Then he goes ranting about programmers who don't test their code, and if only they tested, such type systems would not be needed.

Again: He dismisses the one thing that actually forces programmers to be disciplined and instead just wishes (against all evidence) that they were disciplined. To me, he seems to be saying "First, do no harm, then use tests, then nothing."

Re: Uncle Bob and Silver Bullets

#34

Earlier quoted context omitted.

In fairness, Joel Spolsky has done a lot of great work as a founder - founding Stack Exchange being the most notable — but is any of his personal work open source? We don’t know how well written his code is. Twitter is successful but their code has reputation for being horrible.

It's not open source, but he led Excel development didn't he? I can use that and appreciate that it's good quality software so I want to hear about how he managed that. I don't know if I'm just ignorant, but to be honest I have no idea if people like Martin and Fowler can program at all or not!

[deleted]

Re: Uncle Bob and Silver Bullets

#35
post #2

Well written! I’ve always cringed when I’ve read anything that Uncle Bob writes. It almost seems like his entire existence depends on the acceptance of unit testing, and the unjustified dismissal of tools, especially type systems, seems to me something a only a novice would do when evangelizing their favorite lang (we’ve all been there, right?...), until they get more experience with other methods and approaches.

I never understand why Martin gets the kind of attention he does. As far as I can tell, the only significant achievement he's done for the technical community is the Agile manifesto. Outside of that, he's a typical consultant in that he's got books, training courses, etc. However, I have yet to find a significant publicly known project he's been involved in where he's had to put his principle into practice.

I have the same question. Not, "what makes Martin interesting or worthwhile", which is a totally subjective question, but, "what are the most compelling projects whose success he enabled?".

That seems like a simple question we could actually answer here without having loud debates about unit testing or whatever.

Re: Uncle Bob and Silver Bullets

#36

Earlier quoted context omitted.

In fairness, Joel Spolsky has done a lot of great work as a founder - founding Stack Exchange being the most notable — but is any of his personal work open source? We don’t know how well written his code is. Twitter is successful but their code has reputation for being horrible.

It's not open source, but he led Excel development didn't he? I can use that and appreciate that it's good quality software so I want to hear about how he managed that. I don't know if I'm just ignorant, but to be honest I have no idea if people like Martin and Fowler can program at all or not!

No, Spolsky didn't lead Excel development. He was a PM.

I happen to like Spolsky a lot but most of the career success we've actually seen from him is managerial, which is not unimportant, but it's not the same as being a dev lead on Excel.

On the other hand, Spolsky's programming advice is much more broad-spectrum and rooted in common sense. I'm not sure you've ever seen Spolsky dismiss a whole category of languages or correctness tools, for instance.

Re: Uncle Bob and Silver Bullets

#37
Not directly on topic - but I was a hobbyist silversmith as a teenager. I learnt many of my skills from a stern old German bloke at the silversmithing club.

He liked to say "Gutes Werkzeug ist die halbe Arbeit" (or sometimes: "Gutes Werkzeug, bessere Arbeit"). A good tool is half the work, or: Good tools, better work.

This idea has informed my coding decisions too. Evaluating the worth of a tool is more complex in software than in silversmithing, though.

Re: Uncle Bob and Silver Bullets

#38
post #7

Earlier quoted context omitted.

It's hard to build your consultant image by telling people that multiple methods and tools might work. It's easier to market a simple cure. Also, the point to "stop making shitty software" is not the same as "stop making mistakes". You can ship high quality software even while being human, it's just slower and more costly. And while I agree with the article in general, I do believe the current balance has shifted tow…

> It's hard to build your consultant image by telling people that multiple methods and tools might work. It's easier to market a simple cure. The thing about these middlebrow dismissals is that they work the other way around: "It's hard to build your consultant image by telling people that they need self-discipline and rules. It's easier to just sell them on tools that will fix the problem."

I just don't think it's likely that the real reason most software is crappy, is because nobody thought of extending unit test coverage yet. Selling tools here is not "the other way", it's the same problem.

What if the problem is bad management? Or low experience/expertise in general? All of these methods and tools are only optimizing locally, and cannot help the root causes.

Re: Uncle Bob and Silver Bullets

#39
I think the author completely misses the point of Uncle Bob's article for two reasons.

First, in "Tools are not the Answer", it is clearly stated that tools are valuable.

Second, Uncle Bob's article is not telling programmers to be better. It is telling programmers to be professional. It is not like telling drivers to drive better. It is like telling drivers to stop texting while driving.

Re: Uncle Bob and Silver Bullets

#40

Earlier quoted context omitted.

I never understand why Martin gets the kind of attention he does. As far as I can tell, the only significant achievement he's done for the technical community is the Agile manifesto. Outside of that, he's a typical consultant in that he's got books, training courses, etc. However, I have yet to find a significant publicly known project he's been involved in where he's had to put his principle into practice.

There's definitely two types of very well known speakers. People who have worked on some really notable project. Linus Torvalds, David Heinemeier Hansson, Joel Spolsky and so on. I know these people are worth listening to because I can see that their code is a success. Then there are people who I have no idea what they have ever written at all. Robert Martin, Martin Fowler and so on. I don't know if I should listen t…

> People who have worked on some really notable project. Linus Torvalds, David Heinemeier Hansson, Joel Spolsky and so on. I know these people are worth listening to because I can see that their code is a success.

I agree with your examples, Linus Torvalds in particular. However, I would not consider Mark Zuckerberg, Steve Jobs or Bill Gates worth listening to on a technical level just because their products are a success.

Post reply on HN