I was taking a look at some code I produced some time ago when I was having a really rough time. The company I helped to build was falling to pieces, my relationship was slowly melting and my own startup/project had also failed even before it started.

The code sucks. It’s really poorly written, full of holes everywhere. As I was reading through it I couldn’t avoid thinking “did I write this crap?”. And that made me think about the state of mind of a programmer. We never think about it. Nobody has ever written about it. In the “art vs. science” debate of programming I’ve always leaned towards it being more of a science than an art. But now that I think about it I was completely wrong. If the outcome of my work can be so greatly influenced by the state of my mind and my mood, then it’s nothing close to science.

As our profession keeps gradually maturing it’d be of great help to start considering psychological aspects of programmers. For example: when we need to estimate how much time a certain task might take. Are we considering the state of mind of the programmers involved? How can this be applied to “software quality”? Will the code produced by a “happy” programmer be equivalent of the code produced by a “sad” programmer? Even if both pieces of code [seem to] do the same thing?

As a final question to the community: who’s talking/teaching about this? We love to read/talk about “hard” technical aspects of programming; but, is there anyone studying soft aspects of programming?