Today’s post is dedicated to El# (hi mate! :-) ), with whom I have had many conversations about this topic, with both of us facing the same issue from time to time. I’ve often talked about the quote from Jeremy Miller that titles this post, but I finally stumbled over the original source the other day:
Thoughts, Rants and Arguments: My DevTeach 2007 Rollup (search for “there are no smart guys” for the relevant paragraph)
I’ve sometimes been stymied by the thought that I just don’t know enough to make a decision on a topic, and that I need to run it through a gauntlet of experts to get “the answer”. This has bitten me when it came to introducing TDD, MVC/MVP web development, ORM, refactoring and other practices. I know the benefits, but how can I be confident enough to introduce one of these approaches without fully understanding the entire body of research on the subject, and without having an ironclad guarantee that it will work within a specific environment? I need to talk to the smart guys! I need “the experts”!
There is a big problem (ok, probably several problems) with this attitude. No one, not even the smart guys or the experts, knows “the answer”. Generally there isn’t “the answer” – there are just a whole lot of options, some of which suck less than the others (and you won’t know which is which without hindsight). There are no smart guys that know “the answer” and can solve all the problems, there’s only us, so just make the best decisions you can as a professional. Some decisions will work and some won’t, but don’t expect anyone else to necessarily be any better in the same situation. As Jeremy Miller put it:
- No one’s infallible and all knowing
- Don’t sell yourself short compared to other people
Chances are the smart guys and experts we look up to and whose blogs we read are just the same as us. Maybe the only difference is that they are willing to take the chances, to risk failure, and to learn from everything. It’s that kind of experience that makes you the smart guy or gal. If you want to be an expert, take exactly what you are doing right now and try some of the things that you previously were waiting on expert-approval for. Learn from it. Share it with your team or user group. Blog about it. As a former colleague of mine wrote (hi Hassan!), don’t be afraid to make mistakes.
(IsABlogger() && HasAnMVP() && HasDoneLotsOfPresentations()) != IsAnExpert()
By the way, none of this applies to ScottGu, who actually IS a smart guy and expert and should be deferred to at all times ;) (I’m being dead serious btw. How the heck does that bloke get across so much, and still have time to bag out Scott Bellware? :))
None of this is an excuse to make rash decisions or take uncalculated risks. It simply means that if you have put some work into an idea and genuinely believe it has legs, then run with it and see how it goes. Don’t wait for the smart guys or the experts to validate it or give you the right answer. They’re not coming. You all we’ve got. And you’ll do fine :-)
Update 2008-02-07: Geoff Slinker has a fantastic post on a related note.