Keeping Programming Fun?
nb caffeine asks: "Having recently graduated, and now working as a developer, I've discovered that after 9 hours of programming at work, I have little interest in coming home and working on my personal programming projects. I've become upset with this fact, because while I was in college, I spent quite a bit of time working on personal projects for my own use. I also noticed this trend during my summer internship, and I have a feeling that it isn't going to get any better. It's not to say that I don't get to work with cool technologies at my job, but they aren't anything that I would pick up in my spare time. So, how do my fellow programming geeks balance work related projects and personal projects? Or, if you've already discovered that after 9 hours of programming, the last thing you want to see is a computer, what hobbies does the Slashdot crowd enjoy after they've ruined their hobby by turning it into a job?"
I'm consider leaving my programming position for an unrelated field. Programming is my hobbie, not my career i realized. Business programming is dull, and drains me of the motivation to work on something ejoyable. (boss, this is NOT my two week notice.)
I've had similar experiences and concerns. My conclusion is that you only get a few good hours of creative coding per day, if you're lucky. So if you spend that at work, you'll have none left for your own interests. While there's a few ways to solve this (not doing any real work at work is one ;) ), I find the best is to alternate each day between menial and creative tasks. So set aside some days at work to do documentation, specing, testing or whatever, which will leave you with the motivation to do some actually coding when you get home. And then the converse, where you can still do useful things (e.g. documentation) at home, after a good day of coding at work.
At work, I have to use fortran and c. At home, I use common lisp. Not much chance of getting them confused. The liquid strangeness lisp makes a relaxing break from the boring fortran and godawful c of work.
Try joining the Society for Creative Anachronism, a sort of cross between medieval reenactment and a social Renn Faire. Medievalism is as far from computing as you can get, which explains why so many geeks join it - geeks are logical, see, and it's logical to want to get away from geeking...
I have discovered a truly remarkable
This is really weird to read all of these posts. I love programming. I read all of the books I can on every aspect of it I can. I don't mind working 10 to 15 hour days at the office (I have to and I do restrain myself due to a recent marriage, I love my wife to!) Most of the time my wife has to beg me to come home! When I'm at home I'm working on my own projects and doing side jobs. When I am driving I'm thinking of how to properly apply a design pattern to a certain test or application. When I'm not programming I think about programming. I love writing code in all the languages I can.
Programming has never not been fun. It has always been a challenge. Even the dull routine work, well if I ever get dull routine work I write a script to automate what I am doing, so it isn't dull routine work anywhere. If it gets dull in one language I'll pick up a different language and write the routine in that.
Perhaps there are people who got in the wrong job for the wrong reason. If you do what you love you'll never be at work in your life. I've recently told my boss that work is like an adult playground for me, because I enjoy it so much.
Maybe I'm a little to code crazy, but I could never imagine feeling another way. I've been at my current job about 3 years.
So my advice is to do something you enjoy, don't settle for mediocre enjoyment. That's when you have a *job*.
I know this isn't exactly an answer, but I've found that I'm now in a position where the organization I work for is interested in using and contributing to open source projects, where I'm able to balance the more tedious work with working on code that I enjoy, where I'm finally working on larger scale projects that stretch my mind and add to my understanding of the real techniques and beauty of programming. It helps that it is a small organization that is growing fairly quickly, with good resources.
I've also found that I'm able to work on my home computer doing more sysadmin-type stuff on my off hours--I don't always have the energy or time to work on real projects, but I feel like I get enough out of my day-to-day that I don't mind, and I get enough satisfaction out of my current project (setting up my Gentoo linux box as a personal sound studio...don't mean to be a Gentoo proselytizer, just what I'm having fun with right now).
So I guess the moral of the story is: it's not inconceivable that you can find an organization that will let you stretch yourself in the direction you want to move--unless you have a philosophical objection to this.
Agreed. This has worked quite well for me. Do consulting contracts that are challenging enough to be both interesting in themselves, and high paying. Work your butt off, and don't spend any money you don't have to (I drove one used $3000 Toyota truck for 10 years). Then when you have enough of a buffer saved up (shouldn't take long!), take a few months or years off to work on your own hobbies. Next thing you know, someone will be wanting to hire you to apply your "hobbies" to their problem, so during those few months a year you do have to work, it will be on something you really enjoy. I've spent the last year just working on my own (programming and more recently robotics) projects, while living in Sweden, Tahoe, and now New Zealand. And my point is not "oh look how studly I am" but quite the opposite -- look how easy it is. My annual budget is about US$15,000, including rent, travel, toys, and food. (It helps that I don't drink, and also that I don't have to drive to "work" every day.) How much consulting do you have to do a year to earn that? Don't forget that if that's *all* you earn, you pay very little taxes. Part of the trick here is to live and earn light, where it's tax-efficient, and then eventually to leap-frog the horrible middle-ground where all your time goes to taxes and living expenses. If you spent six to eight months a year working on your own hobbies, how many years before you had something you could turn into a business of your own? This cycle has worked for me for about 18 years now. It took me a couple years consulting full time to kick it off (get my skills and savings up to snuff), and it's been less and less work and more and more "play" ever since. And even those first two years were fun stuff, since it's easier to find a fun short contract than a fun full-time job. In short, my answer is: don't try to divide the hours of your day into work and play, because as you imply you just can't occupy your brain with all that stuff in one day. Instead, divide the years or months of your life into work and play. It's no harder--it just takes the discipline not to spend the money you're building up.
Do you WANT to only do one thing, day and night? Few people do. When I had a non-programming job I programmed at night for fun on my own projects. Then I got a programming job and like it a lot, but I can't do the same thing day and night, so I try to do stand-up things when I get home: running, stretching, juggling, gardening, playing the saxophone. I spend a little time surfing the net, as I'm doing now, but nothing should totally dominate your life, so don't be upset that you can't be one-sided. If your personal projects are SO great that you can't leave them, maybe you can interest your boss in it so that you can work on it at work, or start your own company and develop it.
I'm almost getting to the point, though, where I come home and just don't want to look at a keyboard or monitor, regardless of whether it's just email & games or personal programming. Then it really doesn't matter.
DT
Is this thing on? Hello?
I had the opposite experience.
When I'm woking as a coder, I find that it's easy to constantly turn the problem over in my mind so that I have no problem getting up in the middle of the night and finishing something. Most of my most productive sessions have happened outside the office.
Whereas when I had a sys admin job early on in university, there was so much running around and fighting with other people's bugs that I didn't want to look at a computer by the time I got home.
It also completely drained me by the end of the day. For things with very few moving parts, computers fail a lot. It goes in cycles but at times, there's so much to do that your constantly running around and actively prioritizing several tasks as they come up. My admin job was probably more difficult than most however. I was supporting a mishmash of unix/linux systems and the users were very technical. I usually only had to deal with weird problems that they had given up on.
The few Windows systems we did have for the office people required constant babying but it wasn't really high impact. I could see how it would be more relaxing. Due to the occasional virus scramble and the inability to easily ssh into a Windows machine or whip up few scripts, you get a lot of time to reflect on just badly NT5.x handles its dumb self while watching progress bars crawl across the screen.
Really, how much time can you spend on working on your own projects when you are already spending 40-50hrs a week on someone else's projects?
I would say not too much more! Besides I find that at the end of the day I can continue with a stream of thought and keep pushing it through, but find it difficult to start new things.
For me at least, I find there are 2 options:
1. Align what you love doing and your work. This can be difficult when working on someone else's project. What you want is to get paid for working on your own project.
2. Work part time. This could be done with a part time job 2-3 days a week or by working 3-6mth stints and taking the rest of the year off. Then spend your own time doing what you love.
You might want to consider other life activities (friends, partner, TV, movies, fishing etc) outside of the significant amount of time you are already putting into work (be it what you love or what you do to put food in your mouth).
More directly to your question, note that as a schedule-C filer, you can put about 15% of your annual income tax free into an SEP IRA. Also check out HSAs (health savings accounts). Etc. Lots of options open -- better than relying on your company's poorly invested 401K or (laugh) Social Security.
Bottom line is freelance is no different than salaried work this way, except that you are more directly responsible for setting the money aside.
Interesting approach, it sounds like you've worked out that the key is to spend time doing what you enjoy - everything else is just a chore to get there. I took the other route (they sound fairly equivilent) which was to take a wage drop to do what I wanted to do full time. It's three years on, and it only took a year or so to figure out how much stuff I actually *needed* and what was just fluff. The fluff is gone, and that 'low-paying' job leaves me with more than enough cash every month. I see so many people working their asses off doing jobs that they hate ... so that they can drive a flashier car, drink their weekends away and buy trinkets to help them not notice. The major difference is that rather than work part-time to fund myself, I just found someone willing to pay me for what I wanted to do. Research is probably one of the most rewarding jobs that there is. The only downside is the lack of time off - it can be a bit demanding when you do your work as much in your dreams as you do while awake. Perhaps I've become a bit spoiled by doing this, but dividing up my time into work and play sounds harsh no matter what the size of the division. Of course if work=play then you don't have to worry about finding creative energy in the evenings because you've spent your whole day working on your own projects. I think that Hardy had the right idea when he said that no matter how good you are, there are only four creative hours in a day. The rest should be spent supporting your ability to use those four hours.
Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
I am not sure what it is that I am supposed to be doing at work.
All day I read Slashdot and wish I had time for my personal projects.
Seriously, though, I have a desire to see our company adopt real development processes. Direct attack didn't work. So I took the project assigned to me and completed it using new tools and techniques. Therefore it is fun.
Um...sell your soul? I assume you're one of the hardcore nerds who want to stay locked in the code-factory forever, and never increase their skillset or even their pay beyond cost-of-living increases? What is this stigma against management? Sure, a lot of them seem to be useless. That's a great reason for smart people to try to get into management. If you have good ideas, you can get much more accomplished by guiding others through the overall plan while they take care of the grunt work.
It'll burn you out on life? Where do you get that idea? How many managers do you know that don't want to do anything but eat dinner and sleep after going home? Most managers I know are active during their off hours because they don't have extremely tedious work. If you develop your people skills enough, managing isn't even that much stress. Also, where are you getting this "quiet desperation" crap? You think merely throwing a random quote at something makes it relevant? Unless a manager is truly incompetent, I don't know one who is quietly desperate about the easier hours, the bigger house and bank account, and improved lifestyle for their family.
The simple answer is in the subject line. If you do something that's too much like work, it will seem like work. Even if what you do is explore ideas that occurred to you in the context of work (e.g. infrastructures/algorithms that were deferred until a future release) it's probably going to seem like work. What you need to do is something completely different. For example, my work involves the confluence of kernel programming, distributed systems, and storage. The important parts are all written in C/C++. So what do I do on my own time? I hack on the code that runs my website (in PHP) or a backup/synchronization tool (in Python) or play around with automatic code rewriting (Python again, though it's manipulating C parse trees). Sometimes there's a bit of overlap, but for the most part the programming I do on my own time has a completely different "flavor" than what I do at work. That, plus a recognition that my personal projects will need to be suspended and resumed as higher priorities (work, family life, etc.) intervene, helps keep me happy with programming both at work and at home.
Slashdot - News for Herds. Stuff that Splatters.
After work, I spend my time on non-computer hobbies and other things I enjoy (skiing, mountain biking, off-roading, movies, music,home theather, cars, friends, dating, travel, etc). It's important to have a life outside of the biz, IMHO. I do read some each week and experiment with personal programming projects to stay current. Currently, I do design/architecture and some Java coding at work (50-60 hr work weeks) in a corporate setting. I'm not sure what I'm going to do long-term in the industry--I've been doing Java since '96 and C/C++ in grad school before that--maybe get back into contracting. I don't really desire to go into management, but I do enjoy the six-figure salary I've got now and wouldn't want to give that up.
When you hit the real world of programming jobs, you'll spend LOTS of time reading other people's code. Remarks and comments are where you can talk to those who will read that code after you. Any code I write that's more than 10 lines long MUST make others at least crack a smile; I generally go for a full LOL. Variable names are a prime target - fill a variable named phlegm, format it into one named goober with a call to cough(), then spit it out to the printer. With proper names you can write a line like: Open (the_pod_bay, doors, hal) else print Im_sorry_Dave_Im_afraid_I_cant_do_that; filling the dave variable with a real message for the end user, but giving the programmer who reads it a good chuckle. The source code may be a bit bigger, but the compiled version will be just as small and fast. This seriously improves the work environment and I think it contributes to productivity - you want to read eachother's code.