5 things programmers preach but don’t practice

I’m having a frustrating day of merge hell. Just to blow off some steam while specs run, here are some things that, in my experience, are a lot more common in theory than in execution in proprietary software development projects. At least in the Ruby/Rails projects I’ve been exposed to lately.

Not pointing fingers or anything, I’m as guilty as anyone of not putting my foot down and saying “we aren’t moving another inch until we clean house”. Or, for that matter, of writing about practice ideals while consulting on projects that are far from those ideals.

Just to reiterate, this is anecdotal. If nothing here rings true for you… great!

  1. Test-driven design. You’re lucky to find a shop that practices test-driven development consistently. Test-driven design is a concept that most programmers still don’t really grasp, in my experience. Behavior-driven design, where the focus is on stating behavior up front rather than on verifying implementation? Forget it. Also, nobody is testing their Javascript.
  2. Refactoring. What most shops call “refactoring” is really a month-long timeout for software refurbishment every year or so.
  3. Scrum. It’s apparently hip to say “we do Scrum” now. 99% of the time this means “we do daily standup meetings”.
  4. DVCS. Git or not, most projects are doing centralized version control with periodic merge hell.
  5. Continuous Integration. Sad but true. I can’t tell you how many times I’ve heard “we had a CI server at one point, but…”

Did I miss anything?

Enhanced by Zemanta