One part about being a programmer is wanting to do cool things on the side. Maybe you get a fun idea for something and you want to whip up something to put that idea into practice.
Now think of yourself at your job as a programmer. One thing that's really nice on the job is having stuff to improve your productivity. So you think of something cool or some good idea to do that, you program it and then start using it. Maybe it's not the best right away, but you work with it a bit and iron out some of the flaws and it gets to be good.
Here comes the problem. Now you've got this software you've been using, and you want to use it on your own projects. But sometimes you'll be stopped by the deadly non-disclosure agreement (NDA). This is an agreement with your employer that any code you write while at work can only be used at work and you can't do anything you want with it.
I'm sure some of you have figured out that I am speaking from personal experience.
Anyway, here is my current dilemma: I don't want to come up with creative things at work, because I won't be able to use them the way I want to use them. If I do anything above-and-beyond the norm, what do I get from it? Maybe a raise, but the marginal utility of income is ever decreasing, so these raises really get to a point where I don't care anymore about raises, I just want to do cool shit. And be able to do what I want with the cool shit.
So then I end up doing the cool shit at home, where I can slap a big MIT or GPL on it and say, "this software is free!" But there's only a limited about of time at home. Each day there's probably two hours that I have free (after work, sleep, travel, eat, clean) to do what I want, and that needs to be split among other things besides coding: girlfriend, other friends, video games, guitar, reading, etc. So I don't really end up spending that much time doing what I want, rather what I have to do in order to pay bills and all that. Which I don't find to be a very satisfying career.
What do others think of this?