Programming Can Ruin Your Life
There are many essays and articles extolling the virtues of becoming a great programmer. You’ll have a sharp mind, great abstract reasoning skills, and a chance to become wealthy by working mere hours a day. This is what you’ve heard, right?
Sadly, no one ever tells you about the ways in which it will adversely affect your life. The physical effects are obvious. You’ll spend most of your time sitting, probably in an uncomfortable chair that doesn’t promote good posture. You’ll fuel yourself with food that is readily available, meaning it’s more than likely processed and full of sugar and you’ll likely choose either coffee or soda to stave off the drowsiness. A coworker once remarked, “If it doesn’t come out of a vending machine, programmers don’t eat it.”
But I’m not particularly interested in the health risks, as I said, they’re obvious. So what am I talking about? Programming changes more than your body. Programming changes the way you think. You might hear a programmer say, “I like python because it matches the way I think.” Or is it really that they’ve learned to think in python? Regardless of the language employed, you think differently when you program. No decent programmer will deny that. This is why it’s often so hard to explain to someone “how you do that” because, as clear as your explanation may be, you simply think differently. It is this change in thinking that can ruin your life.
The application of programming specific processes and habits to the everyday is where peril lies. The same traits that make you a great programmer can make you an awkward, misunderstood and miserable human being.
Programming presents you with a problem and allows you to eventually solve it provided you don’t quit. A solution is out there somewhere. Make enough attempts and chances are you’ll eventually prevail. Aren’t computers great? They afford a large degree of freedom in problem solving. If nothing else, you are able to make as may attempts as you please and it will happily execute each one. This instills in you a sense that failure is not final. Any obstacle can be hurdled. This is not true in the real world. While you may find second chances now and again, the wheels that turn in the big blue room are largely unforgiving. Time marches on in one direction.
When faced with an interesting programming problem your mind will chew it over in the background. Maybe it’s an algorithm you need to develop, maybe it’s a tricky architecture problem, maybe it’s data that needs to be modeled. It doesn’t matter. Your mind will quietly work the problem over in search of a solution. The “ah-ha!” moment will come when you’re in the shower, or playing Tetris. This practice of constant churning will slowly work its way into the rest of your life. Each problem or puzzle you encounter will start it’s own thread; the toughest and most troubling of which will be blocking.
A program is highly malleable. You can make a nearly unlimited number of changes. You can re-implement. You can optimize. You can run the compile-test-debug cycle ad infinitum. Make a change, see a result. Life is not like this. Every action you take is followed by a commit and the transaction cannot be rolled back. You can continue to make changes and optimizations as you move forward but the effects of these will not be immediately apparent. The instant feedback of development is sorely lacking in real life. Furthermore, your changes might simply be ignored. Data will be skipped. Blocks will not be executed. Optimizations will go unnoticed. The world is resistant to your tinkering.
Programmers become obsessed with perfection. This is why they are constantly talking about rewrites. They cannot resist optimum solutions. Perfection requires tossing aside mediocre ideas in search of great ones. A good programmer would rather leave a problem temporarily unsolved than solve it poorly. A good solution takes into account all predictable outcomes and solves the largest number of them in the most efficient way. This mindset prevents you from writing code with limited utility and life span. While it’s a wonderful trait to have in programming, the demons of scope and efficiency will start to assert themselves on your ordinary life. You will avoid taking care of simple things because the solution is inelegant or simply feels wrong. Time to think will no doubt yield a better result, you’ll say.
The obsession with perfection develops a forward-thinking mindset. The ability to anticipate provides a huge advantage because you won’t waste your time implementing solutions that ultimately fail due to short-sightedness or lack of imagination. You will constantly be mapping out flows and running the permutations through your head. Back in the real world, you will find yourself piecing together plans of breath-taking size and beauty that simultaneously resolve multiple problems and fulfill numerous dreams. You will attempt to kill every bird with one stone. The impossibility of actualizing these plans will be agonizing, yet your mind will continue to pour over every detail as it seeks to anticipate every possible outcome and construct the perfect solution.
Everything is now data. Every bit is worthy of attention. Every interaction is worthy of analysis. Your mind has been trained to do this since it is usually the insignificant or subtle bits that have to be rooted out when debugging. You will find it frustrating that everyone else does not collect and analyze data. You will notice details that others simply gloss over. Your penchant for detail and over-analysis will earn you strange glances and confused shrugs. Your decision making process will resemble that of your peers less and less.
The frantic pace of the software world will instill in you a sense of panic and urgency. You must do everything now. Tomorrow is too late. The thought of working constantly will no longer seem foreign or ridiculous. You will spend your free time feeling guilty about not working. But you will be working. Your hands may not be at the keyboard, but your mind will be.
The romanticized story of young upstarts toiling away in a garage to build the world’s next great company is alluring. It’s easy to convince yourself that the dream is there for the taking. But understand that there are many factors you cannot control. Luck and timing being but two. Don’t miss the life you have in the search for the one you think you want. To quote John Lennon, “Life is what happens while you are busy making other plans.” But perhaps Pascal said it best, “We never keep to the present. We … anticipate the future as if we found it too slow in coming and were trying to hurry it up, or we recall the past as if to stay its too rapid flight. We are so unwise that we wander about in times that do not belong to us and do not think of the only one that does; so vain that we dream of times that are not and blindly flee the only one that is… [We] think of how we are going to arrange things over which we have no control for a time we can never be sure of reaching… Thus we never actually live, but hope to live, and since we are always planning how to be happy, it is inevitable that we should never be so.”
Is programming the road to ruin? Or is it that those with a predilection for detail and mental gymnastics find themselves drawn to it. Perhaps it simply exacerbates a pre-existing mindset. There are certainly other traits (stereotypical or not) that most programmers seem to share. I have focused mainly on the negative impacts, but there are certainly positive ones as well. All things listed as bad can be good if simply kept in check. Obsession is dangerous, and anything great requires obsession. Programming is no exception.
September 11th, 2007 at 10:01 pm
i had never been down the functional programming path. one night, i sat down with the ocaml manual, and went through it, learned the basis, and wrote some simple programs.
all through my dreams that night, and the waking reality of the next day, i could feel the side effects of every action, and could feel two distinct phases to my actions - one where i saw what was being changed about the situation, and another where that new situation was committed to a sort of global state. it was weird.
do you want to turn off that part of your brain always looking for perfection? beer. it’s (obviously) good for social situations where being part of a conversation is more important than producing concise, precise sentences. it’s also good for coding when you’ve got to go into an old piece of code and modify a few things without having all of those bells telling you to rearchitect some part.
September 11th, 2007 at 11:06 pm
Great article. You just described why I no longer code. It was ruining my life.
September 11th, 2007 at 11:06 pm
Wow, this post is remarkably spot on. I think I’ve been more ruined by thinking like a programmer than most people I met. I spent most of my high school and undergrad years toiling on overly ambitious coding projects. I missed out on a lot of great potential experiences while locked away in 48-hour coding marathons. I burnt out with most of my projects and few ever saw any existence outside my computer. I’m pained with regret over all the time I spent working on my “projects”…but even today, I still indulge in them (albeit at a saner pace).
September 11th, 2007 at 11:36 pm
Hi,
I think this is a great article, and posting a link to it on my own blog.
Thanks.
Nasir
September 11th, 2007 at 11:39 pm
[…] You can find a very interesting article on why programming can ruin your life here. “http://devizen.com/blog/2007/09/11/ruin/”. […]
September 11th, 2007 at 11:41 pm
Wow about time someone actually address’s this.
I think this is one reason why over half of Computer Science graduates with Bachelors degrees leave the industry in the first 4 years.
Programming just drives alot of us insane and we realize its just not worth. We can make the same money with a MBA (and have less stress) or running a francise (Subway) or just become Real Estate Agents to other Programmers.
September 12th, 2007 at 12:05 am
You’re right… it is like a drug, you become addicted and it is very hard to leave your seat. And I mean, that’s completely sad because you forget about the real world sometimes, most of the time. Well, I’m speaking for me, but know what? I’m gonna sign me up to the gym and meet some people there!
September 12th, 2007 at 12:07 am
none of the above.
programming simply is the outcome of having a large percentage of a given population with an obsesive compulsive disorder.
September 12th, 2007 at 12:20 am
If you can find me another job where I can work from home on my own hours, solve interesting problems, and get paid well, let me know.
Till then, I’m a programmer.
September 12th, 2007 at 12:23 am
Great post, and dead on target! One other point would be the possibility of mental burnout also.
September 12th, 2007 at 12:29 am
Excellent and interesting post. You’re a good writer.
I know for myself I can identify with everything you identify. In particular the guilty feelings when not working and the constant analysis of real life problems.
September 12th, 2007 at 12:43 am
I resemble that remark …
One real world trick is to leave some of your tools out when temporarily sidelining a project. Leaving tools, or even workbenches/sawhorses, in the immediate area of a blocked project prevents the situation from being mistaken for a half-assed job; the work area is clearly under construction. This also helps remind you continuously that you have work to be completed, and that comes in handy!
September 12th, 2007 at 12:45 am
If you want to be a famous programmer and go down in history then obsession and the associated sacrifices may be well worth it. However, if you want to be happy and you still enjoy programming all is not lost!
There’s no reason that you have to sacrifice your physical and mental health to be a good programmer. I do marathon 18 hour coding sessions from time to time, but I also do 100 miles a week of mountain biking, and spend a generous amount of time hanging out with my wife and friends. I don’t always eat that well, but I rarely eat food from a vending machine or drink soda.
Having this balance in my life makes me a better programmer because I feel better physically, so my mind is better able to stay focused. Caffeine may be a quick fix in certain situations, but it’s a horrible way of life. Though I may never invent anything revolutionary or tackle the major problems in computer science, my well-rounded skills are very useful in the marketplace. I know the desire for perfection, but also realize how it can distract from the ultimate goals of solving real problems.
The soft skills of talking to clients and understanding their needs from a business perspective often result in a far better product than being able to craft the most beautiful and efficient code given a strict specification. When you are stuck in the technical world, there is no end to the frustration that comes from vague requirements and incomplete specs. The idea that non-programmers can create a perfect spec is laughable anyway. Even as a programmer we rarely know the optimal solution until we actually try to build it. That’s why it’s much better to maintain a focus on the original problem and accept uncertainty until there is enough information to resolve it.
And don’t take that as meaning I gave up on perfection. I am still a perfectionist, but I am not obsessed with perfection. It’s just that once you factor the real-world into software, you realize that perfection is unattainable in all but the simplest systems.
If you can not accept this and make the according sacrifices, then you should be working in pure computer science in academia. That is a place where a true genius can explore his/her ideas in a pure setting, and perhaps make great contributions to science and humanity.
Me? I’m just happy to have a job I love.
September 12th, 2007 at 12:51 am
This entire article seems like it was written about me.
I think it’s because I had a complete (and unhealthy) obsession with programming from puberty to my early twenties (I also `came of age` in Silicon Valley during the dot com boom). I have a feeling that this constant thought about computers/programming during those formative years has left my mind in a mode that cannot be altered.
“The same traits that make you a great programmer can make you an awkward, misunderstood and miserable human being.”
I read that and said, “that’s me! I couldn’t describe myself better.”
Do I regret it? Only during the particularly miserable parts.
September 12th, 2007 at 12:55 am
Do you read minds? Uh, time for a break.
September 12th, 2007 at 1:02 am
It just depends. Some people prefer to regard the programming process as the Way of Warrior full of challenges for your mind. I would rather say it highly depends on person. If you are programmer because you are trying to flee from social life, then it would be destructive for you. If you are looking for
more challenges and trying to improve yourself, programming would help your mind to become sharper.
September 12th, 2007 at 1:04 am
Very profound. As a CS major in college, I am in my rite of passage of the “danger” that you described in this article.
…
Thank you.
September 12th, 2007 at 2:01 am
The difference between a triumphant and ruined programmer could be the difference between a successful and perfectionist programmer.
Programming is good for you if are a logical thinking and problem solving kind of person. Finding solutions to problems, implementing them, and having them work is very rewarding for a programmer. Programmers enjoy being challenged and believe that for every problem there exists at least one possible solution. An unsolved problem is the ultimate challenge. A conquered challenge is the ultimate reward. A working program is the ultimate success.
A successful programmer can find and implement one correct solution and finish their program. This type of programmer is a successful and happy programmer and also a happy person. A happy person is at peace with themselves and the rest of the world. Their life is good
A perfectionist programmer on the other hand is an unhappy programmer and an unhappy person. Their program can never be finished without one perfect solution. Most (if not all) programming problems have more than one correct solution and where there is more than one there can never be one perfect one. A programmer that persistently strives to find perfection where it does not exist will never find it. This type of programmer is never at peace with themselves or the rest of the world because neither is perfect. Their life is ruined
September 12th, 2007 at 2:14 am
This thing to say, for me, is important.
Being present is a practice, software development is a practice. It is good to appreciate that simplification and facilitating other human beings in important ways is very important part of programming.
It is important to be mindful of who the work is being made for and it is also important to be very careful about the process.
It is much to easy to get caught up in what you have mentioned above. I think this makes one a poor programmer in some ways. A good programmer should ask “am i going to need it?”, mostly the answer is no.
It is better to make something very small and simple and then give it to the person that is using it and find out exactly what small and simple change could help them do what is most common.
Of course this is only true for some things at some times. This is why we should be present as developers. We have to be careful to not let our minds run away, and we need to be watching our bodies. The mind and body are not separate.
Thank you for your article. It did need to be said. It is ok. We should watch ourselves and our ego and our habits.
John Lennon is also true. Life is happening now!
September 12th, 2007 at 2:31 am
Described me in a nutshell. Every decision in everyday life must be optimally laid out. If 2 things aren’t being completed while a 3rd is being taken care of there is something wrong with the decision and has to be thought out more.
What it can lead to is a frozen state if no clear optimal choice is there.
Quite annoying.
September 12th, 2007 at 2:35 am
I for one welcome our new programming overlords…
September 12th, 2007 at 2:39 am
This article is moronic. I am a programmer and have been for years. I eat healthy and exercise, easily can relate and explain things to people, do NOT work constantly (even while at work), have a decent social life, and still have time to enjoy life and do thing things I enjoy doing that do not involve programming. The programmer you describe sounds like an obsessive-compulsive neurotic on the edge of a mental breakdown – are you simply describing yourself in your article?
September 12th, 2007 at 2:47 am
[…] Wednesday, September 12th, 2007 in jacki philosophy, work Bad news for any fellow coders out there…. Archives […]
September 12th, 2007 at 2:57 am
On a more positive note, programming is a way of expressing creativity and while it may fudge our way of thinking, it also makes us more analytical.
A photographer may run the risk of seeing life through a lens, a mathematician would see it as a a succession of beautiful mathematical problems, each person’s view of the world is affected in some ways by their work, especially if they are passionate about it.
The French call this “déformation professionelle”, or “professional bias” or skew.
It doesn’t have to make us unhappy and its not a terrible thing in itself.
The constant search for optimisation, whether it’s to make a routine more elegant or fetching something from the fridge, is innate to any good programmer; the point is not to make it an end in itself and seek optimisation for the sake of it, but to use that mindset to bring pleasure out of what you do: you’re not chasing the future any longer but bringing satisfaction in the present.
The mere fact of looking at elegant code is like looking at a piece of art: it makes you think, it makes you learn something new, it forces you to push against your limits, it may even make you smile.
The search for optimisation, anticipation and perfection brings its own rewards. It may very well be futile in the grand scheme of things, but it gives us satisfaction and a sense of worth, in the present.
September 12th, 2007 at 3:17 am
Won’t waist my time? It’s waste. Waist is that thing that you put a belt around.
September 12th, 2007 at 3:18 am
Right on the ball. Nothing better said on the subject. You just hit that on the head like the Karate Kid hammering away at nails.
September 12th, 2007 at 3:35 am
great article! good observations.
paragraph 9, line 2: waist = waste
September 12th, 2007 at 3:38 am
You should compile a list of positives also. The first positive needs to be that programmers are red-hot in the sack and always provide multiple orgasms. You owe it to your fellow hackers.
September 12th, 2007 at 3:38 am
this is me…
September 12th, 2007 at 3:44 am
Awesome article. You should think about writing one for the positive impacts
.
September 12th, 2007 at 3:54 am
Wow…….
September 12th, 2007 at 4:00 am
Good writing!
I don’t particularly feel the same as you, but I enjoyed reading this.
Cristian
September 12th, 2007 at 4:01 am
dude… chill…. smoke a bowl or something..
September 12th, 2007 at 4:10 am
I remember early in my programming career getting ready to leave my apartment and clearly thinking “grep keys”. I wasn’t thinking it ironically either - my mind was really trying to grep my apartment for my keys. It’s all been downhill from there. My wife certainly regularly wants to kill me for taking an overly analytical approach to, well everything.
September 12th, 2007 at 4:28 am
[…] (http://devizen.com/blog/2007/09/11/ruin/) […]
September 12th, 2007 at 4:30 am
That’s really interesting. Your mind just gets tuned in cognitively to the kind of workflow that programming entails. I’ve been a programmer/designer full-time for the past year, and that’s pretty much what my job is: problem-solving. I think it’s kind of affected me, but in many good ways too. Unhappiness is often a series of unresolved problems, and good problem-solving skills can lift you out. (So can coping skills, though).
September 12th, 2007 at 4:34 am
I think that ‘being a good programmer trying to find the best solution’ and the need, in real life, to think that everything is achievable is more of a need to control.
Instead of being cause and effect, they are both the effects of the desire to do something special, something great which works rock solid and gives a sense of certainty.
Programming is easier as everything depends on you (computer obeys anything) as such, the bad part of programming is that you invest more energy in it as it provides almost instant satisfaction and control - as compared to real life which the satisfaction is not instant and depends (as you said) of luck.
September 12th, 2007 at 4:43 am
I think programming provokes the recluse out of the dark corner and into the public eye - where social conflict is inevitable.
September 12th, 2007 at 5:04 am
Nice elaborate thesis. Sorry though - it’s nonsense. I know loads of programmers. None of them take a programming attitude to life outside of their work.
September 12th, 2007 at 5:07 am
what a waste of time
September 12th, 2007 at 5:09 am
That was beautiful and absolutely on point.
I have tried to explain to people why i can sit and code for almost 24 hours…. yet lie down and cannot goto sleep… because im thinking TOO MUCH.
September 12th, 2007 at 5:13 am
I’ve been programming too long. Maybe 25 years. Your essay is insightful and describes many of my virtues and faults well. Good to know I’m not alone.
I wanted to be a programmer since before I knew exactly what a computer was. And now I can’t imagine ever doing anything else. I’m still as fascinated by programming as I was when I first started.
September 12th, 2007 at 5:15 am
Who wrote this?
September 12th, 2007 at 5:23 am
That was a great essay. Thank you for writing it.
September 12th, 2007 at 5:39 am
Thanks for posting this, I’ve actually been considering something very similar for awhile. I have a slight obsessive compulsive tilt anyway, and programming really brings that out in me, which I hate. Not to mention programming means spending hours a day in front of a computer screen, often not interacting with people, and that’s just not for me.
Maybe it is time to find a new career.
September 12th, 2007 at 5:54 am
Nice essay. There exists an anxiety, I believe, for many programmers around tools, languages, and frameworks: how to keep up? what to learn next? Python? Ruby? Haskell? Erlang? Rails; Django; Javascript; AJAX; and so on…
There’s not enough time. There’s not enough head-space!
Time to let go and just pick one thing and get on with it?
ps. typo: waist => waste
September 12th, 2007 at 6:06 am
I agree, but.
Well I’m certainly not going to NOT pick up that beautiful thing and indulge deeply in it.
It’s good to drink beauty. It’s good to make beautiful things. Right?
But can I chase a dream wholeheartedly and also be a beautiful-person? I think that history says “probably not”. Motivated, goal-oriented people- artists, inventers, those with strong agendas- tend to be jerks. Maybe they make one golden dream come true, but they also sow a mountain of shit.
It’s a choice. I choose the project over everything else. I focus, obsess- I spend all of my attention on the project and let everything else- my world, my health, my behavior- go to hell. I get slovenly and ugly. I choose- and the act of making that choice bends my awareness- that which I chose to focus on gets brighter and brighter and everything else gets darker and darker.
That’s geek for you.
Is it worth it? Is a beautiful dream better than a beautiful me?
Maybe I can put it down before I’m too sick. Not make it a lifestyle.
Ya, maybe I can maintain that kind of perspective.
Maybe I can go north and south at the same time.
September 12th, 2007 at 6:23 am
It’s would be absolutely possible to treat programming as life — you got deadlines, priorities, opportunities — so you can take the chances, let something beautiful go, make compromises …
I think programmers should try to work as a project manager and as a user support person. Then they understand that they are not writing programs to prove their abilities but to make their users (and company) happy. (The program that makes programmery happy can be very different than program that makes users happy!) This should help with the obsession of perfection issue.
I guess programmers can afford to work like this (neverending rewrites and featuritism and so on) only because their superiors don’t get programming.
“A good programmer would rather leave a problem temporarily unsolved than solve it poorly.” — Alternative would be to solve it poorly now and enhance later (if it’s needed).
But what you wrote is very familiar to me and it’s still my current practice
But i’m not happy with it and i’m sure i can change my ways.
September 12th, 2007 at 6:23 am
This entry is right on the money. I’ve been writing software for 10 years now. At my last job I was able to (sort of) break this cycle by moving out of development and into management (of development.) Management presented a new set of threads to occupy my mind and the junior guys kept me laughing enough that the job was almost fun again.
:)
Chuck
September 12th, 2007 at 6:24 am
Excellent post.
I find myself thinking the same things, though as a writer, not a programmer. Also, it seems to me that, as you suggest, “those with a predilection for detail and mental gymnastics find themselves drawn” to such a lifestyle. Another time, another place, and we’d doubtlessly still find things to meticulously, and perhaps obsessively, optimize and ruminate over.
Computers do make it easy, though.
September 12th, 2007 at 6:38 am
“”"It’s easy to convince yourself that the dream is there for the taking. But understand that there are many factors you cannot control.”"”
This took me a long time to learn.
September 12th, 2007 at 7:00 am
Brilliant composition - and exactly correct.
September 12th, 2007 at 7:17 am
“Programming presents you with a problem and allows you to eventually solve it provided you don’t quit. A solution is out there somewhere.”
No, this isn’t true at all.
September 12th, 2007 at 7:29 am
Good post… I have been weighing up my life and programming has ultimately been detrimental to my life, physically, emotionally, psychologically, especially socially. After a while you find that you’ve painted yourself into a corner. I wish I’d never started and had done something else with my life.
September 12th, 2007 at 7:30 am
Please be my psychologist.
September 12th, 2007 at 7:42 am
Wow. These are some good points. I felt each of them. I realized some time ago that I will have problems with being a programmer.
I feel frustrated when I acknowledge the ones near me do not accumulate and analyze data.
I run “threads” in the background of my mind when I am out somewhere, thinking of problems and times that had nothing to do with “now”.
I sit in an uncomfortable chair about 8 hours a day.
I am perfectionist. I write, analyze, rewrite, analyze again, rethink and then rewrite from scratch. I’m actually doing it right now, to this text.
I see code. I think code (C++). Well, not all the time. But it occurs that when I play a game or poke around with an application, I can imagine the code behind certain parts of it.
I find myself dreaming of other times once in a while. Past or present, anything that seems better than “now”.
Yes, I find myself in here.
But as I said. I realized this. And tried to counter act it. I try to develop social skills (talking with people about other things than programming).
I work out 2 - 3 times a week, to be in shape. I had to, after one year in industrial programming my knee joints started to ache. I try to improve myself as a person, which is much harder than becoming better in programming. Of course, I get frustrated many times. I am learning how to cook. Nothing out of ordinary yet, I`m trying to just get eatable things.
Hey, I even have a girlfriend. So, I might just not be lost after all.
A great former teacher of mine said when my generation graduated: “Remember that you are humans in the first place and only after that programmers” - Alexandru Vancea.
So, a piece of advice to all you programmers out there: being human means that you accept someone else despite the fact he does not think like you, and that you see and talk to him on the same “level”. Arrogance and patronizing fed by your vast “knowledge” are turn-offs and will get you rejected.
Try to be better ( humans && programmers ).
September 12th, 2007 at 8:03 am
Your words ring truer to me than you can ever know.
I do believe that we folks possess this mindset because it is a symptom of our very personality. This isn’t caused by the pursuit of programming; on the contrary, it is because that is the type of person we are. We enjoy abstract analytical excercises like programming only because our personality type finds it enjoyable.
Let me elaborate; what I’m about to mention is something that might probably strike you as “pop phychology”. It is called the “Myers-Brigg Type Indicator”. This is a psychological typing system that classifies people into one of 16 possible “types”. Even though at first glance it sounds like a load of crock, I’ve actually found that there is some substance to it. You can read more about here(1), and see a list of all the types here(2,3). People with the type of mentality you describe are more likely to be the NT (”Intuitive Thinking”) types, many of us INTPs.
“Intuitive Thinkers” are people of the mind; they naturally sit and process information; programming represents a mental form of play to the mind. Because of this, it naturally attracts the Thinker, and allows him/her to totally immerse his/her mind in abstract problem solving, reduction and construction.
====
1: http://www.systemsthinker.com/interests/mind/ptypes.shtml
2: http://www.typelogic.com
3: http://www.paladinexec.com/personality_comparison/ENTP/
September 12th, 2007 at 8:12 am
I agree 100% with you, but it’s not programming that damages our brains. Our damaged anti-social brains are attracted by programming. That’s why blonde beautiful girls don’t go well with PHP. lol
September 12th, 2007 at 8:16 am
[…] Devizen explains how programming can ruin your life. Very interesting article and a couple of times I found myself nodding to what is said in it. I have seen that even my everyday language has been affected. My wife realized that too, when I said to her that we needed to refactor our room! Another unintended impact, more of the virtual world than programming, is an expectation of right to do and undo. Alas, the real world is neither so giving nor so forgiving. […]
September 12th, 2007 at 8:19 am
Oh man, I have the exact same tendencies, but I never associated them with being a programmer long-term. The worst is when they crop up during home improvement projects Stuff like “I’d remodel the bathroom, but I can’t find the optimal bath tub design”, or “when building the deck, and the optimal surface needs to be trucked by semi from hours away, and costs 10x as much as the normal ‘Home Depot’ solution”.
September 12th, 2007 at 8:30 am
Very nice essay, Paul Graham could have written it
September 12th, 2007 at 8:37 am
Just wanted to say great article. I believe it to be very accurate.
I wish to elaborate this “Perhaps it simply exacerbates a pre-existing mindset.” With a resounding yes. I have met with and worked with hundreds of programmers that were quite stupid and didn’t really understand programming. I mean they wrote code but it wasn’t good code, it was something that a beginner might write although they have been in the industry for years. They shared none of the qualities that you talked about which i consider as a must for any good programmer.
I do have an obsessive personality. Everybody thought that it was strange and even some psychiatrist diagnosed me with OCD. But later on they all reverted back their diagnosis when i explained what i do and how i do it.
I don’t consider it a bad thing. It is this same obsessive trait(along with the other traits) that allow me to solve the abstract problems that other “normal” people will take hours just to understand them.
Regards,
Alaa Salman
September 12th, 2007 at 8:43 am
Wow, I totally agree with this. I used to be a programmer and then a mathematician, and it has taken me years to wean myself of these obsessive habits. Now I am a manager, and am forced on a daily basis to settle on imperfect solutions, and now that I am finally used to it, it is liberating to be making forward progress free of perfectionism. The programmers I work with seem incredibly short sighted and difficult to reason with now, but I still understand where they are coming from. My new way of approaching my work has also helped me live my personal life much more successfully. I have more friends and more success dating women.
September 12th, 2007 at 8:45 am
I am impressed by how accurate your observations of the programmer are.
September 12th, 2007 at 8:52 am
If you’re such a good programmer then surely you can figure out a (perfect) way to prevent programming from ruining your life? In fact, I’ve already implemented the algorithm you need:
10 Stop caring
20 Goto 10
September 12th, 2007 at 9:09 am
Also, try being a mathetician. They get annoyed whenever anyone asserts something and doesn’t provide a formal zero knowledge proof of it within an axiomatic system that is both consistent and complete.
September 12th, 2007 at 9:13 am
“Obsession is dangerous, and anything great requires obsession.” - I think this is very true, but how many really want to be great? Programming should be fun.
September 12th, 2007 at 9:32 am
Very well written and exactly true. I agree with on every single point.
September 12th, 2007 at 10:08 am
[…] I came across this article titled “Programming can ruin your life” whilst browsing through reddit.com and found it quite interesting and very true to life. Anyone that enjoys and is good at [or thinks they are good] coding will find it a little bit too close for comfort, if you catch my drift. Considering the amount of coding that I have to complete in the next year it seems that I will become a complete social wreck, and no funny jokes from those that already know me […]
September 12th, 2007 at 10:31 am
Maybe this is true, but remember that every profession affects the way you think. If you’re a banker, maybe you’ll become money obsessed. Being a businessman might make you really competitive. Being a salesman might make you a compulsive liar. Comparatively speaking, being analytical isn’t such a bad a thing!
September 12th, 2007 at 11:05 am
I think you hit the nail on the head…I have thought many times about what you have elegantly and succinctly stated. Thanks for putting together a good piece.
September 12th, 2007 at 11:17 am
45454
September 12th, 2007 at 11:23 am
This might be the first generation of such programmers - people who have been coding since they were kids. We will find what happens to them in a few years.
September 12th, 2007 at 11:35 am
Nice post, lots of stuff rings true there. Programming does change the way you think.
I like the bit about the hope, the building something of your own thing. Especially about thinking you must always work. I do have a guilt about just not doing much. I always have this imaginary set of home development plans I have to set about. (Which often start and not finish!)
Now I just make sure I am loosely familiar with new talk of the town technologies that are alien speak to me. Just for the sake of knowing what it is, and where it’s useful.
September 12th, 2007 at 12:09 pm
A very interesting article but one I totally disagree on. I will try to assert my arguments in as few lines as possible as they are many. Of course the health issue is indeed valid but it is one that is largely depended upon the programmers themselves too (getting a proper chair isn’t as hard as it is usually presented as, especially with the awareness surrounding us an all media fronts nowdays)
First of all: Programmers don’t get to change their way of thinking in real life - on the other hand from the dawn of (programming) time -languages are attempting to imitate our way of thinking and talking - with each generation getting a step closer.
Next is the notion that going at a problem too many times gets it shorted in the end which is one I find totally wrong. Programming (if it can be called that today) is not about writing a thousand lines and then another thousand in debugging and maintenance. And then re-writing it. It is about careful analysis and planning, design and finally writing as little as possible - re-using things that have already been used. To me one who hits upon a problem until it falls down as if trying to bring down the wall has failed before they started.
I also disagree with the idea behind the straight time-line. I feel that it applies both in real life and in programmers’ lives to an extend. There are deadlines and milestones that ensure that in both cases. On the other hand, when you tackle something in life you still go back and learn about it. And also let us not forget that as living beings we have spent infancy, childhood and teenage years learning how to go about doing these things. We have already done quite a few commits and went back and did some meta-learning before being thrust into the big world to “do it right”. Therefore either way you look at it something feels wrong. Things are not so black and white there and I find the whole argument out of place.
Same with instant feedback of development in real life. You do something really wrong and you might get a punch in your face to remember to not do it again (or at least have a few friends around to help!). You do something else more subtly wrong and it will require a long-term effect for you to feel the wrongness as stated in the article. Should I say anything more than compile-time and run-time errors for the other side? Why else need maintenance and SLAs for a project if all bugs and problems are solved in the implementation phase?
The rest of the items presented above are more in terms of the mindset rather than a comparison between real life and developer’s life. I will not disagree with these but I will stress the concept of individualism. Not all programmers are perfectionists. There are those who will require the minute detail specced out and will deliver 99.9% of what is given to them nothing more nothing less. There are those who will try to “get things done” no matter the mess left behind as long as it looks like it is working on a front end (there nare no bugs just features). There are those that will organise everything to the minute detail, with PIMs and Issue Trackings and more ISO and Qulaity and Docs than you can shake a stick at; and yet their code will be not be any good. This difference applies both to real life and in their job life. I cannot see all programmers going under a single sign/label as presented above.
So, although the article does state it refers mainly to the negative aspects of Programming and its victims: the programmers, I find it overly stressed on a certain minority of that group of people. I call these people burned programmers, the romantic way would be to call them “those who gave their souls to the machine”.
In my mind all jobs have their requirements. It would be stupid to claim that programming does not require a penchant for analysis and algorithimic thinking. But the similarities end there. Like all jobs there are good ways and bad ways to approach a any job and to me the article above presents the results to a person who approached programming in the wrong way.
I should know - I was one of them
September 12th, 2007 at 12:12 pm
What a fantastic piece… so true.
September 12th, 2007 at 12:18 pm
cool and true. good job.
September 12th, 2007 at 12:27 pm
You are so right…
I am 30 now, programming since 10 years and only thing i remember from my life are some clever algorithms i wrote…that use no one really.
And of course dreams of my personal startup that was never born…
September 12th, 2007 at 12:37 pm
Speak for yourself. But surely your more self-aware than all that.?
September 12th, 2007 at 12:38 pm
I mean you’re not your. Aw there’s the perfection thang!
September 12th, 2007 at 1:12 pm
Says a young programmer: “A confirmation of what I suspected for about 2 years..”
The end of the article could not be better, judging what you do everyday from another point of view sure keeps you outta your mind.
September 12th, 2007 at 1:15 pm
Oh no. You have point something out, and when I look at myself…yes, you’re right. Many things match with my current personality. Even though, I haven’t been programming full time for a year now. Programming work flow still stay with me. Wow. Finally, I know where does my personality came from.
+ Wanting to work when I have free time.
+ Perfectionist.
+ Everything is possible (solutions is around the corner) attitude.
+ Over analysis.
Yep, that’s me. Well, the other half in your article doesn’t match myself. Maybe I haven’t been coding long enough. Interesting article.
September 12th, 2007 at 1:18 pm
Now I’m sad, thanks a lot
September 12th, 2007 at 1:36 pm
“You will spend your free time feeling guilty about not working.”
Amen.
September 12th, 2007 at 1:51 pm
Yes.
And at the same time, no. At least I know I don’t just eat junk food, I actually do cook and whatnot.
Yes, I’ve noticed that I do over-analyze things, and often this over-analysis does me no good, so partially true.
A little less stereotypes next time, please.
September 12th, 2007 at 1:58 pm
Couple things…
You have a spelling error “waist” should be “waste”.
While nothing you said is incorrect or inaccurate, one might get the idea that all programmers / developers / engineers / etc. are all (or will become) freaks. While some are, but that’s because they let themselves become that way. The part there about wondering why other people don’t observe things the same way is almost comical. “You will notice details that others simply gloss over.” I was like that even before I wrote my first line of code, so the job had nothing to do with it.
Any profession will ruin your life if you let it. Go hang out with some police officers, or accountants, take your pick at a profession. That’s why it’s extremely important to do things outside of work. Go hike a 14er (http://en.wikipedia.org/wiki/14er), go mountain biking, spend time with the family, play fetch with the dog, do that project around the house you’ve been putting off, learn to play an instrument or four, teach someone something (something other than programming).
Anyway, great article. It really made me think (not over analyze) about my thought process, how I interact with other people, and what I like about what I do both within and outside of my career.
September 12th, 2007 at 2:05 pm
So programming ruins my life the way that Math ruins a mathematicien’s life or Music ruins a musicien’s life. Maybe I am a dreamer, but if we don’t live for our dreams, what we live for ?
September 12th, 2007 at 2:06 pm
[…] 12, 2007 Programming Can Ruin Your Life Posted by funjava under Uncategorized So programming ruins my life the way that Math ruins amathematicien’s life or Music ruins a musicien’s life. Maybe I am a dreamer, but if we don’t live for our dreams, what we live for ? […]
September 12th, 2007 at 2:17 pm
Your post helped me to understand a little bit better my brother.
He started to manipulate computers ans electronic stuff before he could speak.
:-)
September 12th, 2007 at 3:19 pm
Nice article.
Hit some home truths!
September 12th, 2007 at 3:37 pm
Hi
I’ve done most of the things of your article.i’m good programmer but still many of my friends got the job because of good GPA’s but they don’t have good programming skill in fact they don’t know anything beyond C.and they also have limited internet skills.
they just judge you for the GPA i have 8 point GPA but they term me as poor anyw