I’ve been in the IT field since 1995, when I had my first internship with Ford Motor Company. I didn’t do a whole lot that first year, where I worked on a help desk team, but I did manage to glean a few gems. More recently, however, I was a Development Manager for over for 4 years and then moved to consulting where I’ve been for just over a year.
Through this experience I’ve worked with many different people and interviewed, and sometimes hired, many others. The one quality that I’ve always searched for in people is the rare and elusive Passion. Passion is quality that everyone has in them, although it may remain untapped until the person discovers what their passion truly is. I recall an MSDN article I read a while back about how Microsoft looks for passion in people, even if it’s beyond the technical realm. Although having passion about anything is better than no passion at all, I am still biased towards software development and IT when it comes to the teams I am surrounded by. That’s not to say that one can’t have multiple passions, as I am very passionate about my wife and children, but I think my love for being a developer helps give me an edge.
Qualities of an Un-passionate Developer
So what are the qualities or criteria of a passionate Software Developer? I think it goes without saying that true passion is very easy to spot without some list of criteria. What might be easier is to go the other way and discuss the qualities I see in most Developers who aren’t passionate.
It’s obvious that there are many people who get into this field as a means of making a decent living. For these people, developing software is merely a job and devoting any time outside of their 8 – 5 workday towards the field seem ludicrous. They don’t subscribe to blogs and read very little magazines or books if any at all. They depend on their passionate co-workers and leaders to teach them about what’s new and the latest techniques for doing things. These are the people who nod with a blank look on their face when you talk about topics like Design Patterns, IoC, SOLID, CI, DSL’s and other hot issues in the development community.
A real-world example of this came from a person who was trying to code against some specifications that included Dependency Injection, several design patterns and some unit testing sprinkled in. When I commented on how unhappy this person looked, the reply was that he liked doing the easy stuff that was in his comfort zone, but he was doubting the choice of a career where he would have to read and keep learning new stuff – “I went to college so I wouldn’t have to do that anymore”.
I’m not saying that there’s anything wrong with this attitude and often times certain projects or companies need bodies that are comfortable just doing what they are told to do. Many people are content following a standard set of procedures and doing just enough to get by. They are not concerned with being a software craftsman and if the code they write is un-maintainable and hard to test, the company will just unknowingly pay the price with longer development cycles the next time.
Spreading the Love
I believe that many times there is a passionate developer locked inside the people I described above. There could be many reasons why their passion remains caged, but the 2 most obvious that come to mind are the restrictions in their job that prevent them from spreading their wings and simply getting too comfortable in what they are doing.
So what can we, the passionate, do to spread our love and joy for our craft? I think there’s a few tactics that are worth exploring.
- Keep Talking – Passion is infectious and the more you keep talking about the cool stuff you’re learning or the latest project or experiment you are into the more likely your passion is to catch on. Perhaps sharing your sense of accomplishment and/or enthusiasm will pique their interest in obtaining that same feeling.
- Lunch and Learn – Brown bag sessions and lunch and learns are a great way to share new stuff with your team. It’s not enough, though, just to present. Getting the whole team engaged by rotating presentation responsibilities is a great way to get people to spend some personal time learning about topics, tools and tactics that can benefit everyone. Perhaps getting in the groove of learning will result in more.
- Get them involved – Solicit volunteers to help with any side projects you may be working on. Volunteer on an open source project and work as a team to fix small bugs or take on small feature requests.
- Share heroes, books, articles – If you have some heroes that inspire you, share that with your teams. Start a book club or send links to articles and inform that you’ll be discussing at your next meeting. Share your RSS feeds and talk about the latest posts that interested you. The Google Reader allows you to share your feeds either individually or from within your categories. Here’s my feed as an example.
- Assign “Fun” Tasks – In even the most mundane of applications, there is some joy to be found somewhere. Don’t keep it all for yourself! Share those tasks with enough guidance on patterns and architecture to give your team something to get excited about. They’ll get that accomplished feeling from implementing something outside their comfort zone, which can become addictive.
- Lead by Example – Just be your passionate self. It’s often said that passion and excitement are infectious, so be sure to let it all out. Sometimes people get stuck in a rut, but you can help make things fun again.
Conclusion
Not everyone is passionate about developing software and that’s alright. Given the choice, however, I’ll always look for the passionate, or at a minimum, the curious. Quite often the only thing standing in the way of someone’s passion for development is an experience, some information or some guidance. If you’re passionate, you can spread the love and infect others. Be a mentor and give your team something to get excited about.