views:

720

answers:

17

I'm a Java/J2ee programmer working in India. I'm very passionate about programming and I constantly strive to hone my programming skills by reading blogs, solving Project euler questions, learning new technologies, developing small apps etc;. But I find it very difficult to manage my time. Working for 12 hrs a day in office leaves me stressed out and spend my weekends with my family. So i hardly have like 5-6 hrs per week to actually work on something of my interest which will help me improve.

How do you manage time so that you find time to improve your current standing?

EDIT: 12 hours includes 1hour of travel & 1 hr of break(lunch/coffee). Effectively I work for 10 hours per day in office which is mandated by my organization.

-Snehal

+6  A: 

I think you could learn more by having a pet project that you really like. That way you can work on it in your spare time and yet have fun. Its also a great place to apply those new technologies that you otherwise dont get an opportunity to apply elsewhere.

Also it helps to think about something else and forget about programming totally for sometime, like learning to cook or gardening etc. It kinda refreshes the mind and next time you start programming you got a fresh brain to hack around with. :)

As for time, well an hour each day is generally good enough.

Sujoy
+11  A: 

If you spend that much time at work, in my opinion, the remainder of that time you should spend with your family and friends, doing the things you like to do.

I would expect 12 hours at work to enhance my skills, but not everybody is blessed with a job that is on the cutting edge of technology, and it is understood that some programmers dwell in old technology or methods, leaving them no room to advance themselves.

So the question becomes "How do I advance my skills given a minimal amount of time?". The answer being maximize your effort on things that bring you real value.

  • Reading blogs is nice, many of them tell good stories. But do you get good technological value from them?
  • SO is a great resource, but don't spend too much time on it if you find it is a time waster.
  • etc...

I would try to get more out of my workplace. For example, try to initiate technological trainings at your workplace. Suggest to your superior that you research a new and interesting technology, which can be related to your field, spend a few hours on it, and give a talk about it to your colleagues - to the benefit of everyone.

Yuval A
A: 

Working for 12 hrs a day in office leaves me stressed out

???

Don't work so long. That's a stupid number of hours for a non-personal pursuit. Especially if it doesn't include time for expanding your skills.

If you're constantly trying to work 60 hour weeks, your life, health, and overall productivity will suffer.

If the company requires/allows these hours on a regular basis, look for a better company.


When you're healthy, your productivity can improve drastically - whether you're learning new things, or simply applying what you learn - so try the following:

  • Don't constantly sit at your desk, take breaks when needed, and especially have a proper lunch break (go outside and get some air!)
  • Get plenty of exercise - at the least, try two good walks a day.
  • Eat a good, regular diet.
Peter Boughton
Peter, you should remember that not all cultures are the same, and in many places (India, for example) these long working hours are more or less average.
Yuval A
I'd argue culture is irrelevant - unless the human body is physically different in those places, then spending 50% of your life working in an office is not good for you!
Peter Boughton
I wouldn't say it's culture, but capitalism. I think it's easy to say "don't work 60 hours/week", but hardly done (especially if you want to keep your position in a well-paid field).
J S
I totally agree that 12 hours/day working takes it's toll on an human body. I'm just saying that in many places, people have no other option.
Yuval A
Well, if there is no other option, create one. If enough people can get together and reject unrealistic demands, it might start to make a difference. (Possibly idealistic, but twelve hour days is just dumb.)
Peter Boughton
People may have an option, or they may not, and telling somebody with a family to support to gamble their livelihood on the offchance that something better will come along is unhelpful.
David Sykes
In countries where labor is easy to acquire (e.g. China, India), you either work long hours or your employer will find someone else who is willing to do so. It doesn't matter how "dumb" it is, when it comes down to it, people will do what it takes to put food on the table and take care of their families. Changing supply/demand and the cultural norms of a country is not something that is easily done.
Kevin Pang
+1  A: 

In each work-related projects, I often use to try some new ideas. I do that only in little amounts, in order to reduce the likelihood to completely fail at a project... For instance, on a number crunching project, I played with the SSE instruction set. Or I try a few funny tricks with templates here and there (I'm a C++ guy), always in little amounts.

Monkey
A: 

We are craftsmen and as such, as we partake our craft, whether for personal or professional use, we should be improving it and honing our skills daily. It's not as if you're tied to a language such as VB6 where I can understand it would be hard. Java/J2EE should provide abundant opportunities for improvement. If the platform itself is getting you down, there is no reason why you can't spike some code or algo in Groovy/Ruby/Lisp/ECMAScript and then implement in Java for example.

I don't know of any decent 'boss' that would turn down a request for his staff to expend a little time here or there for personal improvement. If you're in such a situation, you need to change the situation.

When I was young and single, I often worked 100 hour weeks because I loved what I was doing. If you're being pressured to work 12 hour days and not enjoying it, not achieving any personal accomplishments, then you are not being 12 hours productive. You'd be better to spend 2 hours playing twice a day and 6 hours producing what you're asked for. You'll probably find, over a 2 week period, that you'll produce more.

In the end it comes down to personal time management. You're responsible for your life and for your family. If, at the end of this job, you're unhirable because your skills are out of date or not up to scratch, then you've not taken your responsibilities to heart, only focused on the short term problems.

wentbackward
A: 

Whenever I want to learn something new ( a new framework, a new toolset, whatever), I usually bring it up during a talk with the customer.

I tell him, that investigating this venue could potentially save him big bucks in the end, and he usually agrees to a modest set of hours to be spent (say, 20 hours).

Some times I'm right, other times, not so much. But I still get 20 hours to play with my new toy.

Soraz
A: 

In the order of importance: 1. Start looking for a job that requires not more than 10 hr a day 2. Join an open source project and become a contributor there - you'll learn faster 3. Tell to your boss about Google that allows their employees spend 20% of time working on other projects. I'm sure you constantly stay in the office for 12 hours not because you are always behind on your projects, but because of the "culture" in your group, which is usually a result of poor management.

Yakov Fain
+3  A: 

Working for 12 hours is a reality in many wealthier nations too. I wouldnt put this down to a culture thing.

I live in a country with one of the highest standards of living in the world. I create software for the resources industry. Within this industry a 12 hour work day is often standard regardless of whether you are a truck driver or a programmer. If you are working in a remote area is it common to work 8 (or up to 14) 12 hour days in a row before having a few days off at home.

It is totally counter productive and very unhealthy - I wouldnt recommend it to anyone. But yes, you can manage to still learn stuff. Here are my tips:

  • If you have a problem that you are unsure how to approach, read MSDN, blogs, stackoverflow etc and really try to get a grip on ways to solve your problem. Then try and implement a solution immediately. This is essential to reinforce your learning. If you leave the implementation till 8 hours later you are likely to have forgotten what you have learnt and you'll just end up wasting time.

  • If you dont have a particularly daunting problem you need to solve - try and figure out how to implement at least one part of your code in a more efficient or elegant way. For instance, if you have a trivial task such as creating some code to consume a web service, perhaps look at how to load this web service dynamically.

  • Formulate your problem or question and post on Stackoverflow just before you leave work, This way when you arrive back at work you will hopefully have a number of responses to guide you with your challenge. Which brings me to my next point:

  • Do your learning in the morning whilst you are fresh and alert.

So here are the steps that work for me:

  1. find some small part of my code that I think can be improved in some way
  2. research it (30 minutes max)
  3. implement it immediately to gain the benefits of reinforcement learning

Now even though you may only learn what seems like a trivial amount, if you do this everyday your knowledge of programming will gradually increase and with it the complexity of the ideas you can tackle within 30 minutes.

I have found 30 minutes is a good window because it is generally small enough to avoid interruptions from phone calls or colleagues.

If I find that what I want to achieve involves more than 30 minutes research, generally I have to push it aside and look at it another time when I am unencumbered by work. Some concepts are difficult and cant be easily digested in your 30 minute lunch break. There's not much anyone can do about that.

Alex
+2  A: 

I find time by using Nike's trademark: Just Do It. You'll always find a time not to learn, but once you force yourself into that mode of learning, you'll want to keep doing it.

As for specific methods I use:

Viral: I follow people on Twitter whose interests match mine (namely programming), and I'll click on the links they supply about any given programming subject. I'll follow those links, and learn everything I can, and then I'll follow the links on those pages; all the way down until I either have an idea of what I don't know, and will search for that specifically, or move on.

Step two is Doing it: I started a blog that details my efforts to put what I've learned to use. If you take the time to write something down, you codify it in long-term memory (no pun intended).

Then all I do is Rinse, Lather, and Repeat.

George Stocker
I like your blog! I've only read your last 8 or so posts but I like the diversity of topics and the deep meanings that you analyze. *adds to Google Reader*
Ricket
+1  A: 

Short answer: Join an open source project which interests you.

Deniz Dogan
+2  A: 

12 hours at work!? horrible bro!
I'm using a printer to print articles, and to read 'em when the dead time's running greedily to no avail!

Leszek Laszka
A: 

There is no shortcuts. If you want to be a professional in any sphere, you will work that much and more, and you will need years and years of hard work. Only what you can do in your situation is: try to be more effective in that 12 hours. Try to do parallel things. Use situations when you are waiting something: in transport, waiting for a bus, waiting for a doctor...

I have a few techniques of my own to share:

-I have two visual studios open, one is project that I am working and second is plane projects for experimenting new stuff, for example IronRuby or datastructures algorythms or anything that I didn't work on yet.

-I am reading in the toilet :) . For example instead of a reading blogpost on computer, I print out post and read it in toilet :)..and yeah, try not to spare too much time on internet, it is wasting of time if you compare how much time you spend on it and how much you have learned...try to maintain focus on net only on things THAT YOU NEED.

-In bus from home and back, I am listening podcasts: dotnetrocks, hanselminutes, alt.net podcast...

and I try to spend spare time to enjoy life, see my friends and family, go outside and be as much as I can, on the open air...there is no time anyway, why I should bother, I'm trying my best and that's it! :)

cheers

Marko
A: 

10 hours of work is not that uncommon in the U.S. (although technically you can't be made to work those hours as a salaried employee).

Normally I would say shorten your days, but you can't, of course. There was a study a few years ago that showed software companies with 35-hour weeks delivered as effectively as 45-hour shops (on CNET, but can't find it now). It's not surprising. We developers work in the Zone for only a few hours a day, and then you are just adding to your sleep deficit and burnout.

Having done this before, I can say that my primary advantage was the fact that the company I worked for aggressively used open-source technologies to save money, so I learned a LOT.

Frankly, I think, this is your best option - you have to find a way to experiment during your work hours on the projects you do during daytime. If you find yourself working with the same stuff every single day, you are right to be concerned. That's a career trap and you have to find a way to avoid it.

Bring this up with your management - absolutely do it. Claim that you are not exposed to new technologies enough. This cannot be held against you in a real company. That way, you will be the first on the list if there is a new project with technologies outside of your area of expertise.

Andrei Taranchenko
A: 

If you need more time, you should learn how to sleep less.

Explore polyphasic sleep, http://en.wikipedia.org/wiki/Polyphasic_sleep

A: 

12 Hours horrible? I work in an organization owned by the family and my workday is typically 14 hours.

Luckily I do my learning on the job... Sometimes when I am bored I just sit in my office and read SO, or a book, or blogs, or articles.

You won't find me complaining. I like the work I do, and it pays.

Cyril Gupta
+2  A: 

1hr travel - listen to software engineering podcasts.
1hr lunch break - eat at your desk while working on your pet project.

Find another project within your company or find a new company that would allow you to work on interesting stuff, so that 'work' becomes 'play'.

Choose a job you love, and you will never have to work a day in your life.

Aries McRae
I get two hours a day to listen to podcasts in my car, and though losing a commute would make me much better off I would *really* miss my podcast time.
David Sykes
A: 

I'd like to mention 43Folder's (10+2)+5. Its ostensibly a procrastination hack, but could be tailored for your use. Get a book, or an article, on your desk. Work for a bit, then read for a bit. It won't impact your work, but you can get a lot read

David Sykes