I wasn't planning on writing an answer to this as it seemed a bit subjective and I knew I'd end up writing far too much, but I feel I need to re-address the balance of this thread a little.
To lay some background: I've worked in the video games industry for over ten years, both here in the US and in the UK. If you're interested my LinkedIn profile is here. I don't think I'm especially biased, there are definitely areas in both development and business where I feel the games industry needs to improve - as with all things software certain things just don't scale :) That said I love what I do and am glad my career took this path.
Work/Life Balance
The first thing I'd say is that if you're looking to work a flat Mon-Fri 40-hour week then the games industry is not for you. Overtime, or Crunch, is pretty much a given for big events such as E3 and the the alpha/beta period at the end of a project. If you're unlucky and you project is badly managed or suffers unforeseen events then crunch will start even earlier.
It's worth pointing out that the average length of a project in the games industry is about 18-months, and much of this is spent working regular 40-ish hour weeks in an environment that's fun, challenging, and largely quite relaxed.
Basically overtime generally falls into two categories:
- Because you want to produce the very best product you can.
- Because the schedule/budget/feature balance is shot and you won't finish on time otherwise.
Some people will roll their eyes at the first, but unlike many programming gigs, video games really are more akin to craftsmanship. When you're working on something that will (hopefully!) be seen by millions of people working 60-hour weeks at the end of the project really doesn't seem like much. Believe me, even then some people actually have to be sent home for their own good.
As for the second - smart companies track their schedules well and constantly make adjustments to features, tasks and staffing to stay on track and this might involve short periods of overtime to get back on track. Companies that don't do this realize sometime before alpha that half their game is missing and then have no choice but ruthless crunching until the release date.
There are well publicized cases of teams being worked close to death to finish a project due to poor or non-existent scheduling, or companies that lay off entire teams after months of overtime. Stories like these are awful but thankfully they're also quite rare. Hundreds of games are released every year but only the horror stories get publicity - stories like "team finishes game on time and budget!" generally aren't as interesting :)
Almost every respectable company now realizes that excessive crunch needs to be avoided and is actually detrimental both to the project and the studio's ability to retain and attract top talent. I have friends at the studio responsible for "EA Spouse" and the environment has changed radically since that event.
Salary
Frankly this is where Cletus is just flat wrong. Games these days cost millions to make - $10 million+ is becoming more and more common. Companies with this sort of investment do not try and save money by hiring budget staff.
Every year Gamasutra runs a salary survey which is probably the best way to judge this.
In my opinion the salaries for programmers are generally very good and easily comparable to other programming gigs, if not better. This is not always true for entry level art/design/QA positions where the barrier of entry can be lower than programming. Competition is a lot tougher for these roles.
As someone who's had a lot of involvement with hiring I will say money is rarely a factor in whether a programmer is hired or not. I have never heard of programmers being hired based on who costs less (as Cletus suggests happens). The only time salary has been a factor is when someone's requirements haven't matched their (perceived by us) skillset, or they're out of sync with people in the company of a similar level.
There's also good scope for progression. Game development is very challenging and if you're good and have an aptitude for it you will generally be rewarded. Good companies are very aware of who their star performers are and do not want to see them leave to competitors.
One area where the games industry does fall down compared to corporate gigs is benefits. Unless you work for one of the big publisher/developers (EA/Activision/Sony etc) you're unlikely to see share schemes and guaranteed bonuses. In my experience most companies offer good dental/medical plans though, some offer decent 401k's, and smaller developers will often offer completion bonuses or royalty sharing to make up for things they can't offer.
Skills
I'm sure this will sound biased but I genuinely believe that on average the technical bar for game programmers is higher than most other places. This doesn't mean you need to be a code ninja, but your skills need to be appropriate for your experience. If you've spent years as a C/C++ programmer and can't write an O(n) in-place string-reverse function I'm afraid I wouldn't hire you.
We are super selective because one bad hire can derail a whole project.
Unless you're interested in working on tools (and contrary to some perceptions, this is a ultra-important area that can make or break a project) then C++/C needs to be your strongest language and not C#. The only people developing games in C# these days are for things like XNA which is definitely a niche market. You'll never be able to write a PlayStation or Nintendo game in C#, sorry, it just ain't going to happen.
The good news is that after you learn the basics of pointers and memory C/C++ is pretty easy. If you know C# you already know most of the constructs and syntax and many games stay clear of the more esoteric features of C++ for performance reasons.
The two most important things in game development (IMO) are 1) Make it fast and 2) Make it clear.
Code needs to be fast because most games run an entire simulation cycle in less than 16ms. You need to have an understanding of performance - why never to call vector.resize() in your main loop for example - and an understanding of how different algorithms have different time/space complexity costs - O(log n) v O(n^2) and so on.
Code needs to be clear because it'll be around for a long time and seen by many people. Even after your 18-month project is done companies rarely throw away the entire codebase. Most games are created from a core set of libraries that evolve over time.
You also need to be good (i.e be comfortable) in Math, particularly geometry. I don't recommend focussing on math beyond the basics of trig though. Instead I'd recommend learning and studying Physics. The math required by physics maps very closely to that needed by games, and many games feature detailed physics simulations. Physics is also more fun :)
It can be hard to get your initial break but it's definitely not impossible. If you can demonstrate the skills and the desire to work on the games industry (hint: create demos) you won't have too many problems.
Job Security
There's a lot of news at the moment about various studios closing down and people becoming unemployed, as with most of the country the games industry may have some worrying times ahead.
As a developer you're often at the mercy of the publisher who's financing your game. Many studios have closed because a publisher yanked or canceled a game and the developer didn't have additional work. This has always been a problem and most developers will attempt to alleviate the risk by working on two projects which are at different stages.
There are bright spots. Even today there are many many studios out there hiring. Seriously - pick a game company and go to their website. $5 says they are advertising for programmers. I don't know why Cletus says there is an oversupply of programmers, there may be an oversupply of bad ones but good programmers are always in high demand.
Game programmers can also transition into related fields fairly easily. There is always a huge demand for people who can write fast and efficient code, particularly with the explosion of programmable embedded devices these days (phones, STBs etc).
Pros/Cons
To sum up, here's the pros/cons from my point of view.
Cons
- Overtime will happen.
- Few people will ever become mega-rich these days.
- Getting your initial break can be hard.
- Having a project canceled is like being dumped by the girl you love.
- Some games, no matter how technically good, will end up with poor reviews.
Pros
- You get to work in a relaxed environment.
- There are a huge number of fun and challenging problems to solve. Graphics, networking, storage, performance, physics, AI, tools - we have it all!
- You're surrounded by people who love what they do and challenge each other to produce their best work.
- After 18-months you get to see your shrinkwrapped work for sale.
- People think your job is cool. Even girls.
Good luck with whatever you decide. We're all lucky we work in a field where that offers so many different opportunities.