My hypothesis is that the "problem" with programming is that it has too much upside potential: If you learn to program, have a couple more skills than just programming and can keep your wits about you, you can find lots of business and professional opportunities... most of which carry job titles other than "programmer". You move up to "software engineer", and then you become "manager of X" or "founder of Y" or maybe you're just "the guy who does Z" where Z is something that makes money for the company, like marketing or strategic research or manufacturing operations.
The most significant piece of code I ever wrote was written when my official job title was "product engineer", which kind of means "troubleshooter". My job title and description had nothing to do with software; software just happened to be what I did all day, every day, (not to mention a fair number of nights) in order to help make the company millions of dollars by finding manufacturing bugs more quickly.
We (Python Ireland user group members) recently held our own PyCon and I got chatting to a recruiter who confirmed what I was already thinking: that the "recession" hasn't really affected software devlopment jobs. Apparently there are loads of development jobs out there that pay above average.
But, like you said, few of them have "programmer" job titles.
If not, you'll be happy to know that the Python job market is growing. A lot of the government type organisations seem to be switching from legacy systems to Python-based web apps. For example, a friend works for the Royal College of Surgeons replacing their legacy systems with a Django based web app.
A manager considers him or herself "successful" and looks back at their own career and doesn't see that they were perhaps a mediocre programmer themselves (or actually bad and given a promotion so they wouldn't be able to break stuff[1]). Then they look at a candidate who is still programming after 20 years and they see a "failure". That's why ageism is rife in the industry.
[1] It's very very difficult to fire someone these days. So you "promote" them sideways to get them out of the way. Problem is a couple of years later everyone has forgotten that, and their next promotion is a real one...
I generally am not a fan of software engineer, because most software seems to involve a much higher level of trial and error than traditional engineering disciplines. To me, engineer implies a level of guarantee that usually can't be provide in most software systems.
In extremely critical software systems the developers are probably software engineers, such as if the presence of a single bug in your code would cost someone their life or waste billions of dollars.
Software engineers just have a very high standard for "it is now complicated enough". If an engineer is forced by circumstance or insanity to add lots of features to an analog circuit, they end up in the exact same tar pit as the software engineer. Ditto for chemical processing plants, jet engines, etc. In fact, the usual approach these days is to move a lot of non-software complexity into software when possible, so trial and error becomes a feature.
I don't hack, crack, or (verb)script-kiddie, so I won't refer to myself as a hacker, cracker, or script-kiddie.
SC1: yo dog, long time
SC1: still haxoring Wordpress modules?
HNer: naah man, WP is gey
HNer: I am busy hacking Supply and Demand
SC1: wtf? the economic model?
HNer: yeah, making something people want
-- SC1 has quit IRC (Quit: Leaving.)I do not call myself a programmer around consulting clients because I charge much more money than my programming skills can justify. Most of them do not need a title to understand my skill set, since they asked for me in the first place, and to the extent I have one it is as "the guy doing X for us" (X is usually a combination of programming and marketing).
"Founder" isn't too big in Japan, so I usually introduce myself as some variant of "Owner of a company." It is ridiculously superior to "programmer" in terms of social status and sets me up for an automatic conversation topic (given my age and pallor, "How the heck did that happen!?" is a common one).
"Make users happy."
Pac-man?
They do this not because it affects their productivity negatively (they have even less of an idea about their individual productivity than you do), but rather because it is a hit to their familiarity, and an easy rallying point to demonstrate their "consumer identity" to others. Facebook has gotten the most unlucky with this kind of problem (I think because Facebook's core 15-25 demographic are the most likely group to protest, riot, and generally shout at things), but Google has it nearly as bad, being the "front page" of the Internet to many.
1. You're providing too many knobs and dials at each step in a workflow (see the TED talk[1]; solving this is basically where UX design and game design merge into one field),
2. Or there is a certain minimum level of strategic thought required for your business process, and you've removed all the "ruminance gaps" that allow users to have those strategic thoughts while believing that they are working. Instead, they have to just sit there and look unproductive while they ruminate, which creates stress. (You can also cynically call this the "users don't really want to do their jobs, so the more bureaucracy, the better" problem—but it still applies even to the most dedicated workers.)
You can solve the first problem with a re-design, but the second problem is actually a social one, related to how people are perceived, and how they perceive themselves, while working, and needs to be solved at the company-policy level.
As for easter eggs—I would say that it isn't your job to entertain your employees. You shouldn't be paid for releasing features which don't contribute to overall productivity (though, of course, you can do it anyway, on off hours; and keep in mind that increased morale has the same sort of effect on productivity that advertising has on brand-building.) But, on the other hand, it's also not your job to make sure that your users aren't entertained. Instead of releasing easter-egg features, perhaps just install some good games (not Minesweeper) on their workstations, and let them relax that way. Again, company-policy issue.
[1] http://www.ted.com/talks/barry_schwartz_on_the_paradox_of_ch...
How about a game that rewards employees for completing work tasks? Like, for every customer-reported bug triaged or minute of audio transcribed, you get x gold to spend in the game. Maybe even integrate the work tasks into the game, like that old Atari game where you had to send the right meal orders to the right tables -- show categories as buckets, and bugs as falling descriptions. Earn in-game rewards by correctly categorizing bugs faster than the average.
Heck, if someone wants to work on this idea, I'd probably put my current project on hold and join them.
Don Knuth's title is "Professor Emeritus of the Art of Computer Programming". If "programmer" is good enough for Knuth, then after two decades of writing software, I aspire to be worthy of the title.