update: This article has been posted to Hacker News. If you enjoy it and are a member there please upvote/comment.

I believe mine is a fairly common condition as a software developer. I know, or at least believe, that I'm smart enough to be paid well for the work that I do, but the state of my intelligence relative to the "great minds" in the communities of which I'm a part (JavaScript and Ruby) is an unknown. My tendency is to assume, as a baseline, that nearly any developer I don't know is smarter and more capable than I am.

This manifests as a whole host of negative behaviors, everything from grasping wildly at straws on subjects in which I have little or no background, to simply feeling left out of conversations that I would kill to participate in. As bad as the action might be, the self loathing that comes later is far worse and can haunt me long after. Oddly, even after viewing the same situations from the other side, that of the knowledgeable participant, the most endearing quality in those less knowledgeable is honesty and enthusiasm!

How then?

So, aside from attempting to correct these behaviors, what am I to make of all the nervous energy generated by the shame of my social and intelectual failings? For one, I've taken up public speaking at conferences and meetups as a means through which to prove to my peers and myself that I am a capable speaker and thoughtful developer. I like to think of it as a sort of act in defiance of my own, well documented, shortcomings. And while this clearly exposes an ugly character flaw in the need to repair my ego, a well thought out and executed presentation has many benefits where confidence, or its absence, is concerned.

First, it forces me, as the presenter, to fully realize and enumerate an idea from start to finish. This includes branching out into little corners and dark areas of the topic from which a question might be raised. The fear of being caught out without a response to an obvious question drives me, as much as possible, to gather a comprehensive knowledge of what I'm presenting on. This may not be the case for all presenters but I feel compelled to become something of a topic expert before even submitting the proposal.

Second, it requires that I accept not everyone will care about the material or agree with the premise. Even in a room of 30 people, the best technical presentation, no matter how funny, relevant, and inspiring is likely to lose someone. They didn't have enough coffee, their lunch gave them gas, they're already a topic expert, or their pager simply went off and they have to struggle to diagnose a production issue over the spotty conference Wi-Fi. Learning to accept the imperfect nature of your presentation is a good start to accepting that the things you say will not always be ground breaking/thoughtful/witty.

Last, public speaking requires that you ... speak in public. The confidence that repeated speaking engagements builds in the presenter is not to be underestimated and it translates directly into other social interactions. Meetings, performance reviews, and virtually any expository conversation will benefit directly from the ease with words that one develops.

(Bumb|Stumb|Fumb)ling Into The Endzone

Another particularly interesting behavior that appears to be closely correlated with my involvement in the jQuery Mobile project is a desire to be extremely(+/-) thorough in responses to my teammates and external developers on technical issues.

I should mention that, for internal team issues, this is not always the case. The sad truth is that the people I work with day to day already have a sense, positive or negative, for my capabilities as a developer and expending large amounts of effort to sway their opinion would be a waste. This seems to suggest that the reason for the enormous effort I put in where external developers interact with the project is, in many cases, the conversation on github over an issue or a pull request will be the only interaction that these people ever have with me. As a result I do my best to be careful about presenting intelligent and thoughtful answers to their questions/requests in the hopes of cultivating a positive perception of me in the broader developer community.

For instance last year, before jQuery Mobile went 1.0, one of our users (jammus) logged an issue he was experiencing while using the appcache on iOS. After some discussion and proposed workarounds Todd Parker (our team lead) asked me to take a look. A short time later, once I felt understood the issues at hand, I voiced my concerns about the solutions that other user's were offering in the thread. If you scroll down you can almost watch me sweat as I reread my response and correct with additional comments. There's a follow up noting that CORS requests won't work, which I later correct after realizing that appcache requests can't be cross domain according the spec. My comment just below that is edited out, and while it's not totally obvious what I was thinking I do remember being at least mildly embarrassed.

The ultimate result of that interaction was positive: we decided that the hacks suggested would suffice for now and that the issue should be left open for developers experiencing the same problem. I like to believe that is at least in part due to how much effort I expended not just in attempting to help but also in making sure I didn't look silly.

You Can't Always Be Right

Before I close this post I would like to address at least one common symptom of being insecure about your intelligence, that is the need to always be right. Again, I have to believe that this is a common issue among developers, especially because we are consistently debating very technical ideas and because I've seen it so often in myself and others. You can spot it in your own behavior if you, like me, tend to get agitated or excited when someone doesn't agree with you. For my part the fix is so small as to seem insignificant:

Speak your ideas in the form of a question.1

What a difference the inflection at the end of a sentence can make in the tone of a discussion! So often when leading with "You should ..." or "We should ...", especially in a text medium, it presents an unapproachable front and stifles conversation. Instead, leading with "Can we ..." or "Should we ..." leaves the door open for others to freely express concerns or offer totally different approaches. By asking a question you invite discussion and criticism, and position yourself in direct opposition to your insecurity.

Don't Forget To Take Out The Trash

Generally, being insecure is not a positive thing. It's at the root of jealousy, resentment, and other Dark Side behavior. Even so, I don't think it's necessary to let your insecurities, or more specifically the motivating force they can provide, go to waste. Just don't forget that while using them to motivate you, addressing the actual problems they represent has to take center stage.

  1. How do I know this works? I have the distinct pleasure of interacting with Scott Jehl, Todd Parker, Kin Blas, Mat Marquis, and Ghislain Seguin every day while working on the jQuery Mobile project and this approach to collaboration is always the order of the day. Obviously one sample does not a tautology make, but it's one of the very best teams/environments I've ever worked with/in.

Special thanks to Kin Blas for his feedback on the article.


22 Feb 2012