Whenever I read articles like this I am surprised how people without a technical background balance work and fulfillment. I am so happy that I can find a developer position where I can be involved with such creative, fulfilling work and not have to compromise for money. I'm amazed and humbled by pieces like this and acknowledge the difficulty non-developers face when building a career and life.
Have you ever tried to speak to people who aren't software developers? For them, if you're a software developer, you're just a boring guy spending all his wake time doing the most boring thing imaginable, sitting in front of the computer, looking at the screen, typing something completely and utterly uninteresting.
If they imagine doing this for their whole life, they'd say "I'd rather die." And they certainly don't see any trace of possibility of what they consider "creativity" in your job (my other comment here elaborates this claim).
(I work as a software developer myself, but I'm also aware of my biased view of the world. And I've spent enough years doing that that I'm also at the point of "I'd rather do something else... maybe becoming a lion tamer" http://www.youtube.com/watch?v=XMOmB1q8W4Y)
I have spoke with non-developers, they often find their fulfillment in other outside activities. I do get comments like "How do you sit in front of a computer for hours?". They may see it as boring or not interesting but they recognize the value in the skill.
I've seen spreadsheets that would put your average application programmer to shame. Don't knock excel, it's one of the pillars propping up MS. I can see windows die but excel will be around for a long long time to come.
But I can be extremely creative in Excel! It can be programmed from the inside and from the outside in more complex programming languages. But that's my biased view where finding a way to implement something is perceived as creative. For non-programmers, I'm implementing something boring in fundamentally the only possible and utterly boring way: the program will get some boring input and produce even more boring output. Whatever you do, you're just making the connection between the two, which everybody can explain in a few sentences, in general. Duh! Everything else are boring details needed because the boring computers need them. And I, they observe, am earning my salary because I'm stupid enough to spend my time on that. Somebody has to do that too.
And don't think the people who claim that are stupid. A quote from Richard Feynman himself, describing events in 1940-ties:
"Well, Mr. Frankel, who started this program, began to suffer from the computer disease that anybody who works with computers now knows about. It's a very serious disease and it interferes completely with the work. The trouble with computers is you play with them. They are so wonderful. You have these switches - if it's an even number you do this, if it's an odd number you do that - and pretty soon you can do more and more elaborate things if you are clever enough, on one machine.
After a while the whole system broke down. Frankel wasn't paying any attention; he wasn't supervising anybody. The system was going very, very slowly - while he was sitting in a room figuring out how to make one tabulator automatically print arc-tangent X, and then it would start and it would print columns and then bitsi, bitsi, bitsi, and calculate the arc-tangent automatically by integrating as it went along and make a whole table in one operation.
Absolutely useless. We had tables of arc-tangents. But if you've ever worked with computers, you understand the disease - the delight in being able to see how much you can do. But he got the disease for the first time, the poor fellow who invented the thing."
(Of course, finding a best way to calculate arc-tangent on a given platform is a serious task. We know that. Somebody has to do that too. Naive approach will get a lot of errors, and also be to slow compared to the good investigated approach. That, it can be said, is an engineering problem, not a problem for a "developer." But still, we're just moving towards the "only" effective and correct way. But if we consider it "fun", well, poor we).
But the playing is essential! Without the playing you'd never get past first base. If I wouldn't actually enjoy this stuff I would have stopped doing it long ago.
<sarc>Yeah, writing code all day is so much more fulfilling than being a doctor or a teacher or a plumber or any number of things without which society would fall apart.
And people who don't to technical work all have drudge jobs with no variety or intellectual challenge.
</sarc>
I'm not at all surprised at how non-technical people balance work and fulfilment. I am sometimes curious as to how they balance their checkbook considering the decline in real incomes for many critical professions.
In my experience, many programmers grossly over-estimate the actual real impact of their work, especially in echo-chambers like the SF Bay Area where their hubris is reinforced by high wages. In general I don't like the anti-tech sentiment that is developing, but as time goes on I understand more and more where it comes from.