November 06, 2012

The Optimistic Programmer

Imagine two developers — Alice and Bob — both fresh out of school and ready to take the software world by storm.

Alice and Bob find themselves working on a large, legacy project. A project full of chances to learn, but not without difficulty.

A few weeks in, Bob comes into the office on a Monday morning and his PM is waiting at his desk. Bob started off strong, but has been struggling lately and introduced a pretty bad bug that has been causing production issues all weekend.

Bob gets a stern, but fair, talk from his manager. After his manager heads off to a meeting, Bob immediately feels a pit in his stomach.

"Damn," he says to himself, "I'm just not getting this. What is wrong with me? I spent four years in school studying and I can't even make it through my first month without messing everything up. I really suck."

Bob never recovers from this setback and he doesn't make it to his one year anniversary. He bounces around from gig to gig and eventually leaves software all together, saying he just wasn't cut out for the job.


Before Bob's manager went to that meeting, he swung by Alice's desk. She wasn't faring much better.

The feature Alice was working on was late — way late. She had become less and less vocal during team stand-up meetings.

Alice's manager asks her what's causing all the issues on her current feature. She mentions that she ran into several unexpected issues and had been dealing with her IDE crashing frequently.

After he leaves, Alice takes a moment to reflect on her situation.

"This feature is way overdue, I need to get control", she says to herself, "My IDE is really to blame, I've wasted 3 days trying to work around these crashes. Everyone said I did a great job on the last feature, so this one must just be cursed."

Alice buckles down and gets her feature finished. Completing the difficult task energizes her and she completes her next three assignments under budget and with no major defects.

By her one year anniversary, Alice is well on her way to a promotion and is a rising star in the company.


The difference? Alice was an optimist and Bob was a pessimist.

When faced with adversity, Bob internal explanatory style told him that his troubles were permanent, pervasive in all aspects of his life, and he was the one to blame.

Contrast that with Alice, who believed that what happened was just an unlucky setback in this one area of her life. She didn't let it effect her outside of work, but once she succeeded it brightened her mood.

So what's the point?

This analysis comes from Martin Seligman's Learned Optimism.

Seligman developed a simple questionnaire that can "diagnose" a persons level of optimism, which he used to help companies hire employees that were highly optimistic (but deficient in other traditional benchmarks) and avoid hiring employees that looked good on paper but would collapse when facing adversity.

Perhaps the software industry should draw upon this work and incorporate it into our hiring policies.

What good is a programmer than works miracles in the interview but shuts down once they hit their first wall on the job?

Are we missing out of quality developers that struggle on coding tests, but will persist and work at it until they figure it out?