I’m pleased to have helped spawn a relevant off-topic chat on this subject 
Firstly a little background which might explain my stance. I’m 41, have two lovely girls aged 5 and 3 and a lovely wife. I’ve been programming since the age of 7, did a BSc Honours degree in Comp Sci at 18, and at 21 jumped straight into the industry, mostly programming in 4GLs and SQL until something useful came along in 1998 or so (Java). When I was in my youth I used to dabble in games programming for the Vic 20, C64, Atari ST and Amiga, but then I got a job as a “real” programmer and was showered with money and forgot all about games programming. My occasional peek at the games industry confirmed my suspicions: overworked, paid far less than me, no job stability whatsoever, and totally, utterly undervalued, with even less job satisfaction than normal programmers get. I became a contractor in 1997 or so and remained so until 2009.
The younger members in here may not be aware (yet) that computer programming for a living is actually one of the least satisfying careers you can have. No wait! Hear me out. I’ve had a remarkable career in computer programming. I’ve literally had more money than I knew what to do with. The results of my work live on and several of my most prestigious projects are still live today 15 years later - for example the BBC’s election programme results systems, or the APTN slate caption systems. I’ve had the fortune of trying out all sorts of different languages and platforms in all sorts of different industries.
And yet, it turns out computer programming like this is deeply, ultimately dissatisfying. The initial joy you experienced all those years ago when you made your first program do something, when you got that sprite to whiz across the screen, that doesn’t really last. Eventually you will discover that although there are lots and lots of interesting things you can do with computers, if you’ve got an actual job programming for da Man, he doesn’t want you to do those things. Mostly his concerns are about getting numbers typed into boxes that go in to a database. And so that is what you will do. You may be handsomely rewarded for it if you pick a skill which is flavour of the month, which is what I did. If you are unusually lucky you might get a job in a slightly more exciting industry where maybe they make flight simulators and your job will be to code the artificial horizon indicator or make the red lights glow in the cockpit. Or whatever. It all amounts to very much the same thing: someone else is telling you what you have to do, and for a while you’ll be quite happy solving the problems they present to you.
Unfortunately the buzz does not last. After not too long you will come to realise that you are “solving” the same problems over and over again. It gets to a point where you don’t really even have to think about what you’re doing any more. The Man likes this, and promotes you to senior programmer or team leader, and pays you twice as much (though indeed you may be doing rather more than twice the work, but that’s another story). And on top of it all you eventually start to realise that no-one ever says thank you when it’s working. Your victories are microscopic, largely unnoticed, and fleeting; quickly forgotten. But when you make a mistake… when you get it wrong… you are the subject of everyone’s ire. And you will fuck up. There’s a joke about programming for a living, which is that we’re basically paid to fix our own mistakes all day long. That is cuttingly close to the truth. Programming is a game of attrition. In the real world there is constant pressure from three factors (I think, famously coined by NASA as “faster, better, cheaper”), and you can only pick two of those factors to improve, always at the expense of a third. As the budget is always fixed or shrinking, usually it comes to an argument between faster and better, and deadlines are deadlines… you can see which factor usually gets punted down into the lowest priority. And so you fuck up, and are doomed to spend your days fixing your own code, or more miserably, someone else’s code. And let me tell you right now that fixing someone else’s code written in some rarely-used and esoteric domain specific language is rarely enjoyable. But I digress.
There then comes a fork in most people’s careers at this stage, and it depends on your personality. You will likely branch into one of the following categories:
-
Plod on for the rest of your life. Then one day some kids from #3 below manage to gain enough momentum that you are suddenly outdated and everything is done in a new way which you don’t know. Except it’s still the same fucking problem. You’re not solving anything new, you’re just being forced to do it in a new way, and really, probably for no really good reason.
-
The Peter Principle. You will see the ending of #1 coming and think, “I can’t be bothered with reinventing the wheel every 2 years” and you’ll find yourself angling for promotion into middle management.
-
You will tinker and fiddle and find some little thing that makes solving one of the problems you’ve solved 100 times already solvable with a bit less typing. Hopefully it will have some sort of esoteric syntax almost but not quite unlike some existing language which everyone is using already. If you’re lucky you’ll convince everyone else in your department that it’s great and you’ll all switch to it until #3 inevitably repeats itself. Then one day you discover that the world at large doesn’t move quite so quickly as you and they’re all still using the original language which carried on evolving slowly in the background. When your nice safe job is suddenly axed you find yourself either with a niche skill in unexpectedly high demand (unlikely but possible!) or having to hurriedly backtrack and find out what all the plodders have been doing all this time and how it’s changed since you last looked and throw yourself at the mercy of a job market where everyone else is doing exactly the same thing as you.
-
You flee and do:
4a. take up farming sheep or some similarly radical different career path. Few return.
4b. you use the vast wealth of knowledge and skills you currently have and try to squeeze what value you can from them without falling back into traps 1, 2, and 3.
And with that all said, guess which path I took.
Well, actually, I’ve done all four. I plodded on for a good while, cleverly kept in my place by positively filthy amounts of money. How does $1000/day sound to you? It sounds good, doesn’t it? Why would you ever leave? I switched 4GLs a couple of times, and switched RDBMSes many times, and alighted upon Java which was back then precisely the situation described in #3 but with the good outcome rather than the bad one. I ended up as CTO in a software company for a few years. And finally … I fled and took option 4b, but that wasn’t until 2009.
So I’ve got all these programming skills, and specific skill in Java since version 1.1, and SQL, and a reasonable smattering of OpenGL. What to do… what to do. So I start a games company, which seems like the ideal use for these skills, though Java is a bit of a pain at this stage (2001 ish, no OpenGL to speak of and still kinda shittily slow, and the machines of the era aren’t much cop either). It took me 8 years of making games to get reasonably successful at it - successful enough to stop contracting anyway.
The situation I now find myself in is this:
I earn far less now but my actual earnings are now limited only by myself, rather than how much the market thinks I’m worth.
I really enjoy my work. I get so many emails and comments from people about how great the stuff is that I do, I can’t conceive of going back to working for The Man again.
What I do is make computer games for a living. That is, I actually make games. Not engines. I don’t fiddle around with fancy new tech unless it solves an actual problem I’ve got. Anything other than getting the game finished and released is just wanking about. It won’t earn me any more money. The only thing that earns me money is finished games that are released before I go bankrupt.
So, I don’t have a lot of time for learning new things to solve the same old problems. I don’t have a lot of time for debugging. Fixing broken things is time I could have spent putting more effort into the actual game product. So I hate it when stuff doesn’t work. Increasingly I find that programming is basically the bottleneck to realising a game concept. If I could just shout at the computer and it wrote the code for me, I’d quite like that. I like to make games more than I like programming. Programming gets in the way! And every time I am forced to learn a new trick to solve an old problem again, I resent it, because it’s wasting my time.
I like learning stuff, don’t get me wrong. But I am focused on learning stuff that I need to learn because it moves me significantly closer to my primary goal which is finished games released on time. And it should come as no surprise to you that if there are many, many things that I could be learning that move me varying distances closer to that goal I will prioritise them such that the one that gets me closest for the least effort comes first.
Learning new programming languages, right now, is probably the very, very bottom of the list, because I can think of many other things I could be doing instead.
Small piece of anecdotal evidence: when I was starting out as an indie game developer, I encountered many other n00bs like myself, but I set myself apart in one important distinction. They would jump on every new tech that came along*. Flash! JavaScript and HTML5! No wait! HaXe! No wait! Monkey! No! Unity! Objective-C! er… Haskell! Maybe not. What sets me apart from 99% of those people is that I’m still here, still making games, and earning money doing it, because I just got on with using what I already knew and applying it.
And breathe.
Cas 
- and then, ahaha, make a “game engine” for it