It's actually two questions in one:

  • What is the right attitude for a programmer?

  • How do you (or would you) look for one when interviewing or during hiring process?

Please note this question is not about personality or traits of a candidate, it is about their attitude towards what they do for living. This is also not about reverse of programmers pet peeves.

The question has been made community wiki, since I am interested in a good answer rather than reputation. I disagree that the question is purely subjective and just a matter of opinion: clearly some attitudes make a better programmer than others. Consecutively, there might quite possibly exist an attitude that is common to the most of the better programmers.


After some deliberation I came up with the following attitude measurement scales:

  • identifies themselves with the job ↔ fully detached

  • perceives code as a collection of concepts ↔ sees code as a sequence of steps

  • thinks of creating software as an art ↔ takes 100% rational approach to design and development

Answers that include some sort of a comment on the appropriateness of these scales are greatly appreciated.

Definition of "attitude": a complex mental state involving beliefs and feelings and values and dispositions to act in certain ways; "he had the attitude that work was fun"

The question came as a result of some reflection on the top voted answer to "How do you ensure code quality?" here on Stack Overflow.

+39  A: 

In general:

  • Involvement in open source or coding projects outside of work
  • Passion for what he/she is doing, if they get excited when talking about a project they have done in the past
  • Ability to recognize patterns, if you can present them with a simple problem and they can solve it in a sensible way
No doubt, weed out the people who are just doing it to earn a paycheck and would never discuss programming outside of work. Not saying that those people are horrible, its just that the passionate ones always seem to put more time and effort into it.
Too many people confuse "willingness to work overtime" with "passion." Just a caution. Don't let that person be you.
Sarah Mei
Sarah, good point!
So because I like to have a work/life balance and spend time with my family outside of work - leaving no time for outside-of-work projects - that makes me a bad hire?
@Valerion: I did say "in general", I am not saying anyone would be a "bad hire". This is just my interpretation of what the right attitude is...
I would say this is good advice if the person is young. However, in general, the older you are the less time you can/are willing to spend on "extra" work.
+1 Involvement in open source or coding projects outside of work. I count this more than any degree or certification when I see a resume.
But I know several very good programmers with very good attitudes who don't code outside of work. They have other interests that keep them busy. But someone would be very foolish indeed not to consider them because they weren't doing some kind of outside project.
I think the end goal is to have something (open source or model airplanes) that keeps the person sharp. They need to be passionate about something. The easiest to find is open source projects because it is directly relevant. Most people don't put their hobbies on their resume, and most can relate
I put a few hobbies that I am passionate about on my resume. They aren't work-related at all, but I'm *always* asked about one or two of them. I can usually relate my answers back to how a hobby helps me think more creatively, communicate better, or see patterns and structures in a system quickly.
Adam Jaskiewicz
I don't think you need to program outside of work, but you should at least have an interest that goes beyond the work you are doing. Do you stay up to date on what's going on in the world? Do you get excited talking about programming?
Russell Leggett
What if you hate your work as a programmer and only enjoy it outside of work :) I don't know about you but i get excited when i see attractive women and not when thinking about programming.
kudor gyozo
@Gyozo Different kind of excited dude
+2  A: 
  • What is the right attitude for a programmer?

Can-do, admit mistakes and reasonable.

  • How do you (or would you) look for one when interviewing or during hiring process?

Love the job with relevant experiences.

+2  A: 

Unless you have a specific personality requirement for your team, I don't think you can judge any programmer's proficiency by their personality or attitude.

Most programmers are optimists, it takes a good sense of humor and an ability to see the bright side of things in a world where anything is possible and anything can go wrong.

Positivity is good. But there is no right attitude. Some programmers code in dark closets wearing headphones and never have to talk to people for weeks.

I disagree with that - most good programmers are pessimists. They're never happy with what they release, and always plan for the worst. An optimistic programmer is far less likely to set up error logging, since it should just "work"...right?
Mike Robinson
Mike is right. Pessimists and humble
I mean as a general observation programmers are optimists. In practice, a pro has plenty of healthy paranoia and ability to test debug and plan for the worst. But pessimism would mean an attitude of believing something is impossible and won't work. Our optimism yields perseverance to better code.

I see in the answer "right attitude", I think that is subjective, because that depends on what they are looking for. I normally try to find out some information about the company and they objectives, that can help you to do a perfil of what they are looking for.

Bruno Costa

We ask 'What sort of computers do you have at home?'. The answer should be long and involved. I should note that we develop on a lot of different platforms and that people use many different platforms at home is a key indicator of the competencies for which we're looking.

Interesting, but this doesn't have much to do with "attitude". As a matter of fact, you could make an argument that in certain situations, looking for this could lead to candidates with worse attitude (depending on the type of work/company).
Have to agree with pearcewg. It would certainly show passion about a very specific subset of computing, although not necessarily much about programming.
The completely uninvolved answer would be, "none." The less, "something or other I used to send my application e-mail." If the candidate can actually get into a discussion about what hardware he has at home and why, and how good or bad that is, that's the start of an engagement with computers that many developers I know do not have.
Curt Sampson
+6  A: 

Well, here's what I said in response to What are the traits that you look for in a software developer?

The short form:

  • Attitude = honesty. If I can't count on your ability to tell the truth (self-critical, etc.), what can I count on?
  • What do I look for? = Who will you be in three years? We routinely keep people around for that long and that's an eternity when it comes to individual technical skills. If you have the ability to retrain, re-task or re-invent yourself, I don't really care if you know the tech flavor of the week.
Bob Cross
+1 - Honesty (15char)
+20  A: 

I would look for someone who would challenge me when I make an obvious mistake, but not be a complete jerk to work with. I guess that would be called Confidence without Arrogance. Software development is no place for yes-men.

Aside form that, somebody who has the technical skills and does not appear burnt out or irredeemably contaminated by office politics.

+17  A: 

I find that people who take pride in their work are better developers. They will take the time to get it right, and respond to constructive criticism appropriately.

Obviously, you want someone that is passionate about programming and not just doing it to earn a paycheck as well

+3  A: 

See What’s your favorite “programmer ignorance” pet peeve? for a list of things that you want people to not be. The inverse of that list is approximately what you want people to be.

+21  A: 
  • Coding as a passion
  • Problem solving as a passion
  • Desire/ability to constantly learn

People with the above traits generally make the best coders. People you want to avoid:

  • Learned a few things well and don't want to learn anything new
  • Only interested in coding and not in the problem domain
  • An unbelievable resume but don't grasp common design principles
yup I agree totally. Passion is the answer
Preet Sangha
+7  A: 

Hates PHP but uses it when appropriate.

good one!! hehe
hasen j
best answer ever
+3  A: 

Beauty is in the eye of the beholder.

"Right attitude" either means fitting in well with the company platform, goals, and people, and being excited about the work, projects and company direction.

Or, "right attitude" means really wanting to be where the company is going, having the brains and talent, but maybe not everything on the technology list.

For me, "right attitude" generally never means someone so good in what they know, and so confident in it, that there is little room for compromise.

+37  A: 

Number 1 with a bullet: The candidate has realized that learning is a life-long pursuit and they've chosen software development as the thing they're going to learn.

Jason Punyon

For me, the most important thing is passion. I don't hire people who don't program in their spare time as a hobby.

Edited to add: this is not an exclusive list. I also count "not a douche" as an important thing in a hire.

Additionally, I agree that there are amazing programmers who do not program on their own time, but it's a strong enough indicator of passion that I'm willing to risk not hiring a great programmer who doesn't code in return for a great programmer who does.

Tim Sullivan
you have 1 employee?
Shawn Simon
That's pretty shortsighted. I used to be heavily involved in open source, but now with a kid and other responsibilities, its unlikely I'll be involved in it again for a very long time. Not everyone has the free time to do this.
@Shawn: I am a partner in more than one company, and have hired a dozen or so programmers over the last 10 years. Doesn't make me an expert, but I know what's worked for me.
Tim Sullivan
@Steve: A lot of people with kids and other responsibilities have hobbies. If yours isn't programming, that's fine, just not as one of my new hires. You may see it as shortsighted, but I see it as an indicator of passion.
Tim Sullivan
@Tim Sullivan, whilst I appreciate this point of view, but sometimes it is also an indication that there is not enough or no intresting projects at work, or what they do at work cannot be made publically available. It is nice when programmer develops in spare time, but it is nice when programmer
does not have to develop in spare time because she or he gets to do stuff exciting enough as it is at work. I don't expect every talanted devoper to develop in spare time.
@Totophil: While I'm sure some people program as a hobby because their work development life is unfulfilling, I think that people who are passionate about programming PROGRAM FOR FUN, regardless of what they do at work, because they EFFING LOVE IT. I always have, and my employees do too.
Tim Sullivan
Personally I have found some of those people are the worst hires as they are more interested in what they want to do than what they need to do. And penalizing people for not having the free time to program is not only morally wrong it is most likely illegal discrimination.
@HLGEM: Sorry, selecting people that love to program so much that they do it as a hobby is discrimination? Against who, the lazy and unmotivated? People have time for what they want to have time for, and I want to work with people who have time for programming.
Tim Sullivan
Also: I have to say, I'm *shocked* at the number of downvotes I've gotten about wanting passion in a programmer. What does it say about the downvoters that they disagree with having passion, I wonder.
Tim Sullivan
IMHO, programmers who write code in off-time are some of the best programmers in the industry... You have to live, breathe, eat and shi.. Well, you have to spend a lot of time in a compiler to be really good at what you do.
I knew one that coded on the side; smart, but a pain. Not a team player, arrogant, and took calls at work for outside clients. I understand your point, but the presence of side programming does not guarantee passion; having pursuits other than programming does not guarantee lack of passion at work.
Bernard Dy
Please do not assume that I hire in a vaccuum, and look exclusively at one thing. However, that one thing is an absolute. Another absolute is "don't be a dick." The presence of side programming is a *strong* indicator of passion, not a 50/50 chance.
Tim Sullivan
I would agree that side programming is a strong indication of passion...but the converse is not true. I know some *very* good programmers (not me) that have no interest in it outside of the workplace. They're very passionate about it at work. But they have other interests at other times.
@Beska: As I've said, that's fine. There is no perfect formula, and we have to select what we feel is best. For me, there are fewer passionate programmers who do not program as a hobby than there are bad programmers that do. Significantly fewer.
Tim Sullivan
+16  A: 

Smart and Gets Things Done

Also noteworthy is Steve Yegge's "Done and Get Things Smart"
+1  A: 

The attitude of "what can I do to solve the problem" instead of "who could be so nice to do everything for me while I'm having coffee".

+1  A: 

Number one for me is passion for coding and technology. In my team (some of whom I've hired) this is the one thing that all the programmers have in common whilst there is a diversity of actual skills. This presents me with an environment where I can match work to skills fairly easily and be confident that each programmer will get stuck in straight away and will stick out difficult problems to the end.

A solutions based attitude is also really important where the programmers will have to solve business problems as well as churning out code. I have asked "non technical" problem questions in interviews to get an insight into how people solve problems and just watching how people respond to these types of questions gives you a good insight into how they will react in the "real world". If they ask a few (up to about 5 or so) pertinent questions and then sketch out their solution and deliver it back to you within a reasonable period of time it's a good indicator of a problem solving mindset as well as attitude and passion. It also gives you good clues on how they will perform in the job (in my place they need to be able to solve problems, write code & talk confidently to the business).

So, to answer the question: Passion for coding & technology and a solutions based mindset.

Rich Andrews
+4  A: 

I think one should be careful when speculating about these matters.

I have only recently realised my own career desires fully. I have only just evolved a plan for putting them into action that I think stands a chance of succeeding.

The plan and career choice are nothing to do with software development.

I'm still a competent and valued member of my current organisation and just because I know my future lies elsewhere does not mean that I don't appreciate what my employers have done for me.

I like my workplace, am dedicated to my employers and produce good code. I came in on a pre-booked holiday to fix a glitch because leaving them with workarounds was unacceptable to me. I didn't begrudge the service, even though I took an hour out of my day and the problem was fixed in six minutes (I am the sole developer here).

Attitude while many employers might be worried that I don't consider myself a developer, just someone who could develop until he discovered what he wanted to do. I have known extremely enthusiastic and dedicated professionals, however, who do not provide anything like my service level.

Regardless of what job I am doing I have an attitude to work, what is generally called a "work ethic". I think that this is the level at which you should gauge a potential candidate. Not in some more granular aspect of specific job enthusiasm.

Someone might well love coding, they might just think you and your organisation suck, or they may think their personal projects are more important than the ones you give them, they may be well meaning but essentially have problems with communication or perspective. None of the suggestions I see here allow for someone who is technically competent with a passion for computing who nevertheless has a "work ethic" that is not compatible with your organisation.

I'm a service oriented employee. I perceive myself as offering an essential contracted service to my employers and it's a point of personal pride that I deliver that service and maybe a little more to the contracted level regardless of circumstance.

I imagine there are thousands of more skilled and experienced programmers with a much deeper love for software development than me. Despite this I am still motivated but by my own sense of identity, not by any abstract love of my discipline.

Finding someone who takes pride in their work regardless of what that work may be should, IMHO be the number one priority of any employer.

It is unethical for a company management to expect employees to be on "standby" or come to work during pre-booked holidays. Management’s job is to address business continuity in an ethical way. This is not to diminish, but rather highlight the importance of work ethics.
But if I choose to come in off my own back then that's not a problem, is it? Situations differ, YMMV
And besides the employers in question, in turn, give me some latitude to nip off an hour early on occasion... quid pro quo, you see.
+4  A: 

I like Eric Sink's post saying he wants developers not programmers

the empirical programmer
  1. Exudes passion for the topic
  2. Demonstrates passion with examples etc.
Preet Sangha

Passion. I like to hire people who are passionate about the things that they do.

+2  A: 

Done and Gets things Smart

+13  A: 

My boss always says: "Hire for fit, train for skills". What you have to keep in mind is the fit with your current team. Look at them, find what they have in common, what is missing. Learning a new API isn't a big deal for someone with motivation.

The scales you propose are interesting to evaluate your people but they won't tell you which one is better than the other. In the end, different types of problems requires different kind of people. Build your team with diversity, without having people on the extreme (to avoid personality conflicts).

Always look for passion, don't be afraid to ask non-work related questions. Especially if the candidate has a blog in which you identified some particular interests. An exemple, in my own interview, we talked for 15 minutes about Batman vs. Spider-man, obviously this didn't have much to do with the job I was appling for, but sure was useful to test my personality vs. my future team.

Having a good RH on board will help you identify "healthy attitude" programmer (or someone who will look at the attitude while someone else focus on the technical side). Stay away from big ego and depressed programmer.

+1 for comment about smart motivated people being able to learn what they might be missing. How's Mr. T, by the way?
@Beska Thanks! You can read the adventures of Mr. T on my blog !
+1  A: 

Why wouldn't the answer to this be the same for any job where the manager wanted to hire a good worker?

Good question. On the surface it might appear that working in a factory requires a different set of attitude values. But then some manufacturers like Toyota quite value attitudes similar to described above.
+5  A: 

1. About attitude The thing with attitudes is that it can change over time. But I think the most important attitudes I look for in a co-worker is curiosty and wanting to become better at what they do.

2. About what I look for in interviews Personally I look for passion for coding when I interview. It don't need to be fullblow passion but a hint. And with passion I mean showing an effort to learn more becomming better at what they do, a tell tale is that the have hobbies including coding. I also look for crossfunctionallty not beeing afraid to step in and do work in other areas.

Emil C
+1  A: 

Well, there are already 26 answers to this, so mine may not be seen at all. But, before I became a developer, I managed a support team, and later a Quality Assurance team. One of the things I could not STAND to hear from a developer is "You want what? No.. We can't do that..."..

IMHO, the developer is the CREATOR, so there is no such thing as "can't". A developer can do ANYTHING.. They are the creator! Now, some things might cost more money, take longer, etc, but NOTHING IS IMPOSSIBLE when it comes to software development.

If I were looking for a developer, perhaps I would present him with a VERY difficult situation, and see how they respond to it. Is it a "Oh, that can't be done...", or a "Well, it can be done.. Nothing is impossible, but it might take a long time, and impact the overall schedule of the project. If it's cleared by management, then sure, I'd do [this]..." Listen to his/her answer, to find out of it's real, or just an answer given to sound good during the interview...


Hmm, you don't want developers to be realistic? There is such a thing as "can't" in the real world, sorry. Developers have a responsibility to tell it straight. I don't want to be a yes-man to management just because it makes them feel good.
That being said, I try not to say "no, we can't do that" without studying the problem in depth. I give it a fair shake, and evaluate it based on the reality of the development situation, and report back on it as fairly as I can.
That's all well and good. You are doing the right thing. I'm referring more to the "no men" who just say, "Naa.. We can't do that.." Reasonable research is often required, and makes you a better developer if you can go to management and say, "We can do it, IF...BUT...", but not just a "NO.."...
Oh, okay, that makes sense. I agree with that.
+1  A: 
  1. Team player: Companies don't need individuals to write code they need teams with many people and a team that doesn't get along won't communicate effectively and will write code riddled with errors and bugs.
  2. Goal Oriented: An employee with the goal in mind works to archive that goal where as others don't see the goal and typically waste time and slack off.
  3. Portfolio: People with an extensive portfolio of software they have developed in the past are more likely to enjoy there job, the more personal or privately developed software the better.

Someone who identifies with the job is excellent manager material but if your looking for a person to write code you might want someone in between. - Code is a logical series of steps which embodies a theory or concept. - There is room for art in coding but a program is should above all be logical and efficient.

+7  A: 

The right attitude for a programmer is one where:

  • you realize that there isn't a silver bullet language or tool

  • you look for the answer yourself before you ask someone else

  • you understand that it may be cool to be buzzword compliant, sometimes things need to be quick and dirty

  • you understand the concept of necessary complexity

  • you try to hear out the business owner's problem before you start figuring out the solution

I don't agree with this answer, but point 4 saves it.

Ask him "what is the biggest programming mistake you've ever made?". Most of the times this will expose "hidden" aspects of the candidate's personality. Look for the good stuff :)

+2  A: 

I think you want someone who is a little cocky, but openly knows and admits they suck.

Generally the people with this attitude are great programmers, they know the fundamentals, but they know there is always room for improvement because they have the experience which has taught them that.

+2  A: 

Ask what books they read. Particularly in an age where fewer people read books, someone who goes out of their way to read books like "Code Complete" and "Pragmatic Programmer" is more likely to be someone who cares about the quality of their work and the effect it has on the project and other programmers. Granted, this is better for flagging good candidates than ruling out bad ones. Maybe also check out the Programmer Competency Matrix

+2  A: 

your bullets in OP are good, but make sure you don't have a negative connotation on either end of the scale - neither attitude is correct, and the type of attitude you want to hire is almost certainly dependent on the position and domain.

Dustin Getz

Passion for programming.

Passion for learning new things.

hasen j
  • Learning and practice
  • Perseverance
  • Planning and execution
  • Seeing the big picture
  • Thinking calmly, even under pressure
+1  A: 

Right attitudes for a programmer could be:
-Having diplomatic authority.
-Passion for programming.
-Being a teamplayer.

+1  A: 

The guy that's going to piss you off by insisting you do something in LISP instead of Python, and then please you by getting it done faster than you'd expected?

Curt Sampson
+1  A: 

Just to address the 3 scales:

identifies themselves with the job ↔ fully detached

This can be useful in terms of how much of their self-identity is their job and how do they interpret the job, e.g. code monkey or problem solver or some other vision. While each extreme is bad, I'd likely want someone who has some pride in their work and can identify the bounds of the job.

perceives code as a collection of concepts ↔ sees code as a sequence of steps

What if one sees code as a set of classes with methods? I may have done so much OO work that I'm drowning in that paradigm, but it is another perspective to my mind. Thus there are steps within concepts as I see it.

thinks of creating software as an art ↔ takes 100% rational approach to design and development

I'd think the flip side of art is that there is a systemic and straightforward approach rather than waiting for inspiration. There is some art and some science in developing software to my mind. The art comes from being able to look overall at the code and have a bit of a picture of how does the software model the world, while the science is more of a, "Does this work?" answer.

JB King
+2  A: 

Regarding the right attitude for a programmer: Like they said about pornography -- I know it when I see it.

Look for evidence of the three virtue of a programmer: Laziness, Impatience, and Hubris

  1. Laziness - The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful, and document what you wrote so you don't have to answer so many questions about it. Hence, the first great virtue of a programmer. Also hence, this book. See also impatience and hubris.
  2. Impatience - The anger you feel when the computer is being lazy. This makes you write programs that don't just react to your needs, but actually anticipate them. Or at least pretend to. Hence, the second great virtue of a programmer. See also laziness and hubris.
  3. Hubris - Excessive pride, the sort of thing Zeus zaps you for. Also the quality that makes you write (and maintain) programs that other people won't want to say bad things about. Hence, the third great virtue of a programmer. See also laziness and impatience.

Good Signs: Loves coding, but has a laundry list of complaints about the limitations of current tools. Wants to auto-generate almost everything. Develops useful portions of the code as re-usable modules, even if they won't be re-used any time soon. Spends time on problems like fixing the build process/deployment process/database connection setup/etc, because he's just so sick of it.

Sean McMillan

I have one criteria that was never mentioned:

The skills (at least good reading and writing skills) and interest for English language.


Because most of programming language, frameworks and documentations are done in English. Which explains why English-speaking countries are still the best software vendors.

Jesse Armand

the biggest challenge with hiring is the time commitment

but if youre a fan of manager tools podcast, they say theres no skimping on time when it comes to hiring good staff - it takes as long as it takes

to me the theories/patterns on good hiring practices are well established, the trick than becomes streamlining the interview process

as a basic run down, the hiring process i use is like this:

  • prep job description and list on popular job boards
  • have the office admin pre-screen resumes coming in (e.g. look for keyword .NET in resume)
  • create a 5-10 minute mini-interview with basic tech questions - have office admin run through test with people on the phone
  • get office admin to score phone tech test and schedule short interview with potentials
  • prep a longer tech test, when candidate comes in, chat for few minutes, give them test
  • score candidate on non-tech points such as communication skills, presentation, etc
  • gather shortlist of highest scoring potentials - 2nd round interview, this time with boss and senior tech guy (to throw more difficult questions at him)

i have an article called Hiring Programming Staff (Part 1). since writing this, i a few new ideas, so i will be writing an update in the near future



Not exactly answering your question, but this is what I wrote as a guide to my company's HR on how to filter resumes, before forwarding them to me:

One of these will be considered a sign of sexyness in resume of software engineers for the first impression:

+5 has programmed as a hobby at least once
+5 a sign of wide interest in a large number of engineering topics (electronics, mechanics)
+4 background in exact sciences (physics or math, but not CS)
+6 cleverness prizes (IOI, IPhO, IMO, IMC)
+4 strong early experience (making money from eng job at high school)
+3 academic studies during high school
+4 other achievements at infant age
+4 significant contribution to an open source project
+3 driving adoption of a technology at work place, challenging status quo
+3 signs of perfectionizm
+3 attention to world standards 
+5 a will to rewrite world from scratch to make it fit
+3 interest in modern technology (follows C++0x standard +8, boost +5, etc)
+2 nerdy hobbies (astronomy, photography, aeronautics, music, board games, lojban)
+2 resume in plain text
+2 any other sign of severe brilliance
+2 startup raising attempts
+2 military background (aham, aram, maha - good, matzov - bad)
+2 experience outside Israel
+1 is female, or other discriminated group (new immigrant, jewish, etc)
+2 a link to wikipedia entry about you or your product
-10 if violates NPR 

These signs Pavel doesn't like in a resume of an engineer:

-2 english spelling misteaks 
-6 spelling mistake in a name of a technology
-1 tpyos or writes poor syntax
-2 wrong punctuation
-2 mentioning experience prior to skills
-2 mentioning education before experience
-7 intermixing skills of different magnitude or value, example: "good at C++ and HTML"
-2 mentions the C++ course he attended at Sela
-10 stating a tool as a "language" in experience (ex. "Visual C++")
-3 dumb sentenses with no meaning ("I have used Design Patterns. Period."). And I also know 'windows internals'. Daresay which??
-4 long (months) dysfunctional vacations and trips ever during lifetime
-2 academic studies of dubios disciplines (ex. musicology. psychology, phylosophy)
-4 extra high (overinvested) psychometry or other misachievements (or misgoals). Above 760 is usually a bad sign.
-3 a resume in Microsoft Word format
-1 a resume in hebrew or other local language (sorry)
-1 non-ISO8601 date format in a resume
-2 crappy facebook profile
-8 any sign of dumbness
-1 for every page of the resume
-1 is older than myself
Pavel Radzivilovsky