There are a couple million programmers around the world. Being this such a large and diverse demographic, it's hard to state any common ground in the community, except of course for the fact that we all write code. I am going to state some things I've observed. I'm even going to make some assumptions here and there. Fear not, I am aware that they are not absolute, and I probably wont be able to make any determinations of that nature on this subject. These are simply things I've observed and explain some behavior I've seen. If this isn't a good enough disclaimer, then let the hate mail/comments fly in. I don't care if every one of my readers protests about this post... all five of you.
I'm a twenty-something year old programmer, as are most of my colleagues. When I was growing up, as many of the children of may age at the time, I had a strong fascination for video games. Keep in mind, in that time, although video games were popular, they were not the main stream media channel they are today. It's difficult to give you a concrete explanation of the source of the interest in them. Somewhere in between the escapism of reality, the provided suspension of disbelief, or the ability to control your destiny. All of these ideals may be seductive to the average adult, but they are even more so to a child. As a child, you parents tell you what to do, your teachers hand you homework. You have little or no control over what you do and how you do it. It can be argued that as an adult you live an an environment that probably has equal or less freedom, but that's another subject. In that virtual world, you are in complete control. In a sense, you are god.
I remember an experience that came very natural to me while playing these games. Especially in action/adventure games. Whenever I got into a boss fight the first thing I would do is try to identify the boss' attack pattern. That would make a much easier and safer counter offensive. Back in the day, video game consoles didn't have the processing muscle they enjoy today.The enemy's patters where pretty basic and repetitive. To make the game challenging, you had multiple enemies coming at you from all directions. After getting good enough to beat the average game's artificial intelligence, and all of the lame kids that dare play with you, you tend to look for the next step. You start wondering how to make games. This is when you eventually find out about this thing called programming.
I've heard stories of similar experiences, but instead of video games being the catalyst science fiction, comic books and other creative influences have been the culprit. At any rate, the pattern holds. You find about this programming thing, and you probably don't actually get to work on it immediately, but it remains in your subconscious for years to come.
Now you're a teenager. You start hacking away with whatever resource you can get your hands on. Even if you have a fresh memory or not, the impulse that got you here was fun, mystery, intrigue. At this point, it probably is still about that. You make anything from stupid little programs that execute simple mathematical formulas, to fairly complex applications.
Eventually you decide to get a career computer science, systems engineering or some other technology related career because of this fascination. You learn how to code "for real". During or afterwards you go out there and you get a job. Nine out of ten times you will be working on custom business applications. Weather I want to admit it or not, that is where the market for your average programmer is today.
Although making and maintaining business applications can lead to a profitable income, there is one very basic problem with them: THEY ARE BORING! There is no feeling of achievement after writing 14 lines of code that tell you how much money is left at the end of the month. The reason why you this fascination started early in the life of a programmer and the way it has manifested at this point is completely different. Weather he wants remember it or not. Repetitive work tends to make programmers dull. You cannot expect major breakthroughs, or ingenious ideas from someone who has to repeat the same process in different flavors every day, 8 hours a day. Yes, there are exceptions, but they are simply that. Exceptions that confirm the rule.
Some of us get excited while working on "complex" features like networking, security or new web/mobile interfaces. Think about it. All of these things are abstract elements. The need for these elements is an obstacle that needs to be tackled. You have been chosen to do so. The process will lead to identifying patterns which you need to wrap your head around in order to make the given technology work in your favor. In the end, you will be worthy of praise for the addition which will make the product better. Sound familiar? Yep... humans are that predictable. It's another video game. You are hungry for the very things that got you here in the first place. Things that have been replaced with monotonous number crunching and report generating.
Sadly all of the corporate technologies that programmers withing this profile tend to use, weather the want to or not, are working in the opposite direction. They abstract you from anything that may lead you to code something new and potentially exciting. You are left with "your important business logic", that is usually found somewhere in the slogan. Yes, you will have an increase in productivity, simply because you will have less code to write, therefore less bugs to fix. The problem is that you will have to repeatedly write the same type of code over and over again, while your framework/tool/environment takes care of the boiler plate.
This is one of the principal reasons why you see people working happily in a small company or startup. They are making less money, they have less benefits, and have a potentially insecure future, yet they couldn't be happier. Aside from the fact that mountains of bureaucracy will magically disappear, you are generally working on something new, different and exciting. You are going back to the basics. You have another boss who's looking for an ass whopin' and you are just the guy to deliver it. And for those of you reading and have not played a video game in their lives, take my word for it. Kicking a really hard boss' ass, is one of the best sensations of satisfaction and self achievement there are.
Not all is lost. Google is trying hard to get the status of the "anti-corporate corporation" in attempts to lure talent to work for them. They have a program where employees are allowed to dedicate 20% of their time to whatever project they decide. This is one of the most awesome idea's if heard since sliced bread. On one side, you have happy, interested employees working hard to get their ideas across. On the other, you have new products and services cropping up from the company, with a much smaller investment in research and development. Gmail, google news, orkut, google talk where all product/services, that originated from these efforts.
In today's highly competitive market software and information services are getting an ever increasing important role in every day life. This can be said for both personal and business environments. Attention will undoubtedly go to the ones offering the best and most original ways to handle the information. A lot can be said for efficiency and it's importance, not arguing against it. Like anything and everything else in life, a middle way must be found where it can coexist with things like unique ideas, fresh concepts and plain old fun. If we are just going through the motions like robots, then there is no hope for evolving the way we handle or information, which in the end translates to the way we handle our lives. Is that really a world you want to live in?