The following InformationWeek article comments on this and gives a few reasons why software engineering is so great.
They talk about flexitime, problem-solving excitement, team-orientation, creativity, and freedom to fail. The latter is interesting and I am not sure I fully agree with it: Yes, a software engineer will often try alternatives and discover some don't work, but I think 'freedom to fail' is not the way to describe this. Ideally any organization employing software engineers will want people who can spend very little time on 'failing paths'. Instead, a good software engineer will prototype and explore alternatives relatively quickly, and then actively design for a solution that is highly unlikely to fail, or 'refactor' when they see failures looming. A key aspect of engineering is designing robust systems that do not fail.
Another thing I question in the Information Week article is the way the author contrasts software engineering and programming. "Unlike programmers, software engineers typically work in teams ", they say. Firstly, I have long been convinced that there is little meaningful distinction in the workforce in most companies, it is really only a matter of education, skills and attitude that makes you capable of being a software engineer. In reality essentially all programming should be done by people with some software engineering background. Secondly, most people who one might call 'mere' programmers (lacking software engineering core skills) still have to determine requirements, do design and end up managing projects. They just can't do these things as well as someone who is trained. Finally, contrary to the article: Software engineers and programmers are all equally likely to work in teams (or not) in todays world.
Here's my take on why it is truly great to be a software engineer:
- The sheer number of diverse jobs with good pay
- The opportunity to be creative
- The sense of satisfaction from getting something complex to work and be happily used by others
- The feeling of gratitude from thankful clients
- The rush from solving complex problems.
- The chance to interact with people and technology from all aspects of society. You like health care, music or games? Go find a software engineering job designing systems in these domains.
- The human interaction with clients and colleagues and the resulting team spirit
- The respect from being part of the professions of engineering and computing. Note that I am careful to indicate that there are two intersecting professions you are part of.
- The flexibility of the work environment. Opportunities to work at home, or have flexible hours are common.
- The ability to be always learning. Technology and application fields change. Learning is fun.
- The opportunities to lead and manage for those who want