Anil Dash and I have the same job title: evangelist.
I share Anil's reservations about his job title, too:
You see, these days my business cards describe me as "Chief Evangelist". On the plus side, it's the first time in the history of the company that I've basically only had one job (though I still help out with as much stuff as I can), but on the downside, the title is f**king ridiculous. I hate the word "evangelist" as a description for people who advocate technology not merely because of its religious connotations, but also because it implies a degree of proselytization that I'd like to think I don't participate in. Most of the time, my job is really just simple education.
However, unlike Anil, I believe the religious connotations of the evangelist title are perfectly suited to the field of software development. Software development is a religion, and any programmer worth his or her salt is the scarred veteran of a thousand religious wars. That doesn't mean we need to be humorless jerks about it, of course. But to completely disavow the connection between religion and software development is dishonest. I say we embrace it. We're all disciples of the church of Von Neumann. Praise the lord and pass the ones and zeroes!
The title is a little ridiculous. My wife tells me that everyone laughs when she explains that her husband is a technical evangelist. Am I offended? Heck no. I think that's great. Laughing is the only sane, rational response to any kind of evangelism -- it means you have a sense of humor. Entertainment is a crucial part of being an evangelist. Without it, you're a sanctimonious bore. Good evangelism is always equal parts education and entertainment. Edutainment, if you will.
Of course, you'll only be effective as an evangelist if you can clearly communicate your ideas to other people. This is a critical skill, whether you have any desire to be an "evangelist" or not. As Joel Spolsky famously said:
The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it's not whether they prefer Python or Java. It's whether they can communicate their ideas.
It's questionable how effective you can be by writing code alone. You have to convince us how awesome your code is. You have to make us believe in the glory of that code. In short, you evangelize. And that means constantly cultivating those essential communication skills.
I was recently asked how I run our development team. I said, "Well, basically I blog about something I think we should do, and if the blog post convinces the developers, they do it. If not, I lobby for it, and if that fails too, the idea falls on the floor. They need my approval to launch something, but that's it. That's as much 'running things' as I do, and most of the ideas come from other people at this point, not from me and my blog posts. I've argued against some of our most successful ideas, so it's a good thing I don't try to exert more control." I'm exaggerating somewhat; of course I haven't blogged about all of our ideas yet. But I do think of myself as Lobbyist-in-Chief, and I have lots of good examples of cases where I failed to talk people into an idea and it didn't happen as a result. One person I said this to asked, "So who holds the product vision, then?" and I replied, "Well, I guess I do," but really that's not right. We all do. The product is the result of the ideas that together we've agreed to pursue. I recruit people based on their interest in and enthusiasm about the ideas behind Wesabe, and then set them loose, and we all talk and listen constantly. That's how it works -- and believe it or not, it does work.
Like Marc, you may already be an evangelist and not even know it. And it really does work.
Evangelism is simply sharing your excitement and enthusiasm with other people in an effective way. If that makes you more entertaining and a better communicator, well, those are side effects you can probably live with.