Questioning Dogma

I am an increasingly skeptical developer. Things that make me think twice…

Shouting
  1. Whenever someone whips out the “premature optimization is the root of all evil” quote. I think most programmers do not realize this quote is taken out of context. The quote refers to “micro-optimization”, not large-scale architectural decisions. Many performance-related decisions DO have to be made early in a project. Thinking about performance is not the same thing as obsessing over micro-optimization.
  2. On a related note, many people (in classes I teach) are resolute in their belief that ORM tools like Hibernate or JPA are simply too slow. Sigh. These people are obsessing over performance too much, as opposed to ignoring performance considerations.
  3. Striving for 100% code coverage when testing. I’ve discussed this before, and subsequent comments and discussions have led me to believe that 100% code coverage is not all that important. It is probably more important to demand better tools that ignore trivial code, to ensure we do test things that really need testing. Filtering out “trivial” code and alerting us to complex code that probably SHOULD be tested…now that’s an interesting problem!
  4. Whenever people argue for or against Ruby/Rails, I am skeptical. Sorry, but the claims (on both sides) are just too nutty and people are too passionate to be objective. It’s not that black and white. Let’s just sit back and watch the comments this provokes…
  5. I feel the same way about Linux, Mac, and Windows. These are such heated topics that I tend to be skeptical of everyone. In fact, too much fan-boy-ism is a repellent for me.
  6. People who preach against Big Design Up Front (BDUF). Be careful, for many of these people warp the theory into “no design is ever good”. I’m no fan of BDUF, but I certainly think about many aspects of design very early on! For example, if I know my app needs to store billions of records, you can be damn sure I’ll be thinking about storage options and sorting algorithms from a completely different angle than for an app storing 300 records.
  7. The notion that unit tests are THE documentation. Uh, no. Tests are for testing. They have a happy side effect of serving as good examples, and I often refer to tests to learn how to exercise an API. But to argue that the whole point of writing tests is to create documentation…that seems wrong to me.
  8. Speaking of testing, people who rail AGAINST testing make me wonder…has this person EVER written a test? Maybe they make good points, but to NEVER write tests borders on incompetence.
  9. XML is all evil, all the time. Wrong.
  10. Ant sucks! Maven rules! Wrong. Or…Maven sucks! Ant rules! Again, wrong.
  11. YAGNI. To a certain extent, but you still need to anticipate and plan for the future.
  12. We need to lock down PCs. Restrict Internet access. Force procedures. Ick. Those things make me unhappy and I am very skeptical these techniques work. In fact, I believe as you clamp down on people, the best and brightest will leave.
  13. SOAP sucks! Web services suck! Yes, I agree. (what did you think I’d say???)

What are you skeptical about? Hopefully someone says no-name bloggers with over inflated egos… :-)


5 Responses to “Questioning Dogma”

Jay Says:

Well said.

Smitty Says:

It’s hard to argue when you won’t stop making sense. We live in the middle, adapting our practices and procedures based on our projects and often where we work. Most of our policies are build on reacting to failures and mistakes. Very few are proactive, taking in account a sense of accountability and sensibility. There’s no greener grass here, but don’t stop trying.

I’m skeptical this post will get through since I can only read one of the reCAPTCHA words. Is your blog set up to use a single character as a challenge word (like A or I)?

Refresh helped!

Alex Miler Says:

Or if I could summarize….”dogmatism is bad”. :) Which is of course, always right.

JR Says:

I can agree with most of what you’ve listed. Speaking from personal experience, being bogged down in procedures and policies generally lead to those policies being either dropped all together or altered to fit the need once panic mode is hit on a late running project (generally those go after the unit tests are dropped).

However, I disagree with the blanket statement that web services and SOAP suck, they serve their purpose in some instances. Similar to your comments on Ruby vs Java or Ant vs Maven, each tool has a niche where one does a better job than the other, there are no absolutes.

Dennis S Says:

I have gotten more skeptical about linux and how ‘easy’ it is do implement high tech things like movie making or a DVR. Much like NETWARE it has things it’s very good at, others… not so much.

Leave a Reply