What makes a Guru?
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.
I also think today that in the era of specialization we live in, it's increasingly difficult to be truly an expert at anything more than a few very specific technologies or even niches within a given technology. For example, if you say you're an expert in ASP.NET that's a pretty wide stroke and it'd be pretty hard to be an expert in all of it - the technology has gotten so wide. You may be very good at working with data driven applications using the stock controls, but you then probably don't know all that much about the low level semantics of ASP.NET and how to build a say a sophisticated handler implementation from scratch (maybe you do, but I'm using this as a typical example). Likewise you maybe great a JavaScript and client side development and not do quite so well with the server side of development or maybe vice versa. We all prioritize our specialties and there are some things that we are expert at and some things we know enough about that we can figure it out as we go.
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>
Any technology that is new to people can easily feel overwhelming and then having someone around that knows the technology and uses it efficiently can easily seem like a black art: Guruism born. As I was working with my clients these weeks it's clear the developers have a strong background in software development, but they've been isolated in a specific type of development (desktop apps specifically) and for them Web development was fairly foreign. Sure there was basic understanding of HTML and how server based processes work for handling Web requests, but more arcane topics like CSS design, JavaScript and DOM programming and using AJAX to handle callbacks to the server surely seem foreign. It's easy to dismiss these things as 'basic education' for Web developers, but if you think about all the things you need to know to start building effective Web applications (and not those drag and drop type apps you see in demos) that take advantage of proper separation of concerns, proper design, integration of server and client functionality in a browser for example - it all involves a lot of different although interrelated technology. So next time you sit down with a newbie and wiz through CSS tags off the top of your head, or DOM element properties 'just like that' rolling your eyes at Mr. Newbie because he looks at you with a glazed over expression, remember that we didn't get there in a day either.
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.
The Voices of Reason
# re: What makes a Guru?
Anyway, thanks a lot for sharing your code and ideas.
# re: What makes a Guru?
# re: What makes a Guru?
I have many people I consider guru's (and this is just inside my department). I guess once you work with stuff long enough your expected to know all the in's and out's by default and people attach that label to you.
On another hand,
I think a guru is one who is well versed in many different applications of technology. Sure, you can know all the specifics of one area, but I believe the real guru is the "one stop shop" guy who can't ever seem to be stumped.
^ given my status in the "IT catch all" dept i'm destined to become one of these well versed ppl eventually, lol.
# re: What makes a Guru?
Here are a few of qualities I think of when defining who is and who is not a 'guru'.
1. Character - Are you honest in your estimates. Do you show up when expected? Can you be relied upon?
2. Good Judgement (how do you get it? Experience. How do you get experience? Bad judgement <g>)
3. A healthy & good sense of who you are (You just described that above I think) and an appreciation and understanding of where you still need to go.
4. Good people skills. How well do you communicate? (writing, verbal, etc)
5. Good thinkng skills. Can you think things through or do you just flail around?
6. Able to find an answer (Can't know all but can you find it?)
7. Good business sense. Can you focus on the real issue rather than the technology?
8. Lastly - some relatively well-established technical skill that brings value.
Best,
DD
# re: What makes a Guru?
# re: What makes a Guru?
I belong to Sikh relegion (http://www.sikhnet.com/) and was surprised to see the picture of our second Guru - Guru Angad Dev (http://www.sikhs.org/guru2.htm), so I read the entire blog post and I feel that you should not have put this photo here. Although we do not believe in idol worship including worship of pictures of the Gurus, I think the photo does not seem right in this context here (considering your wordings such as "Lotus position for hours, with smoky incense wafting around the room, staring lovingly into nowhere"). I would like to request to take out the photo from this blog. Thanks for your understanding.
DS
# re: What makes a Guru?
# re: What makes a Guru?
I think the only appropriate picture would be one of you, doing your incense stare into space thing.
# re: What makes a Guru?
You code well but you also write really excellent documentation. Many people can do one or the other, but few can do both. Being clear and concise is often viewed as a master teaching a student how to better themselves, and you have a long career of not just doing, but taking the time to show others how to do it as well. That's probably why you get likened to a Guru.
I'd like to see a "Clippy" like icon of you doing the Lotus position appear in the bottom right corner to give me tips on how to code better. Haha... Just add some sitar music and you can ride in and off the screen by way of wind board.
# re: What makes a Guru?
# re: What makes a Guru?
Here I've been stalking you for years (notice I don't get too close - I'm a whole island away) and you try and deflate my dreams. I even bought a Rick Strahl wig the other day and started playing bass...
Who else can tell Brinkman off like you :)
# re: What makes a Guru?
@Rob - Face it. You're just a groupie. I bet you used to hang out backstage for the high school band, huh? If anything - you're now part of the RS (that's rock star, not my name!) crowd since you're in the big house and doing your own thing in counter culture there :)
# re: What makes a Guru?
Very sensitive of you to replace the pic. That being said, do not quit your day job and try to start a following -- this appears to be an illustration from "Aspiring Gurus 101". ;-)
# re: What makes a Guru?
I read your blog often and I think you are a sharp guy...that said..can you PLEASE name your variables differently :)
wwVariableDealie <--- drives me crazy (i can't be the only one)
# re: What makes a Guru?
# re: What makes a Guru?
# re: What makes a Guru?
Having said that, I think of you as a guru and "rock star" and, I'll admit, I'd sign up for your fan club. But that's because I've learned so much from you and you do so much for so many. You meet your own description of what you think of as a "guru".
In fact, around my office, when we are discussing difficult or complex programming issues and whether we are up to the task we routinely say things like, "unless you're Rick Strahl or something" or "maybe Rick Stahl could but we're going to need help on this".
I agree with you 100% about both Scott's (Gu and Hans) and for exactly the same reasons, you ARE a guru...
# re: What makes a Guru?
# re: What makes a Guru?
Yet another post that reassures me that I do put enough into my work. I'm always putting myself down about my commitment to development. I constantly believe that I should work 24/7 (no sleep) to reach some kind of development divinity that to be honest is absolutely ridiculous!! Yeah we all work long hours to meet some deadline and generally get so engrossed in a project that you pass your bedtime. The thing is, it does depend on your life circumstances. I have two children, one who has cerebral palsy due to complications at birth. I don't like to use it as an excuse for anything but it does impact on my life and my work more than I would like it to sometimes. Saying that I chose my life and I wouldn't have it any other way, though in the back of my mind my software suffers.
I use the word Guru regulary when asking about specific technological topics, though I use it rather loosely. I'm basically calling for people who specialise in these area's, though I do find I get answers from people that just happen to have some experience on my topic. Your site is IMHO the best place for this on MS technologies. It kicks MSDN for the wealth of knowledge you and the community share on here. I have mucho respect for this.
I would call you a guru, but I mean you are an expert in your specializations, namely Internet programming and the languages you use. What I admire best is your thirst for knowledge for the inner working of the tools and technologies you work with. I believe this is what eventually spawned the toolsets you offer to the development community.
The one thing I am really bad at and which you excel is in information sharing and web logging. I just don't know how you find the time to share so much!! I try to do so when I can and I've even tried to blog. I've tried to blog about topics that I feel some developer would find most useful after hours of banging their head against the wall. Unfortunately I jsut cannot be consistant. Maybe just not suited to it. Maybe I don't type fast enough. I really don't know, but I'm willing to take advice, I'm good at that <g>.
Rich
# re: What makes a Guru?
My definition of a guru is when Im stuck on a problem and Im searching around and around the internet for the answer, and then guess who's site usually provides it. Yep, yours.
No programmer in the world is going to know EVERYTHING!!! But let's just say you know more than your fair share. :-)
I'd love to be called a guru - dont knock it!!!!!
Now get back to work!!!!!!!!!!