I was going to post the in the Developer's section of our forum but in my view it's too important for that.
I urge all programmers and loved ones of programmers to read this essay. It may seem pessimistic but it's beautifully written and better captures any description of the pitfalls (and amazing drive) of programmer-centric mindset that i have ever read.
I think most programmers will recognize some of themselves in this essay -- but it's real value may be to those people who live with coders and want some insight into why they are the way they are.
So if you're a coder with a significant other, print this out and give your loved one a copy to read. It may help them understand why you are the way you are..
from http://www.nedbatchelder.com/blog/index.html
I urge all programmers and loved ones of programmers to read this essay. It may seem pessimistic but it's beautifully written and better captures any description of the pitfalls (and amazing drive) of programmer-centric mindset that i have ever read.
I think most programmers will recognize some of themselves in this essay -- but it's real value may be to those people who live with coders and want some insight into why they are the way they are.
So if you're a coder with a significant other, print this out and give your loved one a copy to read. It may help them understand why you are the way you are..
Quote
...Programming changes the way you think...
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.
...
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.
from http://www.nedbatchelder.com/blog/index.html


















