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.

It occurred to me today that often the real goal of questions asked on sites such as this one (where the questions tend to be more open-ended than say, SO) is for the OP to become happier upon achieving the result. We often excuse this by saying our desire is to be more productive or release a better product, but if you continue to look down this path you can determine that the OP seeks greater productivity or product-quality because those are important to his/her 'happiness'.

With that in-mind I ask this: Have their been efforts to study software development from this perspective? In other words, what practises increase happiness in those who develop software as a career, and who, if anyone, has researched this specifically?

As I mentioned above, they may include strategies that increase productivity or improve product quality, but by no means should they be limited to just those.

share|improve this question

closed as too broad by gnat, Kilian Foth, MichaelT, GlenH7, Dan Pichelman Aug 26 '13 at 16:27

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

    
This may be relevant: RSA Animate - Drive: The surprising truth about what motivates us –  Septagram Jan 14 '11 at 10:20
add comment

4 Answers

up vote 5 down vote accepted

Interesting twist...

After having thought for a while about where you're going, I think it looks like this:

There are mainly two personality types of programmers:

  1. Those enjoying the very process of programming. Investigating inner workings, hacking things together, experimenting with various tools, making cool stuff but not necessarily having any larger goal. Those are like children who love playing.

  2. Those seeking to accomplish projects. This group may also enjoy the process but their greater goal is to see some larger accomplishment. Here the motivation is ego-stroking, either consciously or subconsciously, to receive a certain reward in the form of a praise, respect and appreciation of one's accomplishments.

What would make those two happy?

  1. Everything that makes a process more fun. New and cool technologies, great hardware, comfortable environment, smart ideas, intellectual challenge, the feeling of having cracked something.

  2. Everything that facilitates the achievement of the large goal. Here go again great software and hardware, but only to an extent which helps with efficiency, speed and quality (whatever this is), beyond that is rather irrelevant.

1-2 are two orthogonal axes, a person may be positioned there to possess amounts of 1 and 2 independently of each other. With time the location in that coordinate system may change. I for instance experienced some loss of 1 but a significant increase in 2. That's my personal development. Everybody is to be found on those coordinates drifting around according to their personality change.

share|improve this answer
    
Interesting visual...I am not sure that I agree with axes, but that was a pretty creative explanation. –  Pemdas Jan 14 '11 at 5:07
    
I would rather say that every programmer has both of those personalities. Some are more inclined to enjoy the process of programming, others - the result, but only in rare cases somebody would not enjoy at all the process or not be interested in a success of a project. –  MainMa Jan 14 '11 at 11:11
add comment

Good working conditions will really make or break productivity/happiness.

Some absolutely necessary things:

  • High quality computers
  • Large monitors
  • Comfortable chairs
  • Single person office with a closing door

Other things that are also nice:

  • Relaxed dress code
  • Ability to listen to music (assuming it does not bother others)
  • Non-restrictive working times

Essentially making a happy and productive environment is making a nice work environment. Emulating conditions that are similar to what a programmer would have at home are what seems to be very good at making a happy worker.

As anecdotal evidence, at my school we have semi-decent hardware but it can take a while to compile. The chairs are your garden variety plastic molded piles of crap that are not worth the gas to burn them. You sit in rows next to other people and it is quite distracting and noisy. You have to wear uniforms and you cannot listen to music or teak breaks and just walk around or go outside to clear your head if you need to.

At my home I have a 23" monitor and a 2.9 GHz Quad-Core w/ 4GB DDR3 RAM. I can listen to music as I like. I work by myself and do not need to worry about being bothered by others. If I need a break I can do what I please. I can get a bite to eat or take my equivalent of a 'smoke break' and do a round of surfing on CS:S.

Consequently I do not find it a problem to do a good 4 hour coding session at home. Good working conditions are essential to a happy worker with in turn results in someone who will do a better job. The only caveat is the worker must be the type of person who truly loves coding, otherwise they will just stray and take advantage of the leniency for non-productive purposes.

tl;dr

Working conditions that are like what you have at home are crucial to happiness which equals productivity.

share|improve this answer
    
I am not so sure in "Single person office", communication in a team is vital and IMO with this you close that comm chanell that needs to be open all the time, but then is that comunnication constant interrupt ? I really don't know ... –  Antonio Bakula Jan 14 '11 at 14:15
    
@Antonio Bakula Well yes, maintaining active communication is important. I'm not saying stay in your single person office at all times, but when you get in the coding groove it can be pretty darn easy to get knocked out if you are surrounded with distractions. If you are working all by your lonesome you need not worry about being disturbed. –  Glenn Nelson Jan 14 '11 at 21:13
add comment

Happiness is about enjoying the present moment.

You must love what you have today and enjoy it. Regardless your current situation.

Most people are not happy because they have been conditioned by their parents (not intensionally, they have been conditioned too) and the medias.

They learn that to be someone, you have to get your diploma, to be rich, have a model as girl friend, have power and of course, be famous.

How much of us will succeed in that? Very few. And it's not guarantee that you will be happier. In fact, studies shows that happier people are not the richer. Far from it.

Supringly, the nation that has the highest GNH (Gross National Happiness) is Bhutan. A country that is well known for his Buddhist spiritual values and where income per person is one of the lowest in the world. The core value of Buddhists is just that, focus and enjoy the present moment.

To be happy, you have to re-educate yourself and give importance to things that matters. One of the most obvious thing is that you are alive.

Does this means you shouldn't seek for a second monitor, a faster machine, nice projects to work on, and so on? Of course not, you should always seek for any improvement in your life.

The difference is that should not care too much on things you don't have (yet), but care much on things you have today.

That's my personal view about happiness, and sorry if it's less technical that the original question incurred ;)

share|improve this answer
add comment

Happiness in programming works basically the same as happiness in everything else, you need a a challenging (but not too difficult) task for which you perceive a purpose accomplishing

I can recommend the book Happier by Tal Ben-Shahar who taught a course at Harvard entitled "Positive Psychology.

alt text

share|improve this answer
add comment

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