Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I work as a full time developer. My workplace, however, is very limiting in the technologies and programming languages I can use. All of the work is done in C++.

It is clear that C++ is rapidly losing (or maybe already lost) its leading position. (please don't flame me, I have years and years of C++ experience, and I love this language, I am merely stating a fact). I have a few ideas for Java/Android projects as well as a project I would like to implement in C#. I see this as a way for me to stay current with the job market's trends and I hope that it will help me find my next job in a more up to date area.

So here's the problem:

My normal workday is 10-11 hours, after finishing with the kids and house chores I get about 1-2.5 hours before I am too tired to think, much less code. At that point I am going to bed frustrated, disappointed with myself for not being able to stick with my plans, and then I wake up the next morning to do it all again.

I have a few hours more during the weekends but clearly I would need to do something different if I want to reach any of my goals.

Is there any way for me to make better use of the time I have? Did any of you guys have a similar problem, and had successfully resolved it?

share|improve this question
18  
I may be daft, but sounds to me like you need a new job. Not that job security and comfort aren't nice, and side projects aren't ideal, but I feel like if you're going this far for a challenge, why not...actually go find a challenge? (or maybe I'm just fortunate enough to have a job that allows me to do what you're seeking on your own time...) –  Brad Christie Jun 22 '11 at 19:29
6  
One thing to check out is to what degree your current employer has (or at least thinks it has) ownership of your non-work Intellectual Property. Check any employment agreements you may have signed. When in doubt, take a lawyer to lunch and have them look at it for you. The closer your "personal coding" is to your work, the more important this becomes. –  Peter Rowell Jun 22 '11 at 19:31
1  
man, i totally relate to your experience, still working on it so no magic solutions to share with you yet –  lurscher Jun 22 '11 at 22:15
2  
@Sam: One thing I do is carry the books I'm learning from around with me. When I have a few spare moments at the store, or waiting for my daughter to get out of school, or whatever I read, make notes, etc. Sometimes if I am working on a project, I carry pen and paper too and draw out designs, plan things out, so when I sit down to code the thinking is done and I can get something productive done. –  Richard DesLonde Jun 22 '11 at 23:09
1  
So what are your goals? –  zvrba Jun 23 '11 at 7:51
show 1 more comment

10 Answers

up vote 37 down vote accepted

Biggest thing: DON'T. GET. FRUSTRATED. Hang in there. Do your best. Learn what you can. Steal every minute. Enjoy the process!

Second biggest thing: Think long-term. Think, "In a year from now, I want to have XYZ accomplished." When I look at what I've done over the past 6 months, I'm really impressed. But when I think about what I've gotten done tonight ... not so much.

I'm in a very similar situation. I have a full time job programming (PL/SQL, .NET, Javascript). Wife, two kids, house. I just finished a project -- trevorschinesereader.com. I started it last October. It's not the greatest ting in the world but I'm really proud of it. Now that I'm done with it I've started learning iPhone programming. It's a lot of fun, and for me, it's much more about the process than about the outcome. I love learning and love gaining new skills and love building things. I try to remember that when the frustration sets in.

There are a couple of things that help me:

I live close to work. 7 minute commute. Gives me more time.

I think on my way to work. Think about designing, about new features, etc. If nothing else, this keeps me excited and engaged with the projects I'm working on.

Design during lunch or when on conference calls. Just a piece of paper and pen gets a lot of good work done. Then you have something when you go back to "work" at night.

Code every day. Even just a little.

Don't ever get discouraged. EVER. EVER! Don't ever think that you're moving too slowly. That will only discourage you. Just. Keep. Going. No matter how small the progress you're making.

My kids go to bed around 8. I use from 8:00 to 11:00 or midnight to code. I can stay up that late b/c I don't have a long commute. Sucks being tired all the time, but for me it's worth it. Also, the wife is understanding and is ok going to bed alone. She is a saint for that.

At least friday or saturday night I stay up really late (3 or 4 AM). Then sleep in and take a nap the next day while the wife takes care of kids. I try to give her a nap on the other day.

One last thing: Spend time with your kids. I find myself getting frustrated with my kids on saturday because they want my ENTIRE attention for the ENTIRE day. But I want to be programming. I have to remember that they deserve my time and that them knowing their dad loves them is about a gazillion times more important than my little coding projects.

Its now 11:50 PM and my wife just woke up and is asking me when I'm coming to bed. Blast! I just wasted 15 minutes writing this post. Hope it was worth it! Good night.

share|improve this answer
3  
+1 thank you for this, I can't tell you how encouraging i found it tonight –  Joseph Weissman Jun 24 '11 at 3:16
2  
Going with the design during lunch or when on conference calls, always carry a small notebook and pen with you - you never know when inspiration will come calling; but you will realize how frustrating it is when you don't recall it later. –  Dylan Yaga Jun 24 '11 at 15:42
add comment

Get a new job. 10-11 hours in a job that's not fulfilling is crazy, and there is no way you could possibly fit any other activity in there, not if you have a family.

Either find a job that's more fulfilling (there's nothing wrong with C++ by the way); or find one where you don't work crazy hours all the time; or talk to your boss to downshift to a more healthy schedule.

share|improve this answer
16  
An 8-hour job can easily become 10-11 hours with a lunch hour and a significant commute. –  David Thornley Jun 22 '11 at 20:19
2  
@David, doesn't almost every 9-5 job include the lunch hour (or at least half-hour)? You don't add that time to the regular hours, it's built into the salary. Commute is another story of course - that's why a lot of people move to be closer to their places of work. –  Aaronaught Jun 23 '11 at 0:25
5  
If your job includes a 2 hour commute, drop the job and get one without the commute, even if it means a 10-20% drop in salary. It's the best decision you will ever make. –  blueberryfields Jun 23 '11 at 2:02
1  
@Aaronaught: I've worked in precisely one job where, for a while, it was eight hours from start to finish. Typically, the time I'm expected to be there is over eight hours. This is the Twin Cities area of Minnesota, so I can't say anything about other places. –  David Thornley Jun 23 '11 at 16:24
    
@blueberryfields: There are jobs worth that commute, but it is a decision that should be made carefully. It means sacrificing other things, and is ten hours out of a 168-hour week, or 114 hours of waking time. –  David Thornley Jun 23 '11 at 16:26
show 3 more comments

You'd be amazed how much you can get done if you don't watch TV...

Apart from that, what works for me is setting aside a specific time for a specific activity, and sticking to that schedule.

Example: I study taekwondo. Monday and Wednesday 730P-900P is for taekwondo, and I am diligent about attending. (We brought our son with us. He attended until he reached high school, and had other activities.)

Example: I am the rehearsal pianist for my choir. Weekdays 930P-1030P is for piano practice, and I am faithful to my schedule.

Less successful example: I'm trying to retrain in OpenGL. (The programmable pipeline was not around when I last used it.) Unfortunately, study is scheduled during the 1100P-1200A slot that I used to dedicate to leisure reading. If I have something interesting to read, studying tends to take a back seat. I need to dedicate this time solely to study, if I want to get serious.

I'm not rigid to my schedule, but I try never to slack off more than twice in a row -- otherwise, it's far too easy to slack off entirely.

share|improve this answer
add comment

First off, that you even have a desire to program outside of work is a good sign. It means you're in the right profession. To answer your question, yes, I most certainly have a similar "problem." But I think it is common, and frankly, a good thing.

My current strategy to overcome this is not a particularly good one: sleep less. Well, more accurately, I've been trying to capitalize on those moments of inspiration, no matter what time of night it is. We all know lightbulb-moments don't fall neatly into an 8am-5pm schedule; use that!

Daydream more. I waste far too much time attempting to implement something I haven't thoroughly thought out. If you can find the time to make a solid design, you're already a step ahead.

Other than that, just chisel away at it whenever you can find the time. Learning new technologies is extremely time consuming. Don't lose heart!

share|improve this answer
1  
+1 i love the daydreaming idea. Doesn't work well for my job but for little side projects its a must. –  James Khoury Jun 23 '11 at 3:45
add comment

A lot of businesses are starting to offer the option to work from home a portion of the time. I'm not suggesting doing your own work on company time, but if your commute takes up a chunk of potential productive time, this could be a way to get part of your day back.

To get your project off the ground fast, you can try outsourcing some of the grunt work with something like oDesk and then use the time that you do have to work on the more important aspects of your programs.

share|improve this answer
7  
it seems like the whole point of the projects themselves would be for him to get experience with those languages and environments - outsourcing a learning project seems like the opposite of what he needs. –  Ian Pugsley Jun 22 '11 at 19:16
add comment

Honestly, money isn't as important as time to me. Some people might not aggree, but I only work for companies that will take me on part-time so I have time to work on my own projects.

It's no use making money if you don't have an time left for your own life.

Then again, like @TomHarrigan said, you can often pay other people develop your projects for you for much less than you make at your job - if you can stand the way they write the code.

share|improve this answer
add comment

I have exactly the same problem. I have found a few ways that have worked for me to cope with this:

  1. avoid the problem altogether. I change jobs frequently (about once every 1 - 2 years). By doing so, I get exposure to a variety of technologies. I make sure to work for a startup at least once every few years. Startups are more likely to use newer technologies and will hire me even if I don't have a lot of experience in them, allowing me to be paid to keep my skills up to date. Established companies with a strong emphasis on research may work well too. Any potential temporary reduction in salary that may result from this is greatly outweighed by my increased competitiveness in the marketplace.

  2. outsource as much as possible in your life so you have more time to spend on coding. For example, I recently hired a maid. I pay her $100 for an 8-hour day and she comes twice a month. So for $200 a month I get two full extra days to myself, which comes to 24 days a year. More than an entire work-month for $2,400. Think about how much coding you can get done in one month. The cost of the maid is greatly outweighed by my increased competitiveness in the marketplace and potential revenue from personal projects. Plus, I am giving someone a job who may have otherwise been unemployed or under-employed.

  3. get an office. I recently moved into a two-bedroom apartment. I use one of the rooms as an office. I have noticed, and studies show, that it is easier to do an activity if the activity has a dedicated room. For example, it is shown to be bad for your sleep if you do work in your bedroom. Likewise, you will get a lot more work done, if you have a dedicated office that you only use for coding. The extra room costs me roughly $600 a month, or $7,200 a year. However, this amount is a tax write-off. As you may have guessed, the remaining cost is offset by my increased competitiveness in the marketplace and potential revenue from personal projects.

Those are the top three coping mechanisms that I use to deal with the very real problem that you described. Technology moves so fast that it is imperative to stay on top of the latest trends. Even a few months of unemployment would cost a lot more than the items that I listed above. I am also considering temporarily switching to part-time work in the future to have more time to spend on personal projects. Having a job that would allow temporarily switching to part-time and then back to full-time would be ideal for this.

share|improve this answer
add comment

I would suggest setting aside a few hours on one of your weekend days to dedicate towards a project of your choice. How many hours is up to you and your schedule.

Don't set aside anymore time than that. Setting aside more time will only make you feel demotivated if you don't make it, but if you DO have extra time you want to work on your project, you can do so and feel good about it.

Don't forget there's a lot of downtime when your mind isn't busy (commute to work, lunch breaks, doing chores, etc) when you can still be thinking about and planning your project. The block of time is mainly to give you a dedicated period in the week that you can put towards coding it.

share|improve this answer
    
Spending just 1 1/2 hours per week for a year = 78 hours on that task -- almost two average work weeks. –  tcrosley Jun 23 '11 at 12:55
add comment

I agree you should find another job first.

If you could get more extra time try to make a list consists of what you want to do. Whenever you have time pickup the one in the list randomly depends on your needs or feeling and then make it enthusiastically.

share|improve this answer
add comment

You might be able to steal some time during lunches too. Either reading or coding on a laptop or even the right netbook. I got a lot done during my sit-down time at mcdonalds. just don't do it where your employer can think he owns the code.

share|improve this answer
    
Lunch time coding can be very risky if the employer is edgy. He is doing this to get a new job, so any implication of impropriety could be a problem. –  Bill Leeper Jun 24 '11 at 15:58
1  
@Bill Leeper that's why I said, "just don't do it where your employer can think he owns the code." and made mention of McDonalds. –  Keng Jun 24 '11 at 17:53
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.