• You are currently viewing our forum as a guest, which gives you limited access to view most discussions and access our other features. By joining our free community, you will have access to additional post topics, communicate privately with other members (PM), view blogs, respond to polls, upload content, and access many other special features. Registration is fast, simple and absolutely free, so please join our community today! Just click here to register. You should turn your Ad Blocker off for this site or certain features may not work properly. If you have any problems with the registration process or your account login, please contact us by clicking here.

Programmers are a tiny bit introverted, but otherwise agreeable

Seymour

Vaguely Precise
Joined
Sep 22, 2009
Messages
1,579
MBTI Type
INFP
Enneagram
5w4
Instinctual Variant
sx/so
Ars Technica posted an article on computer programmers and the Big Five. Here's the core bit:

Cathleen O'Grady said:
The trait with the strongest link to programming skill was intelligence, with individuals who scored higher on intelligence tests producing code with fewer errors. Openness to experience was also vitally important, as Gnambs expected. Conscientiousness was too, although to a lesser extent.

As for the more popular stereotypes, the only one that held any water was the expectation of introversion: people with lower extraversion had higher programming scores. Neuroticism and agreeableness, however, didn’t display any strong link to programming.

All that generally makes sense to me, with the caveat that the kind of "smarts" IQ tests measure are useful for programming, but there are a wide range of intelligences that aren't measured by IQ. Also note that even though people with high Openness to Experience programmed better, being a programmer isn't correlated with higher Openness to Experience.

It's interesting that some studies of programmers and MBTI type suggest that computer programmers tend to be more Sensing and Sensors tended to be better programmers. That result, when compared to result of the above studies, goes against the normal correlation between Openness to Experience and MBTI intuition (0.72 correlation, which is pretty strong).
 

Siúil a Rúin

when the colors fade
Joined
Apr 23, 2007
Messages
14,037
MBTI Type
ISFP
Enneagram
496
Instinctual Variant
sp/sx
[MENTION=8074]Seymour[/MENTION]
The preference towards sensing is different than assumptions I've found online but I can understand it. Programming is completely deterministic in nature - unlike philosophy or theoretical physics. Programming does have a strongly concrete element to it.
 

Seymour

Vaguely Precise
Joined
Sep 22, 2009
Messages
1,579
MBTI Type
INFP
Enneagram
5w4
Instinctual Variant
sx/so
[MENTION=8074]Seymour[/MENTION]
The preference towards sensing is different than assumptions I've found online but I can understand it. Programming is completely deterministic in nature - unlike philosophy or theoretical physics. Programming does have a strongly concrete element to it.

It's true that a program is completely deterministic. Also computer languages have lots of nitpicky, detailed rules that you must follow in order for you code to function properly. So there's a huge number of details one has to get right in order to have it work.

The saving grace for me (as something with a strong N preference) is that I can really focus on the details once, do a good job, and then not have to return to the same detail for a good long while. It's really repetitive detail that kills me.

So, in my view there are a whole host of very conceptual (N-ish) concerns involved in programming:

  • Programming is largely about communication, where one communicates the function, intent and meaning of the code to those who must fix and maintain it later (even if that person is oneself). How to communicate best is very much an art form, and involves having a mental model of the future reader, what they might find confusing or surprising, etc.
  • Programming involves switching rapidly between various levels of abstraction.
  • Programming involves balancing various factors that are in tension with each other (readability, performance, completeness, consistency, succinctness, etc), so there are often no clear cut answers. Instead, it's a balancing act with some choices coming down to taste.
So, I think I tend to be better at some aspects of the above than some (though not all) of my Sensing programming coworkers. The STPs, in particular, tend to have an extremely practical approach, but one that prioritizes "it works" over some of the other concerns. My SJ coworkers tend to be better at maintaining patience with repetitive detail, reviewing code and design, and having more facts at their fingertips. My NT coworkers tend to have more patience with the drier parts of theory, but less patience with the interpersonal and communication aspects.
 

Siúil a Rúin

when the colors fade
Joined
Apr 23, 2007
Messages
14,037
MBTI Type
ISFP
Enneagram
496
Instinctual Variant
sp/sx
[MENTION=8074]Seymour[/MENTION]
I would also think that any creative field benefits from diversity, and the individual element is important. Stereotypes miss the point when they become exclusive or are assumed to be completely true. I know an ISFP on this site who scored in the 96% for analytical reasoning on the GRE. Since it is the test taken by everyone entering graduate school, it is a significant score because that competition is with engineers, scientists, mathematicians, etc.

On a related note, I'm going back to school to study web technology which may include at least some programming. My personality type is closer to yours than it is to STs or NTs. I'm hoping my ability to organize and analytical reasoning strengths will carry me. I expressed concern about the overwhelm of details and my INFP sister mentioned that there are some auto corrects applications for code just like there are for written text? That would greatly help the people who overlook some details.
 

Poki

New member
Joined
Dec 4, 2008
Messages
10,436
MBTI Type
STP
Instinctual Variant
sx/so
It's true that a program is completely deterministic. Also computer languages have lots of nitpicky, detailed rules that you must follow in order for you code to function properly. So there's a huge number of details one has to get right in order to have it work.

The saving grace for me (as something with a strong N preference) is that I can really focus on the details once, do a good job, and then not have to return to the same detail for a good long while. It's really repetitive detail that kills me.

So, in my view there are a whole host of very conceptual (N-ish) concerns involved in programming:

  • Programming is largely about communication, where one communicates the function, intent and meaning of the code to those who must fix and maintain it later (even if that person is oneself). How to communicate best is very much an art form, and involves having a mental model of the future reader, what they might find confusing or surprising, etc.
  • Programming involves switching rapidly between various levels of abstraction.
  • Programming involves balancing various factors that are in tension with each other (readability, performance, completeness, consistency, succinctness, etc), so there are often no clear cut answers. Instead, it's a balancing act with some choices coming down to taste.
So, I think I tend to be better at some aspects of the above than some (though not all) of my Sensing programming coworkers. The STPs, in particular, tend to have an extremely practical approach, but one that prioritizes "it works" over some of the other concerns. My SJ coworkers tend to be better at maintaining patience with repetitive detail, reviewing code and design, and having more facts at their fingertips. My NT coworkers tend to have more patience with the drier parts of theory, but less patience with the interpersonal and communication aspects.

I like KISS methodology.

I look at functionality, not simply that it works. But it needs to be easily refactored, changed, maintained, understood, easily reused. Functional goes way beyond just works. I can't even really break it down between N vs S. I know N's who code more like me and some who code more in a stereo typical N style. I refuse to over use or complicated simple stuff for the sake of creating that perfectly patterned masterpiece.

I agree, Balance is the key to being a good programmer.
 

Bush

cute lil war dog
Joined
Nov 18, 2008
Messages
5,182
Enneagram
3w4
Instinctual Variant
sp/so
I understand the MBTI results being what they are, and I most definitely understand that MBTI/Big 5 correlations are just correlations. But I would have thought that MBTI dichotomy strengths for the profession would have been strong enough that the Big 5 results would have reflected the same thing.

Neato.
I expressed concern about the overwhelm of details and my INFP sister mentioned that there are some auto corrects applications for code just like there are for written text? That would greatly help the people who overlook some details.

Yeah. In pretty much every IDE (think word processor for programming) can turn on and off autocorrecting or suggesting names of variables, putting in parentheses and braces, and so on.

Lets you focus on the higher-level stuff. (That is, if it doesn't annoy you. If it annoys you like it does me, it's counterproductive.)

And even when you run code without "spellcheck," you're not exactly submitting a written document. That is, your document could have typos and you wouldn't know. If code has typos, by and large the thing that tries to compile and run your program will tell you where they are.
 
Joined
May 31, 2015
Messages
181
MBTI Type
ISTP
Enneagram
7w8
Instinctual Variant
sx/sp
So, in my view there are a whole host of very conceptual (N-ish) concerns involved in programming.
There is a grey scale between N and S. After programming for a decade or two it is often possible to break down things to "trivial" components so N-ish things look more like a set of a lot of S-ish things. After some time the lower level trivial parts are solved by your reflexes and the higher level frame/skeleton of the system is the only thing that you have to design well at the beginning. If it is possible to find out the most important factor/goal (or the 2-3 most important things) then it is very easy to create high level plan (and high level interfaces) of manageable size even for a system that is considered extremely huge by most. Planning and coding can be arranged into a hierarchy where you can not go too wrong if you calibrate well at the "root of the tree". Finding the most important factors is the key to solving problems in general, even outside programming.

The STPs, in particular, tend to have an extremely practical approach, but one that prioritizes "it works" over some of the other concerns.
I'm an STP but one thing I hate to hear is that "it works". It is actually our INTP leader who says this all the time. "It works" can be said even about the crappy solution of a 10 year old child. Still, it is probably a crappy solution to a problem of a certain degree of complexity.
 

Bush

cute lil war dog
Joined
Nov 18, 2008
Messages
5,182
Enneagram
3w4
Instinctual Variant
sp/so
Yeah. I'm a big believer in "the ends justify the means."

But uh. So rarely do people think of all of the ends.

If you have a small task and you just need a quick-and-dirty solution, for a one-time problem, that only you are involved with.. then yeah, you can get away with writing a whole Perl program in a single line, with no comments or documentation. Go nuts!

But, hell. You usually have to account for other people or for future use. Best to know what the hell is going on in your own program.
 

Coriolis

Si vis pacem, para bellum
Staff member
Joined
Apr 18, 2010
Messages
27,230
MBTI Type
INTJ
Enneagram
5w6
Instinctual Variant
sp/sx
Yeah. I'm a big believer in "the ends justify the means."

But uh. So rarely do people think of all of the ends.
Usually I'm the one to point this out. I agree with this approach as well.
 
Joined
May 31, 2015
Messages
181
MBTI Type
ISTP
Enneagram
7w8
Instinctual Variant
sx/sp
Yeah. I'm a big believer in "the ends justify the means."

But uh. So rarely do people think of all of the ends.

If you have a small task and you just need a quick-and-dirty solution, for a one-time problem, that only you are involved with.. then yeah, you can get away with writing a whole Perl program in a single line, with no comments or documentation. Go nuts!

But, hell. You usually have to account for other people or for future use. Best to know what the hell is going on in your own program.
To find out whether something is a small or large task and whether something has to be maintained for long term you need knowledge you often don't have at the time (business goals, future budget for physical architecture, etc...). In case of a large system (several hundreds of lines of code to several (ten) millions) this often results in a lot of shitty code even if you have good programmers. A tech startup usually launches with a few people who don't know the end goal and many of the developers are beginners working for low wages so the end result is often very low quality from an architectural/maintainability standpoint even if the solution was enough for the company to survive and reach the profitable margin. I'm saying this by looking at systems from a high level architectural perspective (organization of data structures and interfaces - if at all these are present) and not from a lower level one (actual implementation of modules) but they are still totally shit in 90% of cases. The creators had fun, in best case they learned a lot and left and now its time for you to shovel the crap. For some time I actually enjoyed shoveling the crap but I realized that it isn't really worth the invested energy and often you are asked only to stick another layer of crap on top of what is already there.

This is the dark side of programmer jobs, you almost always dig either in your own crap or in that of others'. In best case if you have a clue about business and the whys then you are not constantly cursing the owner of the code with a high WTF/minute. This is why I started focusing on smaller "single-programmer" contract projects (that are mostly about creating new smaller pieces of software), this protects me from many of the previous problems but this also has its own disadvantages. What I would recommend for programmers is to go for smaller and new projects to learn a lot and to have fun. Not everyone is the same, I've already learned my lessons and became a mercenary. A newbie might have a totally different perspective.

Still, a hobby project (or a one-time throw-away script) where you are in control and the whole vision is yours (and you can develop it without deadlines for fun) is very different from a (huge) project you work on for a company with a lot of other developers where often noone has the big picture and you are often instructed to write crap and dig in your own and others' crap.
 

Poki

New member
Joined
Dec 4, 2008
Messages
10,436
MBTI Type
STP
Instinctual Variant
sx/so
I don't mind fixing other people's code. I simply analyze, rewrite, refactor, and make it my own. If it's a current co-worker I analyze and follow the frameworks he put in place unless it's really bad and then I refactor that piece of code to simplify and de-complicate things.
 

Bush

cute lil war dog
Joined
Nov 18, 2008
Messages
5,182
Enneagram
3w4
Instinctual Variant
sp/so
I don't mind fixing other people's code. I simply analyze, rewrite, refactor, and make it my own. If it's a current co-worker I analyze and follow the frameworks he put in place unless it's really bad and then I refactor that piece of code to simplify and de-complicate things.
If you have the opportunity and resources, this is a wonderful approach. Even in general. Someone else's programming, someone else's lecture slides..

Maybe you've turned their spaghetti code into something that is not spaghetti code, into something that would benefit everyone. But even if you haven't, you have made it your own anyway and so you can still work with it much easier than you could if you'd simply left it as is.
 

Poki

New member
Joined
Dec 4, 2008
Messages
10,436
MBTI Type
STP
Instinctual Variant
sx/so
If you have the opportunity and resources, this is a wonderful approach. Even in general. Someone else's programming, someone else's lecture slides..

Maybe you've turned their spaghetti code into something that is not spaghetti code, into something that would benefit everyone. But even if you haven't, you have made it your own anyway and so you can still work with it much easier than you could if you'd simply left it as is.

Reverse engineering and understanding is one of my strongest aspects. Which is why it doesnt bother me. I can then choose to follow same frame of thoughT or go off on my own. I have actually been told I have some of the easiest code to read. Very clean, organized, and structured.
 

Electra2

New member
Joined
Nov 28, 2014
Messages
13
MBTI Type
INFP
I have done some basic beginner programming in xhtml, c++ etc. but I struggled with the fist python lessons as they where mathmatic functions :p
after that it s fun. I tend to do a lot of typos which I realise just after I click compile and run ;)
 
Top