Last month at the 'office' one of the guys I'm working with casually in conversation called me a guru. Now this isn't the first time this has happened, but I always shrink away from a comment like this as vaguely embarrassing. Like I'm sitting in Lotus position for hours, with smoky incense wafting around the room, staring lovingly into nowhere. Ok, so I actually do that :) - but not necessarily when coding (in fact I do it for EXACTLY the opposite reason, to slow down AFTER coding).
I also found this statement rather ironic, because the developers I'm working with on this assignment are particularly sharp and have an interesting and well designed application and architecture. Working with them has been a joy because of their skill level and the architecture which is extremely flexible. It's allowed us with only very minor modification to build a new front end Web application interface of an existing desktop platform. So what business have these guys, who are obviously top notch at what they do, calling anyone a guru?
It's all in the Perception
Well, what the heck is a guru in this day and age of software development? Certainly there are people in certain niche areas that can be considered the top experts on what they do. Often it's not necessarily that they are the best at what they do, but they are the people who are most visible in a particular area and can communicate their skills to other developers.
I certainly don't think of myself as particularly smart or talented. Loud, cynical and opinionated sure. Pragmatic and practical maybe... But, a guru? Hardly.
There are a lots of people who are a heck of a lot better in just about all aspects of software development, design and architecture. I know I have lots to learn about many aspects of software development and if I had the time I would love to spend way more time improving my skill set. Even with my focus on experimenting and integrating newer technology; even then I don't have time to do everything I'd love to spend time with and learn. Just like for everybody else, reality creeps in with deadlines and other real world chores that need to be accomplished. Drat.
As developers most of us have a few developer heroes we look up to so most of us (except the truly arrogant) have some sort of Gurus or at least idols. I admire folks like Scott Hanselman and his breath of knowledge and communication skills and his wit, Scott Guthrie and his sheer energy and skill at communication and again breath of topics he covers all while being at the helm of the dev division at Microsoft. There a handful of developers like Nikhil Kothari, Wilco Bauer, Calvin Hsia to name a few, who are brilliant both in terms of their ideas and coding skills. There are many more, but most of my heroes are folks that I can practically associate with in some way, rather than the high and mighty white tower guys. But by the same stroke I mentioned against myself as a guru, these guys are good at what they do but they are also focused very tightly and just very visible at the same time. And I bet they feel the same way - they have people they in turn look up to and aspire to improve themselves in those fields where they are maybe not at the top of their game. No matter how good or how 'high up' in the rock star developer chain you are, there's always space for improvement and just as likely somebody who's better at what you do. It pays to eat a little humble pie and check the arrogance at the door.
And it's definitely getting harder to find your focus with so many technology choices out there. Who has time to keep up unless you are a in a position to just examine and evaluate everything that comes your way giving a huge chunk of time as part of your job description? It's also no wonder that many people are starting to burn out on the technology round and round and are looking for 'gurus' to pull it all together. Unfortunately, there are no easy answers and no guru who'll solve our problems the easy way...
We're all Gurus in a Way
Software development is hard. Software development is a wide area of knowledge and most of that knowledge comes from experience. And even that experience doesn't get you everywhere - skills are hard won, one project or assignment at a time.
Yet at the same time most of us also are very good at at least one thing. This can be a general technology, or it can be a specific business process. Even if you work a fixed 9 to 5 job it's likely you are in an expert on the technology or methodology or business practices you're working on. I often work with different customers and their business problems or solutions that they've built and it's often amazing to see what amount of ingeniousness has gone into solving a specific business problem. A lot of these solutions are innovative and unique in the ways that they utilize technology efficiently and effectively. As an outsider who comes in to help with specific technology problems (vs. business problems), I am just as starry eyed, thinking of black arts when it comes to those business implementations. In other words, we often forget that we are good at things that we take for granted because it's second nature to us, but feels like a monumental achievement to those looking in from the outside. Any technology sufficiently advanced looks like magic when you don't understand it, right? <g>
Next time you think of anybody as a "Guru" just remember that you've probably spent your time learning and becoming an expert in your area of expertise yourself. And although you may not get the wide recognition of somebody who's more widely visible because of a big mouth or a big case of exhibitionism (<g>) think about what you have accomplished and how that compares even if on a smaller scale. There are no Gurus - there are only fellow developers on a similar path as your's.