How to be a sane programmer

Business Insider published an article today called The Stress of Being a Computer Programmer is Literally Driving Many of them Crazy. It covers the typical culprits: Imposter Syndrome, long work hours, burnout, etc., and points out that while job stress has been traditionally laid at the feet of bad management, it is increasingly coming from within the programmer community itself, as a kind of culturally imposed litmus test for determining the dedication level of any particular programmer. In other words: if you aren’t slinging code in your spare time, you just aren’t going to cut it. Coupling this pressure with the speed at which new technologies, libraries, languages, platforms, frameworks, SDKs and text editors are released is like dousing a bonfire with jet fuel.

But here’s the rub. Programming, like writing, painting, and music, is chiefly a creative endeavor not a technical one. Practice with any technology or language is useful as a means of learning tools and techniques, but it will not make you a substantially better programmer. It will just make you more efficient with your tools. What makes you a better programmer is learning how to think about problems, since you are ultimately encoding your own thought process into a series of instructions the computer will follow in an attempt to solve problems. And learning to think properly–about abstractions, about composition, about information, about thinking itself–can come from many sources other than programming. Paul Graham observed this in his amazing essay Hackers and Painters:

I’ve found that the best sources of ideas are not the other fields that have the word “computer” in their names, but the other fields inhabited by makers. Painting has been a much richer source of ideas than the theory of computation.

Branching out into other fields, having hobbies other than programming can be a tremendous benefit to your day job. You don’t need to burn a bazillion hours writing code. Burn that time writing, or reading, or arguing with someone over coffee (or your favorite scotch!). Burn that time running, or lifting, or both. Physical activity pumps oxygen to the brain, nurturing that wonderful organ that is you. I started running 3 years ago. Actually getting fresh air and sunlight makes me a healthier person, and also gives me time to bounce around ideas in my head while I’m passing the miles to dropped beats and house vocals.

The point is that investing in your own mind for its own sake will make you a better programmer. You can always learn new syntax, or tools, or whatever, but if all you do is program, you’re actually working against yourself. Sometimes you have to put in the hours, when the barn is burning, but this should be the exception not the rule. If the barn is always burning, you need to find another barn. Sometimes you need to go heads down, for weeks or even months, to make your personal passion a reality. Then take a break. Constant, unvaried exertion will only lead to diminishing returns, the exact opposite of making you a better programmer. Last November I participated in NaNoWriMo (National Novel Writers Month), an informal contest where participants write a 50,000 word book in 30 days. I woke up early, spent a few hours writing, worked my 8+ hour day job, then spent my evenings writing as well. Every day. For 30 days. I started getting sick at the end of the month from that exertion, but it was necessary for me to accomplish an item on my bucket list: to write a novel. And I haven’t written a thing for several months. I needed a break, a change of pace, to make me better. Developing software is no different.

The BI article also makes the fascinating observation that “Women programmers frequently confess to suffering from imposter syndrome… But a lot of male programmers increasingly say that that they feel it, too.” The gender role fluctuation that has characterized the 20th and 21st centuries is  finally catching up to men. Women are seeing, first hand, the “disposable male” mindset enshrined and foisted on men, especially in the (traditionally male-oriented) workplace, a role which I believe arose from the necessity of survival but which is obsolete in a more affluent and flexible society. And men are seeing the reaction of women to the dehumanizing aspects of the male gender roles and are joining to express their dissatisfaction with the status quo. As more women enter technology fields, they bring an outsider’s perspective to which men need to pay heed, and women need to understand the system they find so unappealing is what men have had to live with and accept for a very long time. But together we don’t have to any longer, and that is powerful stuff.

Don’t burn yourself out to be a better programmer. Do what you love, and love many things. You will be better for it.

20 thoughts on “How to be a sane programmer

  1. Mitchell Harris says:

    The idea about women’s disinterest in the CS field being dissatisfaction with what the male gender role has had to deal regularly is immensely interesting. You should do a whole post on that idea. Wow. You connected a bunch of ideas in my brain that I didn’t even know are connectable.

  2. I’ve never really thought of programming as a primarily creative endeavor in the same way as writing or painting is – but I can totally see what you mean.
    A lot of programmers work on small screens, often in places like starbucks. That kind of environment can’t help with the whole ‘staying sane’ either.

  3. OedipusRex says:

    After spending most of my week long break coding from dawn to dusk on a project (even though a personal one), I needed this to realize I need a break. Thanks!

  4. @Ash programming is a very creative process because creativity is essentially about learning how to solve problems through problem definition, strategy, and iteration techniques. There’s more to it than that but I definitely find software development can be fun and creative as making music.

  5. Alan says:

    “Programming, like writing, painting, and music, is chiefly a creative endeavor not a technical one.”

    I think the controversy is stems primarily from interpretation of this statement. What exactly does it mean? If instructing a computer is not technical, then what is?

  6. Vladimir Vasquez says:

    Hi Alan,

    I think this phrase is very clear. Programming is an artistic activity not a technical one. when you are making programs they run on a machine, but you are actually solving problems to benefit humans not the machine… you are programming for other to read your code, not the machine! That’s why programming is an art like painting.

    you start to see what I told you when you learn a very high level programming language like Lisp.

  7. @Vladimir Vasquez: I am a “young” web developer and I don’t know LISP; why do you mention it as a “creative language” more than other ones?
    Thx in advance :-)

  8. Vladimir Vasquez says:

    Hi Nicolas,

    I mentioned LISP because it is a very expressive language… The more expressive the programming language is, the more closer is the programming activity to what really is: an art.

    I recommend you to read the book “Hackers and Painters” (Hackers and Painters chapter) by Paul Graham.

    About LISP and programming languages please read this article: http://paulgraham.com/avg.html (the Blub paradox part).

  9. Thanks Vladimir for this article. I retain this quote:
    “Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.” (“The Secret Weapon” part)

  10. Totally agree, programming is a creative process.

    With that said, whether a person has hobbies or not, they are anyway something that you do before or after work. Possibly you’re sometimes taking breaks to the xbox club in your work place, that’s nice, but if you are working on a daunting task you’re still going to return to work on that.

    Moreover, if you’re the problem-solver type of programmer then you’re probably always seeking out those complicated problems that no one wants to work on. If you are doing that constantly then obviously you’ll get frustrated and feel overwhelmed at some point.

    The key to anything in life, and goes to programming as well, is to keep things balanced. Make sure the items you are working on are diversed.

  11. I don’t think immersing yourself in a professional box is ever a good idea. Our brains need off time to percolate and work on a problem without our interference.

    My hope is that as programming becomes a bigger part of our day-to-day life and possibly part of school curricula, some of the mystery behind it will dissolve. I believe that will be helpful because it will tackle some of the fear people have of code. It might help dismantle the idea that programmers are wizards full of black magic and help with managing expectations for all involved.

    I’m just over half way through cs50 and at first I wanted to solve everything in one marathon session. That didn’t work. I now work on it until I get a break through and then walk my dog.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>