Last week, I attended the Emerging Technologies for the Enterprise conference outside of Philadelphia.
I love the way these events provide an opportunity to learn. This time, the most interesting things I picked up weren’t new languages, techniques, plugins or gems — they were new perspectives on the work we’re doing.
His metaphor was that small changes in how we approach software can make a big difference in how we develop it, like “the difference between water at 33 degrees and 32 degrees [ice].”
I experienced that very effect this morning. Because I have been testing more, I want to write code that is easy to test. This required a minor refactoring (yes, I know some of you write your tests first), which made the code more loosely-coupled.
The result: same functionality and a better design — not because I made dramatic changes in my approach, but as a result of putting slightly more emphasis on testability.
At one stop, he interviewed OOP guru “Uncle” Bob Martin, who said:
In general, the more people you can work with, the more insights you gain that you simply can’t get on your own. Everyone thinks differently about problems and everyone has a different way to approach them.
In the Rails culture of “convention over configuration” and similar dogmas, it is easy to forget that there isn’t one right way. TDD may do wonders for you, but others might not excel with that approach. That does not mean they are “doing it wrong.” Some of us like TextMate; others vim or emacs; none is “best” for Rails development.
Another example is pair programming: traditionally, one person “drives.” Corey prefers an unusual setup with two keyboards and two mice — though only one person should type at a time :) — it may not be the way you would approach things, but it works for him and few people have pair-programmed with so many different folks.