Take the 2-minute tour ×

I am a programmer, or could be called so because with my laziness with programming I am more often doing half a job and then start gaming. The other half I do tomorrow, next week or next month.

What would you do if you are a programmer, but you cannot get rid of your laziness to do programming. You want to finish the things as soon as possible, but the thing is you would not take immediate action and keeping delay the job (because you are too lazy to continue again). Any advice is welcome, even crazy advice.

share|improve this question
Welcome to Personal Productivity. I've taken the liberty to rewrite your question. Could you please check if I kept the meaning. Also there are several other similar questions already on this site, you might want to check the questions and answers tagged 'procrastination', they contain good tips as well. –  THelper Apr 3 at 9:11
I doubt that this question will even get answered. Sometimes, I just go SO and answer some question just cuz I'm lazy to think about my programming tasks. –  Joraid Apr 5 at 15:22
Do you have a boss? Doesn't he keep track of your work? –  MerlinMags Apr 8 at 7:31
First you have to determine whether your laziness is physiological or psychological. That's a big difference, so it's impossible to give the correct answer. I would say it's physiological; since you're asking this question. –  Tool Jun 10 at 22:52

11 Answers 11

The short answer: Just efing do it. Force yourself if you must.

The long answer:

If you are a professional programmer, consult your project manager with this. Tell him that you are having trouble with your productivity and talk to him about helping you divide your work into small tasks, which you will commit on a daily basis.

If you are a hobbyist / student, then things get a bit more complicated. I'd suggest you try the same thing: break into small tasks and check some of them out daily (since most people lose motivation when they don't feel progress. However without the "higher authority" to help you out things will be much harder.

Another way is to code only small things which you can do in one coding session and try to extend the time of your coding sessions by a bit every few weeks.

share|improve this answer

I suggest two things:

(Generalizing on Bloodcounts answer) Use external structures that force or remind you.
There are tons of those you can think of:

  • A list of (smaller) tasks and milestones, clearly visible ( It helps to plan 'back from the future': In order to accomplish C on day Z, I need to complete B on day Y, and for that I need to complete A on day X.)
  • Maybe have those task coupled to dates
  • Make agreements with someone else about what you are going to do. Even just telling your relations what you're going to will have them act as reminders "Hey, how's X going?"
  • Assign yourself rewards when task X is done
  • Block time in your agenda do do it and stick to those times. Use an alarm.
  • ...

Investigate your motivation

Be brutally honest with yourself (no excuses, or if you catch yourself making excuses, why do you use that excuse?). This goes two ways:

  • Why do you want to build the programme?
  • Why don't you finish the programme?

It may help do do this inquiry with someone who you trust. The goal of that conversation is not to find solutions, just to get your motives clear. No judgments or helpful suggestions from your conversation partner, just questions and mirroring your answers.

For more details see also my answers at How to make a one-year study plan for a difficult exam and remain motivated throughout? and How do you abandon a task that isn't worthwhile? and How to set goals when studying?

share|improve this answer
+1 for the nice links. –  Bloodcount Jun 14 at 8:31

First, change your language.

You are not lazy; you are unmotivated. There is a world of difference.

If you define yourself as "lazy" you're assuming the problem is a character flaw, and that implies that it will be difficult to fix underlying issue. This will lead to further lack of interest in fixing things (You also invite comments like "just * do it", which I find discouraging. If it were that easy, I'd be doing it already!).

If you define yourself as "unmotivated" you see the problem as external, and you position yourself to tackle the causes of your lack of motivation.

Second, take steps to change your motivation.

There are 3 areas you can address:

  1. The why: understand why your job really matters (and if it doesn't, change jobs).
  2. The how: understand what it takes to be a success in your job.
  3. The where: change your environment to make it easier / more pleasant to do your job.

So, if you write software that improves patient care in a hospital (the why) then meditate on how good it feels to contribute to the quality of life of others. Focusing on the feeling is important, as feelings have a very big influence on what we actually do.

Ask your colleges / boss what makes the difference between a good programmer in your company and a great one, and focus on the things that will make you great (the what). Nothing is more demotivating that having little idea of what you're actually trying to achieve in a job.

Change your working practices / tool set etc. for ones that you enjoy using, and which foster productivity. Personally, I find broadly agile approaches a lot more rewarding than ad-hoc or traditional programming methods.

Third, consider these two specific suggestions:

You mentioned that you like games. Perhaps you can use this to stimulate your working life?

  1. Get rid of your games. Sell your consoles, delete your desktop games, block your access to online games etc.

  2. Gamify your work. Make a game out of making progress on your real work. Create a system of points, awards, prizes etc. for various tasks. Enrol others to play along. Add a great music track. Make your working life fun.

share|improve this answer
Nooooo not the games.. the games are sacred.. without games programmers cease to exist. –  Sarmen B. Jul 10 at 23:56


How about trying Functional/Modular Programming?

Programs written in a functional style often consist of functions that take other functions as input. This is a key feature of FP languages because it makes it very easy to build modular programs. The result is that software written in FP languages tend to be very concise.

From: http://en.wikibooks.org/wiki/Computer_Programming/Functional_programming

Each module (which can contain a number of separate processes) works independently from another module...

When creating a modular system, instead of creating a monolithic application (where the smallest component is the whole), several smaller modules are built (and usually compiled) separately so that, when composed together, they construct the executable application program...


From: http://en.wikipedia.org/wiki/Modular_programming#Key_aspects

Okay, the point here is that if you break your whole program in small functions, all you'll have to do would be to complete those small functions -- not the whole damned project.

You can allocate 5 functions per day as a starting target. See, there are only 5 functions that too only small ones! Complete 2 in the morning, 1 at the lunch time, 2 in the evening -- and you are free of guilt!

With these 5 functions there will be some part of the project that you've done today and because it is in the form of small functions you'll know what exact part of the project has been completed today.

Before going to bed, make another list of small 5 functions for tomorrow so that when tomorrow comes, you won't have to spend time thinking - what am I supposed to do now :(

Now, I hope you understand that I am n-o-t advocating functional programming, and I also hope that you've got my point.

share|improve this answer

There are some good answers here. I believe that JFDI is the proper answer. I'll cover those which others have missed:

Take care of yourself. Programming requires high willpower. If you're tired, hungry, or lonely, you're expending much of your willpower on those things and won't be focused. The biggest mistake many programmers make is forgoing lack of sleep to do something.

Stay motivated. This is something which only you can do. Meditate, learn why you're doing something. Imagine yourself finishing the task and the kind of glory you'll get from finishing it. If you're stuck in a development hell project, try to avoid or fix it somehow.

Break things down into lists. Most of the time, things are hard because we don't know where to start. Many goals are too big - "build a forum" or "create a database that supports 10000 people". If that's your situation, break your goals down into smaller goals. Keep asking yourself "How can I do this?" until the items on your list is small enough to say "I can try that." This requires a lot of discipline and practice, but is a vital skill to know if you want a career in programming. Many schools teach this in the form of pseudocode and flowcharts, but you'll have to practice breaking things down into smaller parts.

share|improve this answer
  1. First of all try to figure out what is holding you back. It can be that you are not getting proper recognition for the work you do, the task assigned to you is so huge that you are getting overwhelmed or simply you are not comfortable with the programming language or the project team you work with. what ever be the case, try to identify what is holding you back.

  2. Take step by step actions to resolve it. For example, if the task assigned to is beyond your scope, discuss the issue with the project manager. Ask him to split the task in to smaller modules so that it is easy for you to track your progress and stay motivated.

  3. Set short term and long term career goals. When there is no proper direction, your mind may wander and end up doing low priority tasks. When ever you do some thing, remember that any thing that doesn't move you closer to your goals moves you away from it.

  4. Go for that extra mile. Do a little more than what you can. when you feel like stop coding, continue coding for ten more minutes.
    Gradually increase it to 15, 20, 30 minutes etc.

  5. Stay Focused. Keep your workspace organized. Remove all the distractions that may steal your focus. Uninstall computer games, block social networking sites and other unwanted applications from your computer, so that the temptation to procrastinate can be minimized.
  6. Coding needs a lot of patience, will power and hard work. So hold your temptations and try hard not to procrastinate. Also try developing some personal applications that will be useful to someone or at-least to you. Try refactoring it and make it more better each day.
share|improve this answer

Build more dynamic code. Im a lazy programmer as well, but I use my laziness as an advantage to create code libraries that can help me do my job faster. Then you can have all the time in the world for video games :-).

share|improve this answer

We reason with ourselves to decide if we should do things or not. It is easy to find a reason not to work; it's too difficult, you'll do it later, you don't know where to get started, etc.

We are quick to reason why we should do easy tasks and why we shouldn't do difficult tasks. I challenge you to reason why you should finish your programs, and why you shouldn't waste valuable time playing video games.

When I find myself playing a video game for longer than an hour, I ask myself, "How is this helping me achieve my goals? How is this furthering my knowledge as a programmer? " Of course, the answer is always "it's not," which ends up being enough motivation to turn the gaming console off and focus on work.

This is an approach at developing your extrinsic motivation.

share|improve this answer

This is not The Answer, but this can be useful for you.

I have the same problem and here is my experience. What I tried:

  1. Force myself to do it.

    • Well, I just told myself that I must and did it.
    • Worked for some time, but this requires some inner resource. Ones the resource is finished I couldn't force myself anymore to do anything (not only work).
    • I can recommend this way, but in very moderate amount. Be careful, you always need to have additional sources of either self-support (like: good achievements in other professional or private areas) or support from your family.
  2. Find something interesting in my work.

    • For example, I like logic and clearness, so I tried to develop the code, which looks clean and beautiful to me. Also I like to usedifferent convenient tools, so I started to learn new editors, profilers, VCS.
    • This failed after some time. The concentration on my interest was not practical, ones I faced a dead line I needed to brake everything what I did before.
    • I would recommend to try this way. But, as you see, it is not always easy to combine interesting and practical. One needs patience and time to find such appropriate interests.
  3. Find the reason why I do not want to work.

    • One more or less obvious reasons was that I do not see clear result of my work, so I fill that whatever I do it has no influence on the "greater good".
    • This works, but depends a lot on the boss attitude. For myself, I started to use VCS actively, they allowed me to fill at least that my work is fixed, won't be lost and can be used in the future.
    • I would recommend this way as much as possible, try to find the reason why your work is usefull. This will give you additional self-support to make item 1.
  4. Went on psychotherapy to find the inner reasons for my behaviour.

    • I consulted with my friends, which have experience with therapist, and found nice professional gestalt therapist.
    • I see small progress now. I can't work as much as I would like to, but I can go to the working place everyday and do the most important things.
    • I would defenetly recomend this way. It needs a lot of patience, because you will not see the real problem and change in few months, but it gives the highest probability to get stable result. Also it will give a positive influence in other areas of your life.
share|improve this answer

(Hope you will get into it and read it to the end;) )

Let's get into situation. You turn on your computer, two things come to your mind:
1) Lets play
2) Lets write program
And at start they come with almost equal "want-points" ;)

Then "Lets Play" wins, you start a game and play till night, then look at the clock, it's about 2:00 PM and you go to sleep. Have you felt this? Most probably - yess :)

And lets talk about the other case: you turn on PC, but you are burning with good ideas about your program, your games have no power here, you start writing your program with a great pleasure, go deep into it and probably write till night (if nothing/nobody stops you), and you go to sleep with that greattt feeling (I know you know it ;) )

Now lets find the answer. Read the 5th line and stop here. That's the main point!
What if I say "No, I will not play now"? You feel a little weird moment, few seconds of bad mood, but when you start writing your program, it gets easy. You forget about games, go deep and start feeling that great pleasure again. Yes, and you want to write till dark night :) Or after that enjoyable hardcore work you want to play your game. Start your game now, enjoy playing. Go to sleep and you feel very satisfied with combo feelings :) That's it! And don't forget about eating, drinking, sleeping, talking.

Read this part if you are looking for combos.

NOTE 1: You are writing program, but you get interrupted because of some noise or something else - that's the worst thing. Try to write program in a place where nothing disturbs you. You'll get Concentration combo ;)

NOTE 2: Yes, it sounds strange but writing code on paper makes your code more clear and bug-free.

NOTE 3: Think about your program, and even write it in your mind (when you are on bus, before or after sleeping, and so on). This will give you Motivation combo and great ideas.

P.S. the answer is written in gamer-style, don't blame me ;)
Hope this helped you a lot!

share|improve this answer

Here is what I do:

  • I use one of the calendar templates. Everytime I code I mark that day on the calendar and then make sure that the sequence of marked days would never disconnect.

enter image description here


  • Just Open the damn IDE.

  • Start with editing until I feel fine with doing some programming

share|improve this answer

Your Answer


