May 23, 2004

Opinions

I like this thought from Ian Bicking in a post on becoming a great software developer:

Besides tackling challenging problems -- and making mistakes -- I think it's important to be opinionated about what you're doing. This applies to any craft, not just software. It's better to be rash and mistaken than to be withhold opinion, or to simply defer to the opinion of others. (Of course, none of this works if you are stubborn and won't change your opinion, because than you'll be stuck with premature and incorrect opinions.) But after making an opinion, you must of course be reflective and thoughtful, and have a bit of humility, so you can recognize where you were right and where you were wrong. And somewhere in this process you should be developing an intuition, but you probably won't realize its arrival, nor will ever be clear exactly where it came from.

Sharing opinions, as Bicking mentions, is a critical skill for developers and designers, I think. "Whatever" is rarely an acceptable answer to any question. Think about the work you're doing, and how to make it better. If you can improve on an idea, do so. Take a stand. Get creative. Know why you think the way you do, and be prepared to back up your opinion.

But, another critical skill is knowing when to "fold 'em." You might find yourself in a situation where you've stated your opinion, it has been noted, and yet the decision comes down contrary to your position. To often, we're inclined to hold on to our opinion when it would be better to accept the decision and live to fight another day. Unless you're creating software soley for yourself, you'll need to answer to a variety of stakeholders, including management.

It's not all on the developer, though. A good part of the deal involves management creating an atmosphere where opinions can be offered and heard, if not always acted on. This isn't always easy, but it is vital for a successful development effort.