So I'm not a programmer by trade, if that's what this question means. I took another of my passions that I did enjoy performing on more of a mercenary basis, and went to law school, and am presently a very happy lawyer. I write appellate briefs all day in a quiet office and when I come home in the evenings, I unwind by putting some music on and writing something that'll never make any money or do anything except make me happy with how beautiful and elegant it is.
I'm not committed against the idea of writing code as my trade, but I'm happy that I don't have to do it unless and until the right opportunity comes along. Maybe it never will, and I'll go on like this forever---that seems most likely, and would also be just fine with me. It will mean that I never let a great artistic love be ruined by stamping out CRUD database apps all day until I couldn't bear to start emacs. (Plus, emacs is great for writing briefs in. I also think I'm the only lawyer in the Department who's ever filed a brief formatted in LaTeX. Looked great.)
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). 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.
 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 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).
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.
"Make users happy."
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; 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.
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.
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.)
Which makes me wonder how many HNers who code are what might be described as "professional software developers"? And how many write code, but only because they need to in order to accomplish the rest of their job?
(this might also be a poor framing of the question, but I don't have a better one in my head right now)
I'd guess that you would get an answer 2 orders of magnitude too small doing it that way, and that might be a generous estimate.
I come here for the high quality discussion on the articles I do understand, and I read the occasional programming story just to see if I can get anything out of it.
StackOverflow produce concise and clear answers, Rails webcasts insist (sometimes not entirely convincingly) that everything is quick and easy. HackerNews is frequented far more by programmers with serious breadth and depth of interest and far less by people looking for a quick fix or help with the learning curve. The resulting fondness for arcane languages and esoteric solutions can at times be overwhelwing even for the motivated novice.
On the one hand I think it's important for even non-tech people interested in that startup ecosystem to gain a basic understanding of how hackers think and the choices they face, which is my chief motivation for reading a lot of the programming articles posted here.
I'd like to develop an iPhone game, but I don't think I have enough motivation or focus to make it up the steep learning curve. I made a Pong clone in Actionscript, that was as far as I got. The only project idea I have right now is pretty complex; I think I'd need a more modest goal to start with.
Thanks to HN, I've decided to properly learn to program.
I'm buying a book on Python (http://amzn.to/bUMPCP), and I'm taking C++ in the upcoming semester.
b.Do these exercises for some extra oomp - http://code.google.com/edu/languages/google-python-class/exe.... there are some video lectures if required
They're much more better and practical than any ole paperback.
About 10 years later I found Hacker News after watching a talk by Jessica Livingston and then reading Founders at Work. A few years into getting my news everyday from HN, I have learned Java, built a few programs in VB, and built a couple scripts in Ruby, and am starting to dive into Rails for a startup that I'm doing some initial modeling/planning for.
When I am with "business people," I become the "tech guy." When I'm with a bunch of alpha-geeks, like at Founders and Hackers the other week, I am suddenly a "business guy." Seems I wear a different hat depending on the crowd.
I think I enjoy the challenge of both startup marketing, sales, etc., but also really like spending time finding programming solutions to the business problems we have. Like the other day I wrote a Ruby script to help automate a process that they were doing manually where I work. It saved the team hours and hours of busy-work every month, and felt really good to build. So it was trivial to many here, but solved a problem and forced me to learn more about Ruby. And I liked it.
Anyway, I guess I'm saying that I see business in general as a big exercise in problem-solving, and I enjoy that process immensely. Whether I happen to be using a Ruby script or my background in sales/marketing to do it, I don't care. I like the creativity and stimulation that come with both.
I do not do well in IDEs. I don't collaborate well with developers on large projects. I think part of it is because developers have a mindset I don't usually find myself in.
I'm a systems and information security guy by trade, though. People like me are in a strange spot where we usually have to know how to automate and code, but we're not expected to develop applications for the public to use.
I came to Hacker News after I heard it mentioned in hushed conversation on reddit about alternative news aggregators. I enjoy HN because it seems that content is a higher priority than karma.
Rather than code, I do machining, CAD, and design control.
Before that, when I had a day job as a programmer - I used to come up with longer descriptions and alternative titles for what I did at the firm that I worked at.
I never much liked the term "developer", since it sounds vague and wooly. I generally prefer "programmer" or "coder".
One of my coworkers used the term for a program consisting of a core that was a C library and a GUI that was in C++/MFC.
The author of a book I started reading (http://www.amazon.com/Tricks-Programming-Gurus-Advanced-Grap... ) used it to describe his style of writing mostly C but using a C++ compiler and taking advantage of some of things like stricter type checking, new/delete syntactic sugar, etc.
But I'm guessing it was a typo.
(Agree that he should've been downvoted - but curious about these points.)