Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

From reading various comments on this site, surfing the net, and talking to other programmers/non-programmers I find that a recurring theme is that programmers think differently from non-programmers. Do you really think this is the case? Aren't programmers just people who have a skill that can be difficult to explain in detail to non-programmers? Isn't this the same problem that any skilled person has when explaining it to someone unskilled in that same area?

Edit 2: Hackers and Painters - This is a link from Michael's answer. Definitely worth reading if you've got a spare 15 mins

Edit: Here's a link to clarify my question

Programmers think differently than non-programmers

The author of this blog holds the stance that programmers don't think differently from others. Does anyone disagree with this? If yes, why?

share|improve this question

closed as not constructive by MichaelT, gnat, Giorgio, Oleksi, Kilian Foth Mar 21 '13 at 8:03

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Can you review this post in light of the FAQ and the Guidelines for Good Subjective Posts –  ChrisF Apr 8 '11 at 11:04
A "recurring theme"? Really? Could you provide links and examples of this theme? –  S.Lott Apr 8 '11 at 11:14
@S.Lott If I start typing "programmers think" in google it suggests "programmers think differently than non programmers" and the first result that comes up is a blog with a discussion on it. –  John Shaft Apr 8 '11 at 11:32
Most programmers are meh but I am quite special. –  Job Apr 8 '11 at 13:54
I don't know if programmers "Think Different" but Apple users certainly do. –  JD Isaacks Apr 8 '11 at 14:20

15 Answers 15

up vote 11 down vote accepted

It's been demonstrated that there are two kinds of thinking (logical and intuitive) and most people have a predisposition toward one or the other. I personally think that many programmers are balanced between the two (whole-brained is the term mentioned in the article), based on the fact that we understand things like elegance and "good-looking" code (as opposed to perfectly understandable but "ugly"). Also, in my experience many programmers are very interested in the arts - I and several of my classmates are musicians, and Hackers and Painters shows at least some interest in art as well. It is also clear that good programmers are logical - I don't think a lot of evidence is needed to show that!

My conclusion is that the type of person drawn to programming is this "whole-brained" type - one who through training or from birth is able to draw on the resources of both sides of his brain. It is not that some people can program and some can't (although just as in music it is clear that some will never be good at it no matter how hard they work (their talents lie in other areas)), but that natural selection will filter out the people that don't have the correct mental orientation for the task.

share|improve this answer
Hackers and painters is an excellent read. –  John Shaft Apr 11 '11 at 7:28

Professionals in every profession have a way of thinking that differs from the others. After all, 'tis natural - you went to school and studied exactly for that reason; so you could develop that way of thinking. So yes, to that first questions.

What one should never do, however, is think he is better than others in any way. And that is something IT people in general (regardless of what they do), IMHO, often do (the "1DI0T", the PEBKAC example and so on.). While in real life, there are a lot more essential professions whose knowledge we do not posess.

So, a little humility people.

share|improve this answer
I think it's supposed to be "ID:10T". –  EpsilonVector Apr 8 '11 at 12:00
OSI Layer 8: en.wikipedia.org/wiki/Layer_8 –  StuperUser Apr 8 '11 at 12:08
A biologist, a physicist, and a mathematician were sitting in a street café watching the crowd. Across the street they saw a man and a woman entering a building. Ten minutes later they reappeared together with a third person. “They have multiplied,” said the biologist. “Oh no, an error in measurement,” the physicist sighed. “If exactly one person enters the building now, it will be empty again,” the mathematician concluded. –  Ant Apr 8 '11 at 13:08
An engineer and mathematician were in a bar trying to approach an intimidatingly attractive woman. The bartender said "if you're nervous, just move halfway along the bar towards her, and then halfway again, and then halfway again..." The mathematician gasped "I'll never get there!", the engineer replied "It's ok, I'll get close enough!" –  FrustratedWithFormsDesigner Apr 8 '11 at 13:51
A mechanical engineer, a programmer, and their manager were driving back from a conference in a mountain retreat, when the brakes went out. The driver, after some terrifying maneuvers, managed to get the car stopped with only minor damage. The manager said, "We need to form a committee to study the issue." The engineer said, "I've got a few tools in my suitcase. I'll start checking the brake system." The programmer said, "Shouldn't we push it back up and see if it happens again?" –  David Thornley Apr 8 '11 at 16:44

I think developers are the only people I know who use nested brackets in written communications (Because we use them all the time (unless your language doesn't support them)).

share|improve this answer
Unless you read David Foster Wallace. Then you see that some folks in the humanities -- not programming (it doesn't seem like it, anyway) -- work in nested brackets. –  S.Lott Apr 8 '11 at 11:13
+1 - Whitty and true; I like it. –  Craige Apr 8 '11 at 14:28
@ S.Lott: Good point! although there is ample reason for that. From his Wikipedia: He attended his father's alma mater, Amherst College, and majored in English and philosophy, with a focus on modal logic and mathematics –  jon_darkstar Apr 8 '11 at 17:45

I don't necessarily agree that programmers as such differ from 'regular people'.

However, I do get the impression that this field attracts a larger proportion of certain personalities, or at least a more vocal minority. If we ignore the subset that are basically only in it for the money rather than their love of programming (yes, they are programmers as well, but I often get the feeling they ended up in the field based on a coin flip, and might as well have become, say, mech engineers or accountants, and would be just as (un-?)happy in those fields), we are to some extent left with people that

  1. care about what they do,
  2. do it for fun, on their own time as well as company/university time, and
  3. enjoy learning new stuff.

These people tend to be the good to great ones, in particular if they also like sharing their knowledge and passion. The question, then, is whether these people have any other distinctive traits in common that set them apart from like-minded people in different fields, and I'm not really sure they do. Understanding of logic? Not really unique to programmers, but perhaps more common. Perhaps easily learning new programming languages indicates intuitive understanding of syntax and grammar? If so, we probably have more in common with linguists than any of us would like to admit, and I've seen enough crappy writers that were otherwise excellent programmers that I may have to doubt it. Good problem solvers, analytic mindset? Definitely not field-specific.

I'm starting to feel like I'm rambling, but basically, what I think I'm trying to say is this: Yes, there may be common traits among programmers. But these traits are also common within other fields, and not at all specific to programmers. However, they -may- rather be common to people who love what they do and do it well, no matter their field.

But that's just my two cents.

share|improve this answer

Different people will take the techie/non-techie split more serious than others, but, like you say, it will be the same in other areas of expertise.

You'd be interested in: Shibboleths, I'm sure there are a lot of ones used by developers.

share|improve this answer
Nice one! –  John Shaft Apr 8 '11 at 11:56
...so... how do you pronounce it? ;) –  FrustratedWithFormsDesigner Apr 8 '11 at 13:52
Shibbo ... hiphol...AAAHHH! –  Michael K Apr 8 '11 at 14:10
"Shibboleth". It reminds me of a sound bite I had at uni of Linus Torvalds pronouncing "Linux". –  StuperUser Apr 8 '11 at 14:12
Shibby! Dude. :-) –  Brian Knoblauch Apr 8 '11 at 17:21

Yes I think programmers are just people.

Programmers have a lot in common. That's probably why you have the feeling they are different.

The fact is, we are all different, regardless what we do.

share|improve this answer
I believe that all groups of people like to think that they're special. In reality, there's very little difference between individual x and individual y, other than the group. Don't project aspects of the group onto the individuals... –  Brian Knoblauch Apr 8 '11 at 17:21
"You are ALL INDIVIDUALS!" "We are ALL INDIVIDUALS!" "No, not I"... –  user1249 Apr 8 '11 at 19:01
@Thorbjørn Ravn Andersen: "YOU ARE CRAZY" –  user2567 Apr 8 '11 at 21:41
youtube.com/watch?v=jVygqjyS4CA –  user1249 Apr 8 '11 at 22:09
@Thorbjørn Ravn Andersen: "YOU ARE CRAZY" –  user2567 Apr 9 '11 at 10:28

Well if you accept the conclusions reached in this study Middlesex University study of early learning of programming, the answer appears to be yes there is a tendency for them to think differently. The test used to reach that conclusion is so simple it's hard to understand how someone could not get it - but, of course, I'm a programmer.

This was referred to on Jeff Attwood's pretty old blog post: Separating programmers from non-programmers.

Like everything it can probably be compensated for, and practised until the basic logic needed is no longer an issue.

share|improve this answer
+1 That Coding Horror post is exactly what I thought of when I saw this question. –  Poindexter Apr 8 '11 at 15:26

Non-programmers start counting at 1, programmers start counting at 0.

share|improve this answer
except old FORTRAN programmers –  Andy Dent Jun 14 '12 at 12:38
And VB programmers. –  Kaleb Brasee Jun 14 '12 at 13:58
And Lua programmers. –  doukremt Jul 19 at 17:50

I generally divide higher-end jobs into making things do stuff and making people do stuff, and those require different approaches and ways of thinking, and attract different personality types. People on those two sides tend to misunderstand each other, which leads to things like technical people having no respect for management.

Also, programming rewards the ability to see the details, which probably tends to select for people on the autism spectrum.

I don't think there's any fundamental difference between programmers and non-programmers, but different people tend to move into different roles. For example, programming and sales require very different approaches, so the typical programmer and the typical sales person will think differently.

share|improve this answer

Everything you learn and do leaves imprints in your brain makeup. On a physical level, learning is encoded in your brain as connections between neurons, and the more reinforcement that learning gets, the stronger (physically) the electrical connection that represents that learning becomes.

Those connections then inform the brain's interpretation of the universe that it encounters. My graphic designer buddy quite literally "sees" things that I have no idea about. We're looking at the same screen, but he sees the balance of the page, the spacing of words in the headline, the distances between paragraphs, the amount of whitespace, the interplay of the colors... Things that I know as concepts, but he experiences as a first-order property of the thing he's observing. And that's because of the particular neurological makeup he's developed over his years of training and development and maturation as a graphic designer.

I vividly remember when I realized that the learning I was doing about RDBMS work was impacting how I saw the world. I was driving to work and I saw cars on the freeway and what I "saw" was the categories of properties that would describe both "car" and "this car". So a database table Car might have fields door_count and number_of_cylinders and mpg_highway. I was an English major and marketing guy before shifting over to programming, and that shift showed up in my perception and thinking in some really radical ways.

share|improve this answer

I'll differentiate skills (drastically improve through practice/repetition) and abilities (innate and difficult to significantly improve) to clarify my answer (You may not agree with my words of choice.).

I don't think developing a skill has a drastic change on your personality. Do people who think logically, tend to be better than average in math, and enjoy working alone for long periods of time behave differently than others? Probably. This is a broad spectrum and I'm sure we're all spread around. Since this profession has a high percentage of males, this alone affects the personality (like sports fans, gamblers, criminals, and certain psychological afflictions)

No doubt there is a stereo-type and words like: techy, nerd, geek, hacker, computer guy (never heard anyone referred to as a computer gal) have changed in how they are used and the negative associations. Nerdy glasses became cool. The technology field became profitable, so that by itself creates this whole aristocratic perception.

Where we use to deal with everyone thinking we're dorks; now everyone wants to know when you're going to build the next Facebook.

share|improve this answer

Programmers are just engineers, and all the engineers think pretty much alike. This way of thinking is different from how purely theoretical scientists think, and it is very different from a typical mode of operation of arts and humanities specialists. It is natural, and one person can easily handle all three ways of thinking simultaneously, depending on a task given.

share|improve this answer
I am not an engineer. I am an ar-teest crafting intricate tapestries of decade old spaghetti and bloat into concise, intricate tapestries of well formed, refactored, object oriented ambrosia that the common engineer could not possibly comprehend with their inferior intellect! :) –  BBlake Apr 8 '11 at 11:58
Correction: a great many programmers are not engineers and don't have engineering degrees. The computing degrees / computing sciences degrees are not the same as engineering [this will vary by country]. And many engineers especially this one find it offensive that people without engineering degrees can even think to call themselves engineers. (I on the other hand can claim to be a programmer with an engineering degree, cos I have 2 degrees, one of then in engineering). Most western world engineering degrees are 4 years or more, and computing degrees 3 years. And worlds apart. –  quickly_now Apr 8 '11 at 12:01
By 'engineers' I mean all the hands-on applied scientists, not only those with specific engineering degrees. –  SK-logic Apr 8 '11 at 12:05
whoa there! I think you missed the point quickly_now. Just because you are not legally an engineer does not mean you cannot practice engineering. It is simply a cerification. Tell me what an engineer does, and I bet it sounds a lot like what a carpenter does much of the time when designing and planning a project. True, most programmers are not engineers, but do you really want to encourage an environment where programmers are discouraged from utilizing engineering principles? –  Morgan Herlocker Apr 8 '11 at 14:13

It's an epistomological question and a matter if we take the term "think" in a narrow or wide sense. For example, is it appropriate to say "The medicine man thinks, that his sacrifice will cause rain next time." or would it be better to say that he (mistakenly) just believes this.

In the narrow sense, there is, of course, only one way of thinking that is shared by people of all races, professions and cultural backgrounds.

share|improve this answer

I have noticed that programmers tend to be more precise on things. It drives me crazy that Thai people leave two spaces between their first and last names. I used to live in Banphai and not BanPhai or Ban-Phai. In code you must spell something exactly the way that the compiler will recognize it. I even do correct spelling and capitalization in SMS messages.

This is probably more an effect than a cause; forty years of coding will do that to you.

share|improve this answer

Yes, programmers think differently from non-programmers - but only in areas close to the area of programming itself. So, I don't think it boils down to programmers vs. non-programmers but is a recurring scheme in all aspects of life.

Doctors think different from non-doctors. If I have a headache I just have a headache, take an aspirin and mostly don't think about it any more. If a doctor has a headache he might also take an aspirin but think about what could have caused his pain, what signs this might send and so on.

Programmers think different from other people when they are using a computer. Since they know in a lot more detail how a computer works and how it can be manipulated, everyday tasks like posting a message on Facebook or oven getting money at an ATM might trigger a more detailed perspective like "what might go on in that little machine right now". But that's rooted in their daily life working with a computer. And since computers surround us almost everywhere these days it looks like a programmer often behaves (or thinks) different than another ordinary person.

But when getting away from technical matters I think most programmers are just as normal as everyone else.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.