No illegal drugs were consumed in the research of this article.
Pavlov's Leaky Dog
I should have used the term Dopamine in the title of this article, but it would have been less intriguing, no? Anyhow, generally speaking, Dopamine is a substance occurring naturally in the brain that assists in the experience of human pleasure. Cocaine has such a dramatic effect on the brain because it causes a build-up of Dopamine which then leads to elevated levels of pleasure. But, you're smart, you probably already knew all that.
Like cocaine use, we can develop a Dopamine release from various kinds of behaviors. Computer programming is one such behavior. Consider this: you might imagine that a person would not want to spend hours on end staring at a computer screen, skipping meals, losing track of time, only using a text editor, making small changes to a text file, observing small results, over and over again - in other words, the experience of computer programming. Those who enjoy, or, dare I say, are addicted to computer programming - they spend their time in a trance, going through the motions, waiting for the moment when they have solved a problem and their code does what it was intended to do, akin to the pleasure a person might get from solving puzzles for leisure. To make things worse (from an addiction stand point) it's hard to know when the puzzle will be properly solved, so a degree of nervous anticipation builds up before each verification and when the puzzle is finally solved, there is a mild or often intense feeling of pleasure. Which then shortly subsides as the programmer then repeats the cycle, onto the next puzzle, onto the next fix.
Programmers may even display a degree of heightened irritability if a puzzle takes too long to solve, and a degree of reluctance to take on trivial tasks that are not suitably challenging; i.e., when the strain of the work involved outweighs the pleasure payout. This might just be a measure to separate the addicts from the team players: their willingness to do the "boring stuff" that gets the project done vs. their zeal for the "hard stuff" that makes it interesting. Obviously, few people like to do the "boring stuff" involved in any endeavor, but to the programming addict, it's almost unbearable.
Great Programmers: Sometimes Addicts
To get good at programming, or arguably any non-trivial challenging skill, you have to spend a lot of time doing it. Hundreds of hours, perhaps even thousands. There is an innate pleasure associated with learning. Some people experience it more than others. Programming is unique in a sense, in terms of how many opportunities it can present to solve a puzzle and how unpredictable puzzle resolution can be. I am not a neurologist, nor have I conducted any formal studies, but anecdotally and empirically, I've noticed that many great programmers may have become great because they experienced a pleasure incentive that got them so addicted to the activity, that they spent so much time doing it, that they just inevitably became quite good at it. Part of how they got so great is that they continually needed ever more complex and challenging puzzles to solve so they could go through the incentive cycle again and again as a person does not get the same (or any) pleasure experience from learning something they already know or solving a puzzle they have already solved.
The Dark Side: Going Off Script
As anyone who is an addict or has lived with one knows, an addict's main priority is getting their fix - not: taking the kids out to play and certainly not getting a programming project completed. I once worked with a brilliant programmer who I believe was so addicted, that he would create challenges where there were none to make his work more interesting - I think this made the work bearable for him. Usually, he could not complete a project, because once all the interesting stuff was done, he simply could not motivate himself to keep on working on it. Clearly this was extreme and unhealthy.
From a business perspective, addicted programmers are in themselves a kind of temptation to employers. They can do amazing things that others can not do and often in a much in shorter time span. They have no problem working for long hours and are intrinsically motivated to work. However, they can also be very dangerous, specifically because they frequently go off-script. They have their own agenda where they create challenges where there otherwise may not have needed to exist or they work on some minor tangential aspect of a project for hours on end, leaving the project plan behind to program what they feel that they need to, not what the project itself needs.
If you are or a programmer you know is someone who may be suffering from what I can only really describe as coding addiction, the solution may be to find healthier rewards. Personally, I am sure that I fall into a trap of addictive computer programming binges at times. What I find most helpful is to focus on the end result: client satisfaction and high quality user experience. Also, having a good mechanism to track progress on projects can help a team realize when they have veered off track and what they can do to get back on track. Generally speaking, any activity that helps a person build personal will and discipline will help them overcome their habits and urges and get back on a more healthy and integrated track: team work, keeping their word and getting things done.