during a reply to a thread about design for testability, Pat Maddox wrote something interesting about how the inherent testability in Ruby still does not make up for the lack of design skills:
“Too often I'm finding in the Ruby community we've got people who have learned how to test, and even take advantage of Ruby's flexibility when writing tests, but have never learned how to design. They end up doing crazy shit because (a) they don't know any better and (b) they can.”
My immediate thought was that the community’s biggest mistake is sticking to tooling that tries to fix “b” (because they can) instead of “a” (they don’t know any better")
it leads to a false sense of teaching when you’re just making people go through hoops to get things testable in a different way, and still does not teach proper design.
it’s like the old debate of whether you should give out condoms to teenagers or teach\force them abstinence. they will have sex, it’s just a matter of how well you educate them about it, and give them the proper knowledge and tooling to handle it safely. forcing them to hide it or assuming that they don’t do it because you told them so isn’t going to work.
Just because you force someone to work with MOQ doesn’t mean their design will not be crappy, it just means you feel better about yourself, and you’re not teaching them the right thing – when and where to use design techniques in which situations.
Instead, start doing brown bags, code reviews and get some copies of clean code.