

The DHH Problem - floehopper
http://codon.com/the-dhh-problem
Slides and audio from a lightning talk by Tom Stuart at Scottish Ruby Conference 2014.
======
ChrisGaudreau
> Because DHH is just one person. And he only has DHH's experiences.

Yep. Uncle Bob is one person, too. tl;dr Think for yourself and don't listen
to somebody just because they hurt your feelings.

> To pick a topical example: Is TDD hard in Rails apps because TDD is dead or
> because Rails makes TDD hard?

This is a misrepresentation of what DHH has said [1], which is that strict
adherence to TDD can make your designs worse:

> _Over the years, the test-first rhetoric got louder and angrier, though.
> More mean-spirited. And at times I got sucked into that fundamentalist
> vortex, feeling bad about not following the true gospel. Then I 'd try test-
> first for a few weeks, only to drop it again when it started hurting my
> designs._

> _Used as a hammer to beat down the nonbelievers, declare them unprofessional
> and unfit for writing software. A litmus test._

If you watch the conversations between DHH, Martin Fowler, and Kent Beck, it
seems to me that they all agree: testing is good, test-driven _design_ can be
bad, and mocking everything is bad [2][3].

I took some time last week to re-read Uncle Bob's book, _Agile Software
Development, Principles, Patterns, and Practices_ [4], and Kent Beck's book on
TDD [5]. There was a huge difference: Uncle Bob focuses on test-driven
_design_ , while Kent Beck focuses on test-driven _development_. Uncle Bob
claims that test-driven development (especially through mocks) universally
improves your design, because it reduces coupling and enables refactoring.
Kent Beck talks about productivity, certainty, refactoring, and documentation.
Uncle Bob says most of those things are just a side-benefit: the real point of
TDD is decoupled design.

Uncle Bob's other book, _The Clean Coder_ [6], berates people who do not
strictly adhere to test-driven design: if you don't do it, you are
unprofessional (he mentions this repeatedly). He says that TDD being
universally good is a fact, and anybody who says otherwise is just ranting.

> _Nowadays, however, they are just rants. The bottom line is that TDD works,
> and everybody needs to get over it._

> _TDD is the professional option._

> _It could be considered unprofessional not to use it._

The bottom line is that developers should listen to each opinion and use their
head. Don't be hurt when somebody calls you unprofessional for not following
the One True Gospel™ and mindlessly adopt practices. Don't be hurt when
somebody says that mindlessly following those practices is counterproductive.
Using your head is about the most professional thing you can do.

[1] TDD is dead. Long live testing.
[http://david.heinemeierhansson.com/2014/tdd-is-dead-long-
liv...](http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-
testing.html) [2] Mockists Are Dead. Long Live Classicists.
[http://www.thoughtworks.com/insights/blog/mockists-are-
dead-...](http://www.thoughtworks.com/insights/blog/mockists-are-dead-long-
live-classicists) [3] Is TDD Dead?
[https://www.youtube.com/watch?v=z9quxZsLcfo](https://www.youtube.com/watch?v=z9quxZsLcfo)
[4] Agile Software Development: Principles, Patterns, and Practices.
[http://www.amazon.com/Software-Development-Principles-
Patter...](http://www.amazon.com/Software-Development-Principles-Patterns-
Practices/dp/0135974445) [5] Test Driven Development By Example.
[http://www.amazon.com/Test-Driven-Development-By-
Example/dp/...](http://www.amazon.com/Test-Driven-Development-By-
Example/dp/0321146530) [6] The Clean Coder. [http://www.amazon.com/Clean-
Coder-Conduct-Professional-Progr...](http://www.amazon.com/Clean-Coder-
Conduct-Professional-Programmers/dp/0137081073)

------
ritchiea
I don't see how this is making things better. Of course people should disagree
with DHH, he's one person and we don't have to all agree on everything. In
fact it would be far more strange for a programming community to insist on
orthodoxy when our problems and work styles certainly differ.

This isn't adding to intelligent dialogue about TDD or best practices any more
than the writer is accusing DHH of being detrimental. In fact I thought DHH
opened up an interesting dialogue about TDD while he was being the "Fox News
of Ruby". There were interesting responses from Martin Fowler, Gary Bernhardt
and Kent Beck among others. I felt like the articles and dialogue that I saw
in response to DHH really helped me think about programming and the projects I
work on. And that's not to dismiss DHH's own comments, which I also found
valuable.

This meta DHH slamming seems far more like school yard gossip and mud slinging
and "Fox News" than anything DHH actually says. At least even when he's being
rude he's actually talking about programming. I've also seen DHH hop on HN
threads and provide gists where he refactored code to make his point. That's
seriously constructive in a way this talk isn't even aspiring to be.

~~~
colinbartlett
I don't think there's anything wrong with the meta-commentary that the author
provides. He is, after all, encouraging everyone to contribute their own
commentary in the same way that Fowler, Bernhardt, and Beck did.

It's sort of like saying we shouldn't ever discuss or scrutinize the reporting
done by news outlets. We should only discuss the news they report. I think
that's a bit unrealistic.

~~~
ritchiea
There's nothing wrong with meta commentary. Let me be more specific, this
strikes me more as an ad hominem attack than real meta commentary.

~~~
Argorak
He is more attacking the person cult. DHH has an aura that shadows many other
voices, so not DHH himself is the problem, but the reception of DHH.

------
noir_lord
I like DHH (and I've never written a line of Ruby).

He writes thoughtfully (and provocatively, "Fox News" mostly just has the
provocatively) about things he likes and dislikes (even when I don't agree his
pieces are worth a read).

He created an extremely influential framework (Laravel which keeps me sane
working with PHP owes much to it).

All that said I'm really not sure what the point of this video was at all.

~~~
_random_
I wouldn't be surprised if the video was made by one of the TDD/Agile-coaches.

------
meistro
Extremely hard to read. Maybe considering porting the message to a different
medium?

~~~
colinbartlett
The DHH Problem:

DHH is an intelligent and successful person. DHH invented rails. And now I can
get paid for writing Ruby even though I enjoy it.

So thanks DHH (sincerely).

But. There's a problem. DHH is Ruby famous. Which means that DHH is extremely
visible. Some might say disproportionately visible in the ruby community.

Why is that a problem? Because DHH is the Fox News of Ruby.

He's noisy, he's reactionary, he's anti-intellectual. He's very sure that he
is right. And he enjoys being rude. (Photo of his famous "fuck you" slide.)
That was eight years ago, but things haven't changed much.

Just like Fox News, DHH appeals to common sense and makes a show of being
"fair and balanced" but in reality his arguments use aggressive rhetoric and
rely on a fix viewpoint.

To pick a topical example: Is TDD hard in Rails apps because TDD is dead or
because Rails makes TDD hard? Is TDD not worth the effort because TDD is dead
or because the complexity of software can be more managed more effectively if
you only work on one product for which you control the requirements? If we
only listen to DHH, then we'll never know. Because DHH is just one person. And
he only has DHH's experiences.

All I'm saying is the Ruby community is large, and diverse, and thoughtful,
and that is why I love it. Please listen to DHH. His experiences are valuable.
But DHH does not speak for me, and he probably doesn't speak for you. My
personal preference is for a bit less of this ("fuck you" slide) and a bit
more of this (slide: "What others do may be the stimulus of our feelings, but
never the cause.").

Please give DHH's opinions the weight they deserve: They are what one man
thinks. And if you disagree with him: please speak up. Write a blog post, give
a talk. Create a web framework. So that we can all learn what the world looks
like to you.

------
ulisesrmzroche
TDD is a non-issue for everyone except those using Rails. Be honest, if I had
written a blog post saying the same thing, ya'll would have enjoyed trolling
me all day, don't lie.

~~~
_random_
It's a non-issue, but every now and then there is someone blogging about how
it's the only way to ensure code quality.

------
digitalcraft
DHH wouldn't do this for example- He would rather talk about TDD

------
joesb
TLDR: DHH is human, too.

~~~
ch4s3
Yeah, real news at 11 stuff here.

When he posted that first 'TDD is Dead' article, I was like 'that's just like
your opinion man.'

