Sometimes I go for what I find interesting instead of what is considered important. Having this attitude has been educational and it has let me produce work that I'm exceptionally proud of but it has also made me miss deadlines and disappoint people.

Sometimes I think that I do this because I don't want to break my curiosity. I'm afraid that if I ignore it I may gradually lose it.

Do you have any advice?

Meta: How can I make this a community wiki?

  • 3
    Not "really" a programming question? – Joseph Weissman Feb 12 '11 at 17:00
  • 2
    Not "really" a question, either? – Matten Feb 12 '11 at 17:02
  • how do you have almost 2000 rep and ask a question like this? – Scott M. Feb 12 '11 at 17:05
  • 5
    @Emanuil That sounds like poor work ethic, honestly. – Adam Lear Feb 12 '11 at 17:55
  • 4
    Well, it's good to see you value your personal development over your fiscal career; seems to me that you need a better job, one that you like doing. – Orbling Feb 12 '11 at 18:57

Working on a personal project at work instead of doing the actual work you're paid to do is pretty much always a bad idea. That said, I do understand the temptation of following up on an interesting problem instead of doing something more mundane for 8 hours.

Amokrane already pointed you to the GTD techniques, and I'd like to add that you can try a combination of approaches to find one that works for you. Here are a few more things for you to try:

  • Website blockers (such as the StayFocusd Chrome extension) that will stop you from spending too much time on websites unrelated to your work.
  • Todo lists either on paper or on the computer. I find paper works best for me, since it's a tangible object on my desk that's always in front of me, but YMMV. Make sure tasks are small and specific, so they're easy to accomplish. If you just put "create a website for client X" on your list, it won't help you any.
  • Daily status meetings. You can advocate those for your team if you don't have them. They'll be beneficial in general, but specifically for you, they will help keep you accountable since you can't really say "I did absolutely nothing yesterday".
  • Time-boxing. Get a timer (either a physical one or an application. I like FocusBooster) and promise yourself that you will keep working until the timer goes off, at which point you can take a short break.
  • Pomodoro Technique. This is a system whose goal is to keep you focused on your tasks while managing distractions (both internal, coming from you, and external, coming from others around you).
| improve this answer | |
  • I'd like to ask you a follow up question if I may. Why do we tend to get distracted at the first place? All that happens in our minds should happen for a reason and I wonder what would be the reason behind our desire to distract ourselves. – Emanuil Rusev Feb 12 '11 at 22:19
  • @Emanuil I don't think I can really answer that. I'm not a psychologist. :) My guess is that it's easier to be distracted when you're doing something that you don't want to be doing (for whatever reason). So the key may be to identify what you want to do and try to find a job that's as close to that as possible and/or just practice being disciplined and deliberate in what you are doing at a given time. – Adam Lear Feb 12 '11 at 22:30
  • @Emanuil No problem. Hope it helps! – Adam Lear Feb 13 '11 at 0:58
  • Useful techniques but I'm pretty sure they treat the symptoms rather than the root cause. – Nobody Feb 14 '11 at 12:30

I think that this problem will grow more and more within our profession.

The era of code-monkeys is over. Today software development has not been easier. We have a huge amount of productive tools out there to make our day to day work much easier.

Developers, or programmers (architects, technical-lead, senior ..., gurus or Computer Surgeons) should be innovative and up to date with the latest technology. To be that, one must explore and learn new things constantly. For a short period in most peoples life, that can be done during evenings and late nights, but sooner or later you will neen all your spare time for other duties,

The very often quoted 10:1 myth regarding developer productivity clearly states that there is a hidden capacity reserve among everyone working with software development.

So if a 25% increase in productivity could be achieved (1:10 is 1000% between low and high), that increase would easily compensate for the 20% time lost by spending time on pet-projects or other stimulating and encouraging activities.

What I mean is that the Google 20% is not just a nice thing to brag about, it's more than that, it is a true recognition that the most creative and innovative employees require that. Even in workplaces where 20% time is not provided, people still spend 20% or more time doing stuff not work to real work.

It's the oldest trick in the book, even Leisure Suit Larry had a "Boss key", the Boss key today is called Alt-Tab, or write your SO answer in Emacs inside a javadoc comment and paste it in during a calm moment (if you happen to work in a real coding slave dungeon where you are constantly being watched).

So try to convince your employer that they allow you to spend 20% of your time on whatever you want (related to your profession as a software developer), as long as the other 80% keep you focused on doing what's expected of you to earn your pay check.

| improve this answer | |

I think you are obviously using a 'defense mechanism' (rationalization to be specific) to hide behind the fact that you are just failing at getting important things done! What you should do instead is to re-think how you work! There are many resources that can help you with that, like: 43folders. Start by reading the howto page, there are many situations that look like what you are going through!

Anyway GTD (Getting Things Done) is the key!

| improve this answer | |
  • Thanks for sharing your thoughts! I'll look into the links. – Emanuil Rusev Feb 12 '11 at 17:17

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