According to a CNN article
, being a software engineer is the best job in America. It's still the second fastest growing job (behind Physician Assistant). It looks like despite all the outsourcing and the slow years after the .com crash, things are still good for now.
In reality, there are two types of software engineers. The first group studied it in college because of the bright job prospects. The second group fell in love with it long before going to college, taught themselves programming, and continue to be involved because they love it. For them it's more of an art.
While interning at Microsoft a long time ago, Paul Leach gave me one of the best reasons why programming is so addictive. He said writing software is probably the only creative job in the world where one can always feel some progress. You fix a compile error. Progress! You step through the code and fix a bug. Progress! You refactor some old code. Progress! You figure out a clever way to do something complicated in a simple way and save weeks off a schedule. Progress! The project, even the company, can be in deep trouble. But the engineers who write code are often very happy when they are in the zone. We're not talking about a daily sense of satisfaction. We're literally talking about getting that job every minute or two.
There are a few other attributes I really like about being an programmer: working on a team, building something that millions of people use, and most importantly building things that actually improves the world. If a blogger in a developing country can earn a decent living from ads by writing some good content instead of working in a factory, we've leveled the playing field for the good.