Programming and Depression (2012)
robsheldon.com
robsheldon.com
The article explains some ideas about why programmers as a whole are under-appreciated.
But having your work be under-appreciated has very very very little to do with being depressed.
I am an engineer, and almost my entire social circle is technical as well. I've found that it's hard for friends to understand just how utterly irrational depression is. Being sad because something bad happened isn't depression. Being tired because you haven't been sleeping well isn't depression. And being un-motivated because you are under-appreciated isn't depression.
Yes, bad things happening, poor sleep, and under-appreciation can trigger or contribute to depression. And I don't doubt that the author is hurting and struggling and needs and deserves our help.
I'm just scared when we oversimplify depression, and try to explain it away. Depression is as nuanced as it is awful.
Imagine if this article was about brain cancer, but all the rest was the same. The overwhelming reaction would be, this is stupid, brain cancer happens due to genetic factors, exposure to carcinogens, radiation, etc., and obviously has nothing to do with people appreciating your work. Only the fruitiest of the alternative medicine fruit would even write such an article in the first place.
But make it depression instead of brain cancer, and then not only does the article get written, but gets a lot of "hmm, maybe he's on to something" responses.
It's wrong, it's dangerous, and it's terrifyingly common.
There is something tempting about reducing complex issues which have implications about the way we live our lives (like ADHD, Depression, etc) to simple physical reductionist causation. It is not a correct way of viewing the world and should be resisted.
For me, depression/mania is like a volume dial on life. Normal is groovin' to the music, bippin' and boppin' along to the ups and downs. Mania is the music cranked up to 11, the frenetic beat driving you, compelling you, controlling you. Depression is the world put on mute, nothing to connect with; you're drowning in silence. At the risk of belaboring this metaphor, depression is not listening to the blues; depression is a bubble of dead air, where you see other people enjoying music you can't hear and you don't know why.*
That's why I think the phrase "feeling depressed" is almost oxymoronic. You can feel unhappy or tired or something. When you're depressed, you're not feeling much of anything. You're just trying to exist in this apathetic, foggy cloud of pain and vague guilt.*
What's weird about depression is that the causes and symptoms are all mixed up a big feedback loop – unlike brain cancer (mentioned elsewhere in this thread). In the throes of depression, most people 1) do not exercise 2) have really erratic sleep schedules 3) do not eat healthy. If you could somehow reverse each of those symptoms, the underlying cause usually improves too. The problem, of course, is that no depressed person has the will or energy to do any of those things – even if they do them when they're not in the midst of a down cycle.
And obviously, chemical or physical (ECT) intervention is absolutely required for some people. But kind of like code duplication, treating the symptoms treats the disease too, for many cases. It comes back to something Alan Watts said. Humans like to try to separate ourselves from reality, differentiate between the experiencer and the experience, but of course, experiencing the experience is just part of the experience! Thus, if you change the experience (treat the symptoms), you also change the experiencer (affect/improve the disease).
* Depression is different for each person. These are just metaphors/ideas I've used in the past that people have identified with.
"Yeah, so like I was...
• taking my medication the other day and I noticed it was working so I looked up the formula and the background research
• eating out of this microwaveable and biodegradeable bowl that is made out of soy the other day and I was amazed that it held together so well so I looked into the manufacturing process
• watching this guy get out of a car with a prosthetic arm and leg and it was really neat the way the joints moved so I looked into the background kinematics/kinesiology
• watching the painters next door and I realized that the red was very vibrant and that it only took one coat for full coverage so I looked into the interaction between the binders and the pigments
...whoever did it came up with this super cool approach."
I think a little less introspection and a little more extrospection might be in order.
I am an adult with a child-like curiosity about the world and I am hardly very well employed. To be honest I think an interest-in/knowledge-of a wide range of fields complicates career choices.
I've never lost my fascination with the world and how it all works (from the level of politics and human interaction right down to the atomic level).
How could you not be fascinated with the universe, it's so big and so complex and there is so much to learn about.
You might want to find some friends more interested in how the world around them works.
*http://www.reddit.com/r/explainlikeimfive/comments/1xm490/el...
Have I looked into the technology? No. It seems to me an elegant application of technologies I have some notion of.
I think the problem is that you are looking primarily for extrinsic motivators. Of course it's an important part and it's hard to exclude them at all, but you gotta have something more then that. There should be an interest in doing things just because you like doing them and you _interested_ in them even if you couldn't share it with anyone else.
Like someone before me, I can think of hundreds of jobs that require skills with exactly the same opaqueness as programming: high finance, fundamental science, designing and fixing machinery, wiring electronics/floorplanning piping, genetics, law making, the list goes on and on...
There may very well be reasons why programming increases your chances on depression, but the fact that its hard to explain, hard to appreciate by outsiders, and doesn't get you laid, really aren't the root causes. If that were true, almost everyone would be suffering from depression.
One side note I have about the guitarist analogy is that looking at the music industry, it seems to me that incidence of depression, addiction, suicidal behaviour, etc is much higher among pop stars than it appears to be among high-profile technical people, which also invalidates the premise that 'recognition of skills' is such an important factor for depression.
Maybe they are.
I worked as a debt collector for some time. It's the kind of profession you would not think as something really benefitting the society, but I've always liked to think about it in a very possitive way: a company that reclaims its money is able to invest in the product development, rising employment, lowering the impact the production has on the environment etc.
I don't need accolades or recognition. The reward is the resulting awesome code for me. Knowing I built something useful is really all I need.
*edit autocorrect error
Rob could find the same fulfilment and admiration if he was to go and create his own work to display his talents to an audience. For example releasing an app to one of the mobile markets could draw a decent parallel to the attention the guitarist receives. The first piece of feedback about your work feels as good as the thousandth. It may take a little more to get the cute girl home but having your own project that's openly admired by X amount of folk is a few steps up the ladder.
If you are suffering from depression you'll probably won't be able to focus on your job or you can get obsessed with it which is also bad.
Programming is building things, you can in a way create something from nothing, you can get rich, you can create art, help others create things, if you are stuck building some godforsaken Linux library then get a guitar, you are not all day programming right?
I don't suffer (and never have) from depression so I can't know what you are going through (I do know people though who have so I do have many years exposure in that way fwiw.)
Programming is definitely one of those things that are harder to get reinforcement from the general public on. If that is what someone needs they will have a hard time. Not like in music (as you say) not even like in art, not like getting good grades and/or getting into a good school. Not like making wads of money.
That said early on I realized that many of the things that I did nobody cared about. Rc Helis? Did that in the 80's (gas powered) nobody cared back then (they barely do now) it was super niche. Photography? Really the same "he takes pictures". "He's a photographer" (almost with a laugh). Many would get annoyed actually. (I didn't care).
Likewise when I do negotiations and deals now (for clients) they have no clue of the effort that goes in. I once sent someone a picture of an each (an inch in height) of emails that I had printed out. To make the point (you have to toot your own horn as uncomfortable as that is). Otherwise the only thing they care about is the result. But you have to show why you charge what you do. Otherwise they think it's really easy.
But it's something that I have always dealt with with things that "I do" so I've just learned to accept it. But I've definitely recognized it and yeah it would be nice if people acknowledged what you did for sure. Luckily my wife will listen to my war stories on things. But if I show her a script that I wrote to automate things she glazes over "he does computer things" (like the guy who does woodworking I guess).
In a sense this is why some people need the trappings of success (nice house, nice car) because that way it's a marker that "they must be doing well if they could afford the expensive Porsche" and yes you do get treated differently.
I'd never considered that, but that sounds right. It might not even be to show it off to other people so much as to remind yourself of your own success.
I actually think the analogy of car mechanic is really appropriate. Many people (myself included) could not fix even the most trivial of problems. I have fixed some very very trivial problems by poking around / research, but as a general rule the car has just gone into the garage, and someone else has fixed it for me.
I've also once had a car in the garage for over a week. I briefly mentioned the problem, over the phone, to my non-mechanical grandmother, only to have her diagnose exactly the issue at hand. Simply: She has had the same thing happen to one of her cars. Those mechanics hadn't seen it. So she was correct. But that anecdote doesn't really mean anything. It was just one of those things. Experts can't know everything and those car mechanics will always know more than my gran about cars!
'So at the end of several days' worth of programming, and problem-solving, and forward-thinking, all a programmer might get is a "thanks, now here's the next thing I need you to do."' - yes! That's exactly how mechanics (amongst others) are treated! Who pays a mechanic and says "amazing job" when they don't understand the original problem? It's meaningless faint praise to say good job for something you don't have an inkling of the difficulty of.
The whole article sounds like the author wants programming to be treated as art. I tend to agree that it takes great skill and dedicated learning to become a good programmer. But I don't think that is what defines art. It takes skill and dedication to become a good carpenter, a good brick-layer, a good joiner... But no one gives these guys a round of applause when they do something subtly brilliant. It's only others in their craft that go "hey, that's really pretty nice, well done".
* Sorry. Building references just came to mind. People don't notice when they do a good job, but oh boy do they notice when a not-quite-good-enough job is done!
The main difference I was trying to illustrate between mechanics and programmers is that people occasionally get exposed to at least a little bit of the complexity that mechanics have to deal with. That might not make them treat their mechanics as well as they should, of course.
But, in programming, we want to hide as much of the complexity from people as possible. Error messages have to be meaningful to the layperson, interfaces need to be intuitive, and so on.
I haven't been able to think of another discipline quite like that. If anybody else can, I'd love to hear about it!
How about (staying with the building analogies because I'm in a building right now and looking around trying to think of analogies...) the electrician who has wired your flat? You don't think anything of the lights coming on when you flick a switch. Live in a place that's got slightly mediocre wiring, you don't really notice generally, But once in a while it bugs you that the light just blows sometimes. For no reason.
Of course, there's no error messages for a light failing. It doesn't tell us why it failed.
In truth I think our discipline is a unique discipline. Just like everyone else thinks theirs is (tell a plumber they're basically equivalent to a gas engineer or vice versa - but we 'normals' treat them that way). But we tend to concentrate on our new, unique-ish-ness. Our field is young, it has a long way to go. But essentially I don't see why programming needs to be, or should ever be, elevated to a particularly special status.
Point I didn't bother making explicit in my first post: Great music and art both have an effect on people who are not versed in music and art. Great programming only has an effect on fellow programmers.
EDIT
I think my basic point is that we should see our jobs as those where we get our work done. And we do the best job that we possibly can.
That's it. Not over-burdening ourselves for 'just one more push' (I'm currently failing somewhat with this in my current contract - do what I say; not what I do..). We as a group need to realise that like other people, we need to go home sometimes and relax too... That's the most beneficial thing. Not believing that our job is somehow exempt from the work/play balance
For example, I might build a new tool that better automates a part of our deployment process. Or I'll automate document generation and updates for our company wiki. I find that these tasks typically don't require a ton of work, but receive a lot of appreciation from the dev teams working with me.
The real value of a programmer is in understanding things fully (in order to formally articulate them in a program).
The suits I work with don't understand things fully, they just understand it to some (I'd say superficial) degree. Then they decide something but they don't know what constraints apply to what element in the process and their estimates / decisions / ... are regularly completely off.
So I am not only a programmer, but I am the "understander" of the domain (and thereby of the production part of our business). This creates a lot of frustration because the suits decide, yet they don't know that they don't know.
Hence also the tendency for good programmers to become independent or depressive.
My advice, either demand respect or go find people who you respect and who respect what you do. Then find a way to work with them.
My own theory (at least about myself) is that being a programmer, I spent at least half of my day looking at complex systems trying to figure out what is wrong.
Don't get me wrong Programming can be an incredibly rewarding experience...literally creating using primarily pure thought is about as close to "creative" as you can get.
But regardless how how rewarding it can be at times (when you get to marvel at the solution / result), the actual process and significant amounts of time revolve around solving problems. Essentially we spend most of our day focusing on negative facts, trying to figure out whats wrong.
When walking around the real world focusing largely on what is wrong, these thought patterns however are not nearly as effective as when dealing with, albeit complex, well defined logical structures. So not only does focusing on negative things itself introduce depressing thoughts and emotions, but the inability to find "real solution" to problems in the real world the way you do when programming can also be frustrating.
If you make something truly useful, and market yourself well, you're going to make a lot of cash. That's a key form of recognition for your work. It's up to you how you manifest that into social proof or other rewards. Get yourself a nice car or two, eat at the restaurants you like, get a decent watch. Give it away. Date models. Whatever makes you happy.
Or don't. That's one of the best things about the type of work that we do. Apart from the absolute upper echelon or startup founders, VCs, etc. we're able to go about our lives unnoticed and unperturbed. If you're Apple employee #17, or founder of a $100k/mo SaaS startup, chances are you can go about your life largely undisturbed.
Anyhow, looking for recognition from others is a pretty empty thing. Having the resources to live the life you want... That's much more compelling to me. I'll pass on the cheering, free drinks, and groupies. Being able to jump a flight anywhere in the world tomorrow, huck an M5 around the Nordschleife, or lay around Punta del Este for weeks. I'll take freedom and lifestyle over attention and recognition.
Most people will want to stay with you and have fun with you since you'll be able to: relax, make some joke, cook some great food, propose some activity to do. Focus on having fun with other people, it is your time to avoid thinking about code and programming.
I hate when people talk about programming to dinners or at the Pub. I took the habit of saying "Hey... I work all the day, no work talking now my friend ;-)".
I'm guessing that you have a completely different reaction to someone who is telling their friends about their latest rock climbing exploits. (Scaled this massive chimney, had to use this super awkward crack for a peton; super challenging climb! Etc, etc).
Why is programming treated differently from other activities your friends do?
I don't think it is exactly fair to say so. What a programmer can't do is show off whenever he wants (like “hey, look, I just refactored this whole project and now is does the exact same thing as it used to do”). This is more a problem of context: sometimes, people will be faced with problem, or won't be able to understand something; at this moment, you can demonstrate what you can have a computer do for you or how well you understand it.
But the point is that some people have less opportunities to show off, I have to agree with the fact that programmers are some of them. However, there are not alone (think mathematicians or accountant for instance).
But even if it came true for everyone, it just isn't the real reward, even for the virtuoso guitarists who actually get that kind of attention hundreds of times a year. If it's not intrinsically rewarding it's going to be another gig and mean shit-all in terms of how you feel.
Personally I consider taking up my hobby, programming/development/web, as my all-or-nothing full-time career to be one of my biggest mistakes.
But, if you create something that's appealing to a lot of people you have a good change of getting recognition for it, sometimes even more than you've bargained for. Just look at Dong Nguyen.
If there have been any studies on this, links would be appreciated.
I suspect that there is some correlation between 'programmers' and 'people who have depression' because 'programmers' includes many 'people with Aspergers' and there is known links between Aspergers and depression.
Although I to would love to see good quality research.
(This is perhaps a nice website idea: "Here's a research paper. What are the problems with it? Is "$Thing@ supported by this evidence? How do I find more research?"
This would be an attempt to educate the public about scientific literacy.)
I won't lie and say that programming is the most uplifting job in the world...its very physical implementation -- involving the long lonely staring at a plain text screen -- is a depression-breeding environment. What has helped me not be depressed about programming is to come up with much more intrinsic values for why I program. So I'm not programming to write better or faster code than the many geniuses out there, I write code to satisfy my own needs and goal.
So to the author's point above, I love the debates and criticism that Github fosters. Submitting a pull request and then repeatedly checking my email to see if the maintainer has made a comment is even more addicting to me than checking Hacker News. I don't mind a "thank you", but I really love a "Thanks, but this is feature creep" or "Why did you use this approach when our convention is [this]?" or even a "Please clean up your code, it fails [whatever code quality tool they've grafted on to the test suite]." Usually the maintainer is right, and I'll have learned a little more about best practices, and sometimes even if I disagree but am in a decent mood, I'll do as they say just because sometimes the physical act of writing code helps me understand it.
But the key is this: I almost never contribute code that doesn't immediately help me...this includes everything from a feature-creepy feature to a bug-fix that affects my particularly wonky setup. That way, even if the pull request is rejected, I still have something that I can use and be happy with.
There's nothing wrong with selfish goals in coding, and I believe that programmers often aren't selfish enough...or at least in the right ways (I suppose wanting to program just because you think it'll earn you money is a selfish mindset, but it's not immediate enough, IMO).
One of my favorite Woz stories is not just how he built the Apple ][ Floppy Disk -- regarded as an early Apple Inc. lifesaver and a technical marvel -- without any previous floppy drive experience and in about 20 days, but the fact that he did it (according to various Apple writers) almost solely because Mike Markkula had tempted him with a free trip to the Las Vegas tech expo, and Woz had never been to Las Vegas before. Can't get much more "selfish" than that :)
All I could think is that I've built corporate sites and worked on great teams. I mean, I have a github repo with stuff and junk, but those are just ideas. -- "Hey babe, well, check out this 2KB grid system I can build."
Still: so?
Is that the problem? That socialism gives you no speed dating swag? Really?
Explain what you've written, code or not.
Leave evolution to its mutations.
Engineering on the other hand has problems to solve, and so each solution (in code) gets judged on how well it solves the problem. I don't like the idea of saying "Hey nice try! Let's just go ahead and use it!" if the code actually sucks. That's the real world -- things can suck.
Look, end of the day, it's not about other people's opinions. When other people are cheering you on, it influences you to feel good about yourself, but you can do that yourself. If you're not OK with that, maybe you should be a guitar player. As for me, I'm pretty happy with the luxuries being a programmer affords me.
The main gist though is that software development is work which gets very little recognition outside of its own small social circles, and within those social circles, the recognition is as likely to be negative as positive.
And that sort of environment can feed depression.
When it comes to software development there is a huge amount of opinion based decision making on what's good vs. bad code despite whether it actually solves a problem or not. Frequently programmers will pick languages and solutions or write code that is awful but then promote it like it's the best thing ever. Even supposedly "perfect" systems for software development end up being horribly unusable and based on basically the equivalent of mathematical fantasy and marketing.
So no, you are pretty wrong on both assertions, and I found that the article had a significant insight I hadn't considered before.
On the other hand people don't see the simple coder behing an app just as much as people don't recognise the tuck driver who delivers the groceries.