11

I often times ask myself why I prefer one language over another.

Whether it was the conditions of my life that shaped my preference subtly over the years, long before I had ever even seen a language.

I've asked myself if particular languages, patterns, or technologies can feed certain personality-traits unconsciously and make me a more tempered person, or less-tempered person. Would my choice language/technologies make me a more friendlier person? Cause me to feel as though I carry esoteric knowledge and am worthy to be adored?

I know that as a developer I've met many other programmers who have ego-issues. Yet others have severe insecurity-issues and feelings that they are incapable of doing anything really well. I'm curious which leads to the other, if any leading is taking place.

Do you think programming has affected you? Do you think your personality helped you pick your choice-technologies?

Other Questions of Relevance

16 accepted

Interesting question :) I'm not sure if using one tool or programming language will alter a person to become more youthful (Delphi?), anal-retentive (SML?) or bitter (COBOL?). But I'm convinced the opposite is the case -- that different personality types are attracted to different programming languages, tools, and methods.

For the sake of argument (and for fun, really), I'll take the Enneagram as a starting point, and try to make an educated guess at what languages each personality type might prefer.

Disclaimer: I am no psychologist, and I don't know hundreds of different languages. In essence: all of the below may be complete bunk.

Well anyway, here goes:

1. The Reformer

The One's attention goes to appreciating the excellence and elegance in anything such as a shape, musical score, a piece of art or a speech; to noticing and correcting errors; to identifying and adhering to standards of perfection in thought, feeling and behavior. Ideal: Perfection

Technology/Language preference: Anything 'clean', standards-compliant and highly optimized. A clear preference for assembler and low-level C code.

2. The Helper

The Two's attention goes to interpersonal relationships and paying attention to important people, to giving to others, and to gaining approval. Ideals: Humility, freedom

Technology/Language preference: Probably wouldn't be a coder in the first place, but would probably write some of the best commented/documented code you've ever seen. Proponent of and contributor to open source projects.

3. The Achiever

The Three's attention goes to setting goals and hitting their targets, to success and creating the "right" image in the eyes of others, and to doing rather than being. Ideals: Success, hope

Technology/Language preference: Prefers efficient, fast, low-learning-curve tools - anything that helps reach his goal quickly without sacrificing code quality. Uses C#, Python, Ruby on Rails, etc. Holds code to a very high standard, hates bloat and other people's buggy code.

4. The Individualist

The attention of Fours goes to what is missing and desired, to loss, to emotions, to drama, and to longing for the ideal and distant ? thus, the sense that the heart is broken or damaged in some way. Ideal: Originality

Technology/Language preference: Esoteric or specialized languages like Ada, Smalltalk, Prolog, or even Lisp. Would fake their own death to avoid working with mainstream tools or languages like C++ or ASP.NET. Probably has the craziest casemod in the company, and might not be running any O/S you've ever heard of.

5. The Investigator

The Five's attention goes to gathering knowledge and wisdom, to thinking and observing, to protecting inner resources and to warding off intrusions from the outside. Ideal: Omniscience

Technology/Language preference: Only uses 'academically correct' tools and languages. Insists on best practices in testing, development, coding style, security, etc., completely without regard for practicality or economic viability. Uses Python, Perl, SML, C, etc. depending on situation.

6. The Loyalist

The attention of Sixes goes to questioning and doubting, to scanning their environment for signs of threat and danger, to searching for proof to confirm an inner sense of threat, and to creating worst-case scenarios. Ideals: Faith, scepticism

Technology/Language preference: Will do his job regardless, but prefers strongly typed languages with garbage collection, e.g. Java. Paranoid about thread safety, bad pointers and stack overflows.

7. The Enthusiast

The Seven's attention goes to options and possibilities, to seeking pleasure, to avoiding pain and discomfort, and their minds typically shift quickly from idea to idea. Sevens like to keep the mood upbeat, and so engage in elaborate future planning, playful interactions, and enjoyable activities. They typically have many interests and active imaginations. Ideals: Pleasure, opportunity, optimism

Technology/Language preference: Anything fast and easy. Doesn't have the patience to learn any language properly, and sticks to simple, instant-gratification visual languages like Visual Basic, Javascript and Flash/ActionScript. Probably enjoys showing off the application at conferences a lot more than coding it. Also has the best-looking girlfriend of any coder in the company.

8. The Challenger

The Eight's attention goes to issues of power and control, to making things happen, to protecting the weak, and to fighting injustice. With an intense, authoritative, and sometimes explosive energy, they are usually ready to face any challenge. Ideals: Power, truth, vengeance

Technology/Language preference: Prefers telling other coders what to do, rather than doing it himself. Wants practical yet highly flexible tools that never get in the way and can be stretched and bent to do exactly what the coder wants. Likes languages like C, Lisp and perhaps Python.

9. The Peacemaker

The Nine's attention goes to connecting with others, maintaining harmony, peace, and comfort, and avoiding conflict. They typically enjoy a feeling of ease, harmony, and peace. Ideals: Conflict avoidance, love

Technology/Language preference: Will adapt to whatever language he is asked to use or maintain. Likes weak typing and interpreted languages with just-in-time evaluation. Probably has a habit of silencing errors with empty catch(Exception e) blocks.

2

I agree that different people will prefer different tools. Many people seem to believe that a developer can adjust to about any language or IDE but I think this is not true. I, for example, can't stand IDEA. I'm an Eclipse user. I would never touch Emacs, I'm a VI guy. My first computer was an Amiga, I'd never considered an Atari or Mac. Today, I prefer Linux for serious work. Mac's tend to die unexpectedly under my fingers and Windows, well, I'm somewhat used to it. If KDE 4.2 is really ported to Windows, I will get in trouble at work for installing non-approved software. ;)

I'm not sure if there is a strong feedback loop, though. Maybe the language/tool of choice will keep the user longer in the comfort spot but I don't see a self-chosen tool to make someone a better/worse person. Quite the opposite: If a tool is imposed on someone, that can have much greater effects. If I had to use IDEA, I'd be looking for a new job. Since my boss allows me to use Eclipse (despite that everyone else in the team uses IDEA), I'm happy.

2

If we use the analogy of natural human languages, a normal human mind is equipped to learn any human language in the world practically from birth. It's part of our genetic programming. (See Wikipedia on Language Acquisition.) Which particular language you end up speaking depends on where you were born and what language(s) your parents and relatives speak.

If we extend this analogy to computer programming languages, I hypothesize that the programming language you currently use was determined mainly by the environment you are in, and what everyone else around you uses. Once you learn a language in detail, and use it everyday at work or in your hobby, there is little reason to switch. Your brain instinctively grasps the syntax and abstract concepts of the language already, while other languages may differ drastically in both syntax and concepts.

I don't think the human brain has a natural ability to grasp highly abstract operations such as those found in mathematics, recursion, etc. Of course the brain can be trained to do anything, so once you're already used to the concepts they come effortlessly, and you can enjoy coding in a language like Lisp.

I also think that people who are more visual may enjoy creating GUI applications, so may gravitate more to web applications and their associated languages.

That's my two cents. If I find any more references I'll post them up.

2

I think everybody's profession has effected them. Choosing to be a doctor or lawyer or any other collected occupation always means that you have to buy into the club. You walk the walk, talk the talk, and say the right things that people want to hear. If you don't you're alienated, and by definition generally not very successful.

Our surrounding culture always works its way into our perspectives and personalities. If our country, family and friends have a huge effect, where do you spend 40 to 60 hours a week?

As for technology, yes certain personality types even from the same basic background tend towards certain positions, which are almost always tied to technologies. I know several programmers from the same university as myself that went directly into mainframe technologies, even though the popular myth at the time was that they were dying. They choose an easier route, with bigger companies (and sometimes more pay). It was who they were.

Others lived at the edge, in riskier technologies, trying to catch the wave before it became big (some won, some lost).

Of course, just cause you were born to code in some language like Python, doesn't mean the region you live in will support that particular technology. In some places you just have to settle with Java or C# or whatever mass consumerist technology is supported by the local employers. Or move ...

Paul.

1

I don't know if the variability between programming languages, tools, etc. is big enough to account for any differences in personality traits. It's an interesting question though!

If you look at personality as such and the differences between ppl regardless of profession it is already quite hard to empirically detect clear relations between certain personality traits and for example choice of profession. If you narrow down the target group to only programmers it might be almost impossible to find anything.

On the other hand I would argue that the population of programmers is quite a heterogenous one. I would say that among programmers you can find very different ppl in terms of personality. In the terminology of the big5 of personality you could probably find very open, sociable ppl, very introverted guys, funky extraverts, total neurotics, calm agreeable ppl, etc. and anything in between...

On the basis of this you could say that there is enough variance to find relations with choice of language and tool. But I still think it could be very hard to detect this. Often our school, working place, opportunities decide for us on the technology we use which is a factor that narrows down the variability again.

Anyway, the question is interesting!

1

My spelling is not very good; therefore I use a spell checker whenever I write English. Likewise I try to use programming language that catch spelling errors quickly, e.g. I like language when all variables (not necessarily there type) must be declared before they are used.

So after having the Prolog system at university keep responding with ?No? whenever there was a spelling error in my program without giving me any help in tracking it down, I decided I would avoid any job using Prolog.

On the other hand, people that like to see quick results and believe they don?t make errors may be more inclined to use ?scripting? type languages without any unit tests.

1

I think the reverse is actually more important:
How does the choice of language affect your coding and designing style, and perhaps even your personality?

We can all intuitively feel how the particular expressiveness and design choices of a language affect the way you come up with solutions. At the most basic level you could say it's recursion against iteration, static-typed against dynamic-typed, etc.
Often a developer has no choice in the language being used, because of tradition or established procedure. If the effect of the original question is also true, then any developer must be very careful that a mismatch between her personality and the language being used doesn't result in worse code.

In the interest of research: my Belbin personality type is Plant, and my preferred languages are C++, Python and Lisp. C++ and Python because they are both multi-paradigm and flexible, Lisp because it's extremely flexible and at the same time very different from the languages commonly used in the industry. "Brain candy" so to speak.

1

Interesting question, my take is that those who program and do it for enjoyment as well as profit/career, have a couple of key personality traits or abilities.

1) An ability to think in incredibly complex abstract forms, there is little in the real world that prepares you for recursion for instance, yet most developers will have an ah ha moment when they first use it.

2) A need to control a small part of the world, and if that's not available we just build our own world and we control that. Note this doesn't mean we're control freaks, they wish to control others, we just need to bend a small part of the world, virtual or real to our will.

3) A joy in detail, a small example, - disks (used to) come in 3 sizes 8, 5.25 and 3.5 inches. Even the geekiest of other fields doesn't mind about sizing like that, why not large, small, mini. Think about it, it would be so wrong if we didn't know exactly how big those floppies were .... hmmm

I'm sure there are other character traits - Scott Adams has made a career from illustrating them, but back to your original question. I think we exhibit broad similarities far more than the differences. The languages we chose are like the medium for an artist. Sure water colour is way different from oils or sculpture, but I know that artists of each medium have much more in common than the trivial difference in their technqiue. Try looking at software development meme to see how similar a lot of us are, regardless of tech.

BTW does any coder belive ID - maybe the software development meme is truly darwinian?

0

Like Aaron Digulla, I have found what I believe to be the set of technologies that I work with best.

Over the years I have naturally fallen into a PHP/MySQL world. But the thing is, I don't know if this is resulting from an unconscious decision, or opportunity to use the technologies. Or perhaps a bit of both.

My first web development job was in an ASP-Centric Shop where I did no programming, be desired to learn ASP in order to be like one of the "smart guys" in the next room, rather than one of the "weird guys" in the design room. My next job also made use primarily of ASP, but I still not gotten a good grasp on it.

At my new job, we decided to implement some new web-based software, but it caused us to switch from classic ASP to JSP. I had yet another opportunity to learn a new technology, but JSP didn't catch on either. It wasn't until we decided to re-write a project in PHP that I really found my calling. I went home and read from w3schools on PHP Syntax, etc. And it made sense.

Perhaps I'm merely deluded, and not considering the fact that I had numerous exposures to similar languages which gave rise to my understanding of whatever was to come next. I can't say for sure. In recent years I've worked with .NET and C#, but have always preferred PHP. Even with the massive framework behind C#, I still preferred PHP.

I don't know why. I cannot explain it. I wish I had a better understanding of what goes in to my preference, and how I came about acquiring that preference.

0

I'd say all personality types eventually gravitate towards C++, LISP, Ada, or Haskell.

0

I've asked myself if particular languages, patterns, or technologies can feed certain personality-traits unconsciously and make me a more tempered person, or less-tempered person. Would my choice language/technologies make me a more friendlier person?

I think the programing language you are using doesn't effect your personality much if at all. However I think it can have a definite impact on your mood. If your programing in a language you enjoy and are comfortable it tends to make you happy. Alternatively if your programing in a language you hate or are not comfortable with you tend to be in a bad mood. So programing in f# doesn't really make me friendlier it just leaves me with more patience for people :).

Cause me to feel as though I carry esoteric knowledge and am worthy to be adored?

You might get an effect like that if the community around the language had a clique sort of dynamic. But there again its not actualy an issue of the programing language rather a side effect.

I know that as a developer I've met many other programmers who have ego-issues. Yet others have severe insecurity-issues and feelings that they are incapable of doing anything really well. I'm curious which leads to the other, if any leading is taking place.

In my rather limited experience people at the extremes like that are basically static. If your an egoistical jerk you'll always be one. Same for the chronically insecure. In the more normal case I think people bounce around above and below a healthy level of confidence gradually stabilizing as they mature.

Do you think programming has affected you?

Yes and positively I think. It makes you tend to think about things a little differently as these two links show.

Do you think your personality helped you pick your choice-technologies?

Yes, I tend to be inquisitive and like new/odd things. So for my recreational programing I tend to like to experiment with the either the newest thing, like f#, or something odd like maybe forth.

In summary I think different personality types may be drawn toward one programing language over another. Although weather this is because of any intrinsic quality of the language it self or rather a side effect of its community is hard to say. However I don't think that programing in a language will begin to affect one's personality.

0

Why is this question even being asked ?

0

For me, as with most developers, my choice of programming language was not a choice at all.

I learned in C++ and VB early on because that happened to be what the books I picked up taught.

I am now deep in the .Net stack because I got my first job at a Microsoft shop. I could have quit a good job and switched to, say, Java, or lobbied to convert the business to a more open-source approach, but I like .Net and there's plenty to learn without branching out deep into the other stacks.

One thought: I do write a lot of VB, although I prefer the elegance of C#. I don't know if that means anything.

As for the relationship between ego issues and insecurity issues, they are both ultimately insecurity issues in my opinion. Software attracts introverted types because it starts out as a really rewarding activity that is, importantly, solitary... And introverted types sometimes have social problems. Actually, I see the big egomaniacs as being the farthest out on the spectrum of insecure people. They just hide it behind a mask of aggression and defensiveness.

So no, I don't think .NET defines me as a consumer. I could just as easily have been a huge Mac guy or even a designer if things had gone differently in my life.

0

In my opinion - there is no relationship between your programming language and life experiences. Circumstances play a huge role in what languages one picks up and runs with vs. what your personality is like due to life experiences.

Where I DO see a link however is in the KIND of code you write based on your personality traits. The same language used by a team of diverse personalities with no coding standards enforced will reveal interesting approaches to the same problem. Some will be defensive, some will be offensive - with innumerable nuances reflecting their life experiences in code.

As with life, experience smooths out these nuances in programming style and you just become more consistent. Some would say more capable - but in reality, you are just becoming more acceptable to your society.

0

What this reminded me of - I have ALWAYS used a lot of parenthetical remarks in my writing (and my speaking, really), since well before I ever saw a computer (dating myself there.) And then I took remarkably well to LISP my sophomore year in college (remember this was a LONG time ago). Maybe this is irrelevant, but I do think there was something about the (strange) way my mind works that made me comfortable in that course where so many were struggling.

That said, I am a firm believer of the right tool for the job, and I love learning the quirks of a new language - like meeting a new friend. And like a new friend, each new language does add it's own piece to the puzzle.

But I don't think it can necessarily make the insecure more confident, or temper the ego-centric. But it's a nice thought!

Thanks for the question.