6 ms·
The Effects of Computer Programming on the Brain (2012)
- wittysense 13y agoIf you time delay a video of my screen (vim) terminal splits fly open and closed, ranging from 1-2 under some work cycles to 4-5. I like to think of this as an analogy to how the brain processes (what we call "having a thought"), in that our most widely used metaphor is of a light show or fire crackers going on in a cloud of smoke. The beams of light, when taken as groups arranged over time, or distributions, represents the neurotransmitter, the statistical distributions of light give us a concept map or ontology of thought. Sometimes I close all of my terminal splits on accident with an ending of "Aha!" Do this because you believe in semiotic alchemy, and for no other reason. There should be 10-15 physical programmers, if that. Anything more is excess.
- cthackers 13y agoWhat in the world are you talking about ?
- wittysense 13y agoI'm making an analogy between two very thematic experiences in my life which involve abstractions. 1. Writing code in vim. 2. An attempt to extend a common philosophical image in cognitive neuroscience ( http://youtu.be/Bm40BSZJRck?t=48m28s http://youtu.be/Bm40BSZJRck?t=48m28s ) which involves the behavior measurement of phenomenological experience, like perception. The description in terms of temporal modality is precise, however a grammar (set of valid images) is necessary to enable the merger of these data into public consciousness. So, I'm using the event of spotlights or firecrackers flashing in smoke as an analogy. If you look at LightTable, perchance you'll understand ? And if you split more often, and employ many IDE-ish tools in vim ? I am a coder trying to relate my experience of Flow to you. What does it matter if anyone is addicted. Addicts talk about addiction.
- Rhapso 13y agoI know I am addicted to programming. I have rather nasty chronic pain, and I have found programming to be one of the best coping mechanisms so far. The whole "spacing in"/hyper-focus/computer-zen-trance thing results in me not noticing the pain. I am at minimum addicted to the not-hurting caused endorphins of programming. This has good and bad results. It means I not only can, but wish to code for long continuous stretches (about 40-50 hours has been my max before burning out, with a few 5-20min food/unkink/bathroom breaks) and I have difficulty programming for less then 5 hours in a stretch. It means that when I finish something, or find myself without an active project then I go a bit nuts: I tend to write a first few thousand lines of a GA or Chat-bot until I get my fix and can stop (and normally chuck the resulting code). It means I do a lot of "code-katas". It also means I am very frustrated in team scenarios where I have to often "come up for air" to communicate with teammates as this diminishes the pain-avoidance. It means I do not spend a lot of time on design and documentation, I just dive in and start writing code and actually enjoy the process of spending hours fiddling with things until they work. In fact, my addiction to programming is likely a core factor in my choice of education and career. With this moment of reflection, I get to ask myself a question: Is the fact I do what I do largely as a symptom of addiction a bad thing? At minimum is a strike against my self actualization. Is an addiction that people will pay you to feed a bad thing?
- glass_of_water 13y agoI think this addiction can be fine as long as its not self destructive and not detrimental to your personal happiness.
- klibertp 13y agoIs your pain linked to movement? Sitting straight for long hours may be an option then. Or maybe it's not really the pain, just a slightly uncomfortable feeling... Because really, you can't program while in pain. You can't even think straight, nor sleep, nor eat. No amount of "coping" ever helps and sooner or later, no matter how strong a person you are, you wish for death. I've been there, there is no saying how great an impact pain has on your quality of life, your thinking, your family, your dreams, everything. Guess what I want to say is that you're incredibly lucky to cope with your pain just by programming, but I think you shouldn't call it nasty - exactly because something like programming helps.
- zxcdw 13y agoThe addiction to solving technical problems with creative and uncommon solutions is very problematic for me. What it means that when writing a <personal project here> for example, at some point instead of fixing the bug which makes half of the project broken, I'll focus on optimizing the code to great lengths(speed, code size, even source readability) because it's simply so much more rewarding than actually fixing the seemingly hard problems of having bugs, which merely just hinder me from doing what gives me the fix. Project scrapped, and a next one started for a few days max. The real problem? Working in an environment where the first and foremost goal is to "get shit done" and deliver a product. Programming in such sense is outright boring, because the fix comes from solutions which require deep digging, reseach and some creativity rather than readig a spec and implementing it.
- deleted 13y ago[deleted]
- b6 13y agoAnecdote: the effects have not been good. Searching the net for answers to computer problems, sifting through mountains of garbage for the crucial part, has destroyed my ability to read long passages without becoming distracted. I've been at it almost 13 years, though.
- groby_b 13y agoThat's not an effect of programming, per se. I've been at it for ~30 years now, and I notice the same effect - iff I spend too much time reading short-form content. Being able to deal with long-form content requires practicing interaction with long-form content. As it turns out (lately), I more and more often deliberately turn off network connectivity, having pulled major references I need offline. For exactly that reason - the scanning through garbage is disruptive to my ability to focus. Otherwise, I seem to have survived programming fine ;)
- deleted 13y ago[deleted]
- return0 13y agoYou mean you can't read a book? Unless you are a pathological case, you can train yourself by reading books.
- wladimir 13y agoReading books has been a good way for me personally to pull myself away from online pursuits that break up attention into 15-second spans such as browsing HN and news sites. That tends to be the real addiction for me (...wait, someone is wrong on the internet! must post! must read replies!). I don't see coding as an addiction. Sure, it is a time sink and feels good, but after a focused coding session the results are (usually) constructive and I learn new things along the way. This is different from addictions which are usually a way of instant easy satisfaction, a "high", after which you feel useless and down when it weans off. Programming is nothing like that at least for me.
- 13y ago
- triplesec 13y agoSome of this article definitely implies the use of a flow state (Csikszentmihalyi) to get things done well. This doesn't always require addiction, that's for sure. The addiction comes when you don't have any other fun games to play where you get into flow. For example: sex, reading, outdoor activities, building art cars...
- marco_salvatori 13y agoI find the programming has made my writing more structured and precise. It has also made me less forgiving of writing which is disorganized and imprecise. (This week, that was technical information on the PayPal developer site.)
- wittysense 13y agoProgramming has allowed your brain to express rules of structure and precision. You did that to your writing by choosing programmers to read. Like in writing on paper with pen. These qualitative subjective judgments are not coming from programming per se but rather a style of programming. Think: continental versus American styles of philosophy. Programming as we know it is arguably Western (structured, "precise" and all that hooplah). Programming itself isn't inherently Western, even if ARPANET was a US Grant, if you get my figures of speech, and grant me poetic license (which you probably won't do).
- deleted 13y ago[deleted]
- UNIXgod 13y agoInteresting blurb which negates the opportunity to explore the mental flow we acquire through the state which programmers go through when working through a problem set or pet project. Though I agree that avid learners new to programming concepts may experience anxiety or euphoria depending on the problems which they are working on defeating. I wouldn't necessarily call it an addiction; no more than I would suggest that a musician is addicted to playing their instrument or writer is addicted to creating prose. The art of programming in which begins with exploring computational programming models and processes ultimately ends with the craft in which itself is as fluid as a master composer composing whom subsequently is also a master musician. Though it's that "Teach Yourself Programming in Ten Years" which may be what TFA is referring. Not everyone programs inside skinner's box, even in their early years of programming. There is better research on the subject than this generalized blog post which is far from aphoristic of the effects of computer programming on the brain.
- gitaarik 13y agoI think what this guy calls "addiction" is at the same time a very good and important aspect of a programmer, and it makes a programmer good, and better. You could rephrase "addicted" as "passionate". As the writer explains, passionate programmers want to get new puzzles all the time and get bored solving old puzzles. This is a very logical process. When somebody got bored with an old puzzle, it means he/she gained more knowledge/experience and has become a better programmer. When you become a better programmer and you notice you're getting bored with your current work, it means you should move on. If your current job doesn't offer you anything more interesting you should get another job. That's my "remedy". It would be such a waste if you would say to yourself: "I shouldn't become a better programmer, I should go on with coding boring stuff and finish my projects". If you do this you'd better just become a sales person (or something else boring). Of course, it can happen that you have an exiting project but there are some less exiting puzzles in the project that you avoid doing all the time. I think you can easily solve this with project management (indeed, as the writer suggests). If the puzzles aren't that challenging, then the time to solve it won't be very much either. And if you work in teams, you can devide this stuff equally. This is just a manner of discipline. So please guys, go on being addicted! It's awesome to be a programming addict! Just don't forget to satisfy your boss once in a while!
- wirrbel 13y agoThe article raises some interesting points for sure. Although it does not delivier to its promise: The effect of Computer Programming on the Brain. Which would have interest me a lot Nevertheless it does raise some interesting thoughts on motivation, self-reward of the brain, etc. Which are not specific to programming per-se. You also have this in sciences, math, etc. Programming is just very immersive in the way that you do not have to leave your desk. The addiction part is really questionable since you cannot discuss addiction without defining what you mean by addiction, etc.
- kmasters 13y agoProgramming for me since I was 12 has been addictive. Im 45. I don't regret that. I was a professional musician for almost 20 years before I went back to software. As a musician I practiced 4-8 hours a day for 15 years. As a software engineer I have had coding durations for much longer periods with more time in between due to burn out. I think as in any pursuit, we can sometimes delude ourselves, that the more we do something whatever it is, the better we will get at it. Its not true. In any performance related field, its acknowledged that there CAN be too much of a good thing. And too much coding is just as bad for you as too much high-jump practice. You will end up with a lot more text files expressing your desire, but you will not be improving. So at some point we as software engineers have to make decisions and choices about how we spend our time and effort without making ourselves robots, pursuing ever diminishing returns, to the exclusion of our personal happiness and fulfillment.
- return0 13y agoAddiction is an element of passion. The point is how do you prevent an addiction from becoming detrimental to others (and yourself, although that's harder to define). Most people would prefer to live their passions rather than live a bland life, and addictions are part of life.
- sfvisser 13y ago> ... 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. If that's the case, a lot of programmers (including me) are extreme and unhealthy. I've lots of unfinished projects that I stopped working on right after the interesting bit was done or almost done.
- ciderpunx 13y ago> ... 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. Don't agree. This implies that it is healthier spending your life doing things that are uninteresting. > If that's the case, a lot of programmers (including me) are extreme and unhealthy. I've lots of unfinished projects that I stopped working on right after the interesting bit was done or almost done. Me too. Prioritizing doing stuff about which you are passionate is much healthier. Of course I am probably in denial...
- kmasters 13y agoMaybe here's the anatomy of the addictive aspect Let's say you have a web idea, its so "simple". So you code it and do a "proof of concept". Then you start coding, you think you have it nailed, you predict you can do this thing in a few thousand lines of code using bla bla framework. So you write those few thousand lines of code. Its done. It works. Except, it doesn't scale, it has no security, you have no hosting, load balancing, failover, replication, user authentication, marketing, no decent website, no android or iOS presence, no enterprise customers, it looks like crap, you have no graphic artists, you have no CSS experts, you do OK on those but its not professional. And then the features: the "real" product you wish you were building is beyond your means. Sure you can try to patch it together, but your "few thousand" lines of code delusion is just that. That's a sure sign of code addiction. And Ive been there myself. Its not that you CANT do all of those things. Its that you spent your time ignoring all of those things to justify coding. And when you hit that wall, you will most likely stop in your tracks and ditch your idea and the work you put into it, to focus on your next "thing".
- beagle90 13y agoWow, I have literally just gone through that whole process. This post really hit home for me. I will code what I find intellectually challenging and then as the complexity dies off so does my motivation. What would be your suggestion be to find it within oneself to complete those periphery objectives and break this cycle?
- 3g9mnr 13y agoThere are zero citations in this article. It appears the author imagined these ideas about dopamine and addiction and then wrote a blog post with zero scientific credibility. Did I miss something? There is no research here, just a flight of fancy. We shouldn't discuss or upvote such garbage.
- aschearer 13y agoI came to say the same thing. I was expecting the article to discuss research mapping out how pathways in the brain changed as people learned to program. Instead I got a bunch of unsubstantiated claims and speculation.
- wes-exp 13y agoIndeed. Author is clearly pathologizing non-pathological behavior. Real addiction is defined by severe life consequences: jail, death, destroyed relationships. Describing an employee who struggles to do boring tasks and focuses on fun ones as a troubled "addict" is just severely, incredibly stupid.
- mtdewcmu 13y agoThis article sounds a lot like a couple of Paul Graham's essays. Come to think of it, a lot of stuff that shows up on HN sounds like Paul Graham. For instance, repeating how important it is to work on "hard problems," pretentious blather about "hackers" and master programmers... Do you suppose that they are emulating Paul Graham, or is there a cult of people that think alike, and PG is one of them...? For the record -- if PG is reading -- I enjoyed your essays on the first reading, but seeing the exact same ideas keep repeating in posts is kind of weird...
- drostie 13y agoSo, two years ago or so I started a project in the middle of my Master's -- not a great time to focus purely on that project. The idea was to replace Node.js's callback hell with Scheme-type promises (i.e. deferreds), ideally preventing most applications from writing `function callback(err, value) {}` ever again. The Promise library was not bad and I might reuse it in other applications; it's only 250-ish SLOC if my memory serves me correctly. But I quickly realized when using it that the project could not live up to my earlier ambitions. The problem was that I hadn't foreseen the problems in not being able to overload JS operators: something like half of the Promise library just wrapped the JS operators, so that `this.gt(that)` becomes a deferred representation of `this > that`. This kind of worked, but I began to lose interest in this general approach when I started to struggle with how to idiomatically represent (a) variables, (b) if-then-else constructs, which are right now of the form promise.then(promise_if_truthy, promise_if_falsey), and (c) composite statements. Fortunately, I found the right thing to study, and off-and-on for the past year I've been studying it. The right thing to study in this case is Haskell, because the way that Haskell reduces 'do notation' to a pure sequence of function applications is precisely what you need above to solve (a) and (c) at least. Another idea was to take a revision control system like Darcs and try to move it, as much as possible, out of the realm of IO so that it could work on an arbitrary in-memory data structure as well. (I might then try to move it back into IO by storing the internal representations in a database, which would probably look a lot like a graph database or like Datomic) This is a great idea but it has stalled because the handling of dictionaries requires 'confluently persistent tries'. There's a great paper on these by Erik Demaine et al., where basically they make functional link/cut trees and build the system out of those, then optimize them to languages which aren't functional as well. I say 'there's a great paper' on it but actually that paper is an incremental result, not a tutorial -- so while it looks really interesting it's required me to learn a tremendous amount of new concepts before I can even implement it. What I am trying to say is this: is this a code addiction? Probably, but that's not why the projects are stalling. The projects are stalling because my Master's degree and interest in physics have become more important. Computer programming has only a second-order effect on the brain; the first-order effect is distractions. We should not write articles on the problems of being addicted to computer programming, the time I spent programming yesterday, while substantial, is about as long as I've spent typing this comment today. This comment (or other distractions which might replace it, TV or comparative religion podcasts or whatever) is more of the problem than the programming. I wish the things that competed for my attention had a simple ordering relation.
- csmatt 13y agoMy name is Matt and I'm an addict. I think many of us can relate to what is being discussed. I, for one, get a huge kick out of trying to write concise, clever code to solve problems, but that often leads to a lot of time spent on something insignificant. I'm trying to train myself to A) finish projects I start & B) become OK writing code quickly and not worrying if it's less than perfect.
- cLeEOGPw 13y agoGoogle "addicted definition", second meaning - "Enthusiastically devoted to a particular thing or activity". Don't instantly associate term "addiction" with negative things like drug addiction, which, unfortunately, the author tries to exploit by even referring to cocaine effects on the brain and comparing it to programming. The article is designed to provoke a reaction from programmer community for attention.