Instead of doing the standard 9-5 salary based job, it's popular in the software development world to work as a contractor, or freelancer.1
Right now, I do the 9-5 thing. I'm learning it's because of one major fact.
I'd be terrible at it
It comes down to the fact that as a contractor, you have no control over the environment. The company paying you doesn't use git? Too bad. Git, but no GitHub? So sad. Test-unit when you love rspec? Why don't I get my violin and play you a sad song?
When you're employed full time, you can at least lobby to get things changed. I did this successfully to some degree at a previous job (svn to git migration).
Oh sure, you can pick and choose your clients, but nobody's perfect. You'll have to sacrifice on something. If you found the perfect client, then you'd probably want to work for them all the time.
In that case, why aren't you doing the 9-5 salary thing? Then you don't have to worry about handling benefits, stashing money for taxes, and all that crap that comes with being a contractor.
I'd whine so much about things not going my way. Or I'd just charge the customer more money. Oh you don't use GitHub? How about $5/hr more. Oh you don't use git at all? Mercurial? That's fine, at least it's a DVCS. SVN? Maybe $20/hr more. I really hate SVN.
Life's too short to work with shitty tools.
On another note, happy birthday mom! Love you!
- There are differences between the two terms, and there is even a third, the consultant, but I'm concentrating on the fact that you're working for yourself.