I was reading Hanselman's latest post about (paraphrashing) defining the level of 'expertise'. This got me to thinking, I've been a 'professional' developer since ~1997, and for most of the time I've worked in web agencies...this seems pretty unusual. Web Agencies are essentially companies which build bespoke websites for customers, over varying levels of complexity. What I got used to over the years was a process which became known as 'agile', these projects had VERY quick turnarounds (around 3 months max from starting the design to deploying the site), usually only involved a couple of devs + designers and were very competitive in nature little vendor lock-in, much of the business was based on the quality of the previous site...) .
When I left full time development 3 or so years ago I was at an extremely high level of expertise with ASP.NET ;this was actually part of the reason I left...I'd really stopped learning and was getting a bit bored. The reason I bring this up is that this is an issue with many of the 'experts' out there...unless you have your head deep into the types of problems customers face every day then your skills quickly start to erode, you lose touch with what's actually going on in the development world. I also (tangentially) wrote about this in an earlier post, in essence what seems most important at any particular time is the 'new and shiny', development is as much a victim of the whims of fashion as anything else. I've been following Karl Seguin's 'Foundations of Programing' post series over the past few weeks and it's one of the best treatments of this subject that I've seen recently, it gets to the real meat of good practice.
Anyway, back to the point of the post...what's an expert...one definition is simple:
'a person with special knowledge or ability who performs skillfully'
Therein lies a problem, when I was a full time developer, I collected 'tips', I never found one source who was an expert in exactly the type of stuff I worked on every day (integrating graphic design, working with customers, adapting to change, cranking out error free, high performance code, designing and building DBs, deploying and maintaining sites etc...). I never put much faith in the whole 'letters after the name thing' (if you're interested, I'm 'BSc (Hons), DClinPsych, MSC', nice letters but of no relevance to my current job, they're clinical psychology qualifications).
Here's a scoop, even MS people aren't 'experts' in the stuff 'regular' developers work on every day, most of us don't write the type of apps that you do any more (most haven't for years). My only advice is to treat everything you read for self-professed 'experts' with a grain of salt, if you're just starting out in the development world you'll be looking for guidance on how to be a developer...but don't blindly follow what you read in the 'big new book' or from some populist blogger, collect and process information into a framework that helps you do your job better. There's only one expert of any real relevance to your particular context..it's you.
To quote a great song by Orbital (and a mediocre TV Show):
"You, are becoming Gods. There's a new master of creation, and it's you! Unraveled DNA, and at the same time you're cultivating bacteria strong enough to kill every living thing! Do you think you are ready for that much power? You lot? You lot? Cheeky bastards. You're running around science like kids with guns, creating a new world, while the world you've got is stinking, but, hands up, hands up anyone who thinks you've got it right. Yeah, there's always one. I can see you. If you want the position of God then take the responsibility. "
You are creating novel works in the code you write, ultimately you are responsible for what you create! Mind you take this advice with a pinch of salt, I'm no expert in this :-)