I'm not asking why you work as a programmer, but wether you have a passion for the act of programming.
I think of programming the same way an artist thinks of painting or a musician thinks of music, it's not simply a means to an end, or a job, but something inside of you that needs to be expressed.
Sure, you might think I'm nuts (and maybe I am) and that programming should be a straightforward engineering task, full of precise methodology and governed by a strict set of guidelines. Many people lament that programming isn't as advanced as other types of engineering and desperately try to find some way to corral it into a more precise science.
Maybe it should someday, but otherwise I want nothing of the sort. I love to program.
I've been writing programs since I was in high school and learned on a teletype connection to a mainframe somewhere. Basic and Fortran II (which oddly enough was written in Basic). My first solo program was a carnival, pretty simplistic but it worked, and I was hooked. That was 35 years ago I think. My first real programming job came in 1981, so soon that will be 28 years.
Despite all the time and all the changes I still love programming.
I still love the art of debugging, especially figuring out problems with almost no information. People who learned to program in the "early days" learned how to debug with virtually no tools, no unit testing, almost nothing but intuition and trial and eventually experience. One time during the years I worked on Deltagraph, a user called into the support folks and said "All of a sudden, every time I launch the program it crashes". Today most people who think the app needed to be reinstalled or the user had bad hardware of something. I figured out what they meant and fixed the bug in a couple hours with no more information that the one sentence. It was an odd combo of preference settings that weren't handled correctly. It was a puzzle and it was actually fun to fix it.
If you don't find something like that fun you aren't a passionate programmer.
Another thing I love to do is start a new program, cmd-N (or control-N on windows), a blank canvas onto which something that had not previously existed will be poured. Sometimes you have a lot of requirements and specifications and sometimes all you have is an idea. Then over time a program appears and works and does whatever it was supposed to do. That's magical, like creating the universe or something.
Some programs are mundane, some are boring, some are magical and the best of all is doing something no one has ever thought of (Trapeze was one of those). Of course being a programmer means updating existing code as well (I spent 5 years on Deltagraph, oddly enough the app doesn't appear to have substantially changed in the 15 years since).
Even refactoring can be fun. With Deltagraph 1.0, I asked the publisher if they wanted multi documents open at once (was not that common in 1988) and they said no. So I used globals (the code was in C, shoot me) and of course after version 1.0 was released everyone wanted multiple documents open right away. So I spent a day going through the entire codebase and mapping out the use of globals, and the points where multiple documents needed to be hooked in. I was able in just a couple hours or so to determine exactly where and when the globals needed switching and it worked the first time. Man that was a cool feeling. Sadly this code is problem still in the damn code today! Sure using globals today is bad karma, but that was 20 years ago for me!
What I really love is tackling something no one else knows how to do, or maybe no one has ever tried to do. That's the most magical thing of all, figuring out how to write a program to do something totally unique, or even seemingly impossible.
Try putting that on a resume! No one wants to hire you if your best skill is doing something you really have no experience in, everyone wants Weblogic 8.X and you better have 3 years of experience in it or you are a nobody to us.
Oh well, I am beyond getting the usual jobs via the usual methods, since no one hires a 51 years old programmer with up to date skills and 28 years experience being a passionate programmer who still loves to program. I work on iPhone games, do some work for a games company, and hopefully will find some other opportunities by finding contacts in this new industry (for me).
I don't begrudge people hiring younger programmers who have specific skills that are in demand. There are tons of jobs in the IT world where passion is not really a requirement to work. Yet the work of passion is always going to be better than the work of someone who's only in it for the job. Of all the programmers I've met in my life, the ones who really really loved to program, to learn new things, to push the envelope of what's allowed, have always done the best work. Young or old it doesn't matter but the passion, the desire, the need to program is always going to be the people you want to hire.
The whole open source movement is a testament to passionate programmers. Who in their right mind would work for free for long hours and over long periods of time just for the shear joy of programming, of creating something cool or useful or badly needed. You don't do this if it's just a job. You do this because you love to program, love the challenge, love the creation, love the difficulty.
I love to program, and if I ever lose that love, I will no longer be a programmer.
It will be a sad day.

Cyril Gupta 07/13/2009 20:12
A very moving an emotional article. Only those who share your passion for programming can understand what you feel.
Thanks for sharing.
OtengiM 07/14/2009 14:48
As always, the codist articles are awesome, Nice writing, very inspiring. Keep it up the codist.
Evan Meagher 07/14/2009 16:06
Hear, hear! Great article. Programming is a lifestyle to those who allow it to be so. Your passion and humility towards your craft are obvious. I'm left impressed and jealous.
joe snyder 07/14/2009 19:22
"No one hires a 51 years old programmer with up to date skills and 28 years experience being a passionate programmer who still loves to program"?
Don't waste time trying to get hired. Instead, create a product and company, and start selling. Ie, identify a need, and fill it. Avoid horizontal apps/markets, like iPhone games. Instead, carve out a vertical niche.
Step 1: Survey everyone you know or can find who isn't a programmer, yet uses a computer at work (preferably small business people). Find out what they need yet can't make their computers do to their satisfaction. Eg, a print shop who needs to time-track employees more accurately. A real estate agent who needs a decent bulk mail tool. A dispatcher who needs better route planning. A bookkeeper who wants to add payroll services. A house painter who wants to compute better estimates. Or scan the "programmer wanted" sites to find same. (Remember, avoid horizontal IT projects, concentrate on vertical apps.) In a week or two of research you should be able to identify a niche market in need of a useful app with a decent-size potential customer base.
Step 2: Design and code something, and give it to your first few clients, under license of course. Do a few quick improvement iterations to turn it into something good enough that others are willing to pay for.
Step 3: Market to the rest of the customer base, and sell, sell, sell. Grow the product, hand it off to hired help, then return to Step 1 for the next app.
Norman 07/14/2009 19:45
"carve out a vertical niche" is good advice. hopped over to rentacoder.com to see what the more expensive vertical business projects were and immediately found 3 possibilities: rental/renter tracking for property owners, state law adherence for recyclers, workflow mgmt for medical transcribers.
there's no end of ways for programmers to make money when they're willing to strike out on their own (that means forming your own business, not contracting). the biggest mistake to avoid is wasting time on too-small a market. don't code a product unless you can sell it in volume. for example, of the above 3, rental tracking has probably the most potential.
Gabe 07/14/2009 20:07
"Who in their right mind would work for free for long hours"?
Answer: students, and young, single, employed programmers who work for a steady paycheck at fairly large institutions but find open projects more interesting than their own work.
If they're lucky, an entrepreneurial (or control-freak) streak finally kicks in, they'll create their own product, and find out how much fun it is to grow something from scratch.
John Doe 07/15/2009 09:54
"Who in their right mind would work for free for long hours"?
Sometimes the employer even suggests it! "I have something to do but you can stay, it is very crucial that we deliver this feature tomorrow. Thank you."
The simplest opinion for this article is "I work for money and if it can be fun at the same time, good if not I'll take the money can look somewhere else".
Pranab 07/15/2009 18:13
Great post. I can empathize with your feelings. All my life I have been programming out of passion and the money always followed, so far. It's true most companies are interested in mid level engineers who have experience with specific skills in specific technologies. You either let your entrepreneurial spirit free and try to build your own product or find an employer who recognizes and appreciates your passion and the breadth of your knowledge.
Pramatr 07/16/2009 00:32
Great article, really nicely summed up the feelings that many of us have!
Siva Chandran 07/16/2009 03:07
Really great article, says what I've been thinking about passionate programming.
Mark Johnson 07/16/2009 14:10
I used to be extremely passionate and devoted to improving my craft. But all that has been beaten out of me after working for 13 years with apathetic co-workers, and employers that couldn't care less about producing quality software.
Steve 07/17/2009 22:16
I program because I can live anywhere. I'm not that passionate about it unfortunately.
Ville Laurikari 07/18/2009 02:43
Because programming is magical: http://hashedbits.com/the-programming-high/
Gustav 07/18/2009 03:36
Very fun article to read! I agree completely. It is a true shame that experienced programmers like yourself go without a job. A huge portion of the programmers coming out of universities today are nothing but typists.
Mohit Soni 07/18/2009 04:40
I'm happy to find someone, who really loves to program after reading your blog post. I have the same passion for learning and programming (I feel both are part and parcel of each other). Happy coding... Cheers!
zendyani 07/18/2009 09:23
it's a great pleasure to read this article, realy a great article, long life to passionate programmer jaahahahahaha
jose 07/18/2009 12:12
I feel like you do, I need to find a difficult problem and solve it, I need people using it and improving their lives:
I have done a voice recognition tool for myself, it took years to be done, but now I thing is the best thing ever done in the field. It doesn't need training because the way engineers had done recognition in my opinion is wrong. All the neural systems thing is BS for doing something without understanding it. It needs 10000 times more processing power, time and resources(RAM) that really needed.
I have done my own tablet recognition, and OCR software, in fact I have interwinded them. As the voice recognition, it's resolution independent, don't use pixels for processing (takes a lot more work, but when it works it works better).
I learned to program disassembling when I was a kid, from ORC+ and the old fravia tutorials, it helped me understand what the computer does, when you read C, you know what operations the computer will do internally, and debugging something with code is way easier than reading ASM.
I expect to sell my software soon, I think everybody is going to use it, specially the voice one. Cheers
Kunal 07/19/2009 00:19
I totally feel the same my man... programming is a passion, and not just any other job. There was a time when I never loved it so much, a couple of years back is when I felt really passionate about the code. A well written article... only one who loves programming would understand.... way to go.
abby, the hacker chick blog 07/19/2009 06:58
You rock. Thanks for posting this. I couldn't agree more and it's so awesome listening to someone else share their passion, which so clearly shines through in this post.
"What I really love is tackling something no one else knows how to do, or maybe no one has ever tried to do. That's the most magical thing of all, figuring out how to write a program to do something totally unique, or even seemingly impossible."
This just put the biggest smile on my face. I feel exactly the same way. Don't ever ever lose that wonderful passion. :)
abdel allah 10/19/2009 22:11
Sorry , Actually my situation is so so difficult. I graduated from Mathematics department But I got job as teacher in computer science major by mistake. I don't like programming. So I wanted to change the major but I couldnt'. SO I stayed almost 10 years running away from programming and teaching mathematics. but I got scholar ship in computer science major, " compiler design". SO I have to learn by my self programming. After three years from trails I failed to like programming. To be frankly speaking, maybe the reason because I have to think(deeply) always in programming but I couldn't know how to solve it till now. ie. how to think in programming. and I didn't try to think deeply in my life before. and also I don't like data structures becuase I tried by self but I couldnt'. these fundamentalls for any one his major is computer science and his research field is compiler design. but unforntuly I couldn't love them.
now I still have one more year in my scholar ship. If I coudln't love progamming, and data structures, I'll go back to my country by this so so big failure in my life
please try to be serious with me in your reply. Any one can help for that. how can I love or like or enjoy programming and data structures and all fundamenta of computer science. this is really what I miss. HOw ????? how to love what you don't love ? what is the main reason for hating programming almost 16 years till now. what is my problem. My feeling is that the main reason is that I never tried to think deeply in my schools. mathematics is just algorithms and apply. so because I know well that programming need thinking always . so I run away always. maybe by this bad feeling about not mastering programming, every thing is so bad in my life. please anyone who has the ability to help me in my research , "compiler design" i.e. teach me how to make a compiler in programming (step by step) , send his email to me .nowadays I am living so bad situation in my life because almost I will fail in my research if I couldn't overcome on my problems and start my research this final year I have. thanks in advance.
Steven Diomampo 05/14/2010 18:05
Great post, very inspirational.