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.

First off, not my phrase: http://www.whattofix.com/blog/archives/2010/11/to-code-quickly.php Props to Mr. Markham.

BUT, it got me to thinking about a lot of questions I have seen about being able to get things done.

The approach advocated (setting a timer for a set period, in this case 50 minutes, but I've seen people talk about breaking procrastination by setting times as short as five minutes on tasks that you just cannot bring yourself to do, and then taking a short break) seems to be common sense, but lots of people advocate getting into the "zone" and staying there as long as possible, maybe many hours, rather than break their groove.

I keep trying different approaches and find that each has its own strengths and weaknesses.

What kind of technique do you use to be more EFFECTIVE (i.e., getting work done to the quality level demanded by your client / boss / etc. in the time frame allowed) in your software development and not just to spend more time at the keyboard?

share|improve this question
2  
I'd like to use this as an opportunity to plug another (proposed) SE site, Personal Productivity and Organization: area51.stackexchange.com/proposals/4296/… –  instanceofTom Nov 12 '10 at 16:14
    
Ooo - awesome - I've gone over and committed. Thanks! –  Todd Williamson Nov 12 '10 at 16:35
    
the proliferation of niche SE sites is getting to be borderline absurd. –  Kevin Jun 9 '12 at 14:13
add comment

4 Answers

up vote 14 down vote accepted

I use that technique daily. My timer is 45 minutes of work for 10 minutes of rest.

I also maximize the time on the computer to 4 hours per day. I understand this is not possible when your main task is coding. The rest of the time, I do any task that doesn't require a computer.

The tool I use is a WorkRave. The author wrote it because he started to have physical problems due to its inability to stop coding for long hours.

I'm less stressed and it affected positively my productivity.

Since a few weeks, I also try some mindfulness techniques during the pause times. Delicious.

Now regarding anti-procrastination techniques, I have one that beat everything I tried before:

I manage a single task list, prioritized by importance. I pick the first in the list.

I maintain the list (and calendar) with a combination of GTD and 7 Habits.

To enhance the list effectiveness, write your tasks as next actions instead of descriptions (see the chapter Actions, Contexts & Projects in this Blog Post)

share|improve this answer
1  
Can you give an example of a task written as action vs as a description? –  Anna Lear Nov 12 '10 at 15:07
    
Sure I added the reference to a more complete article in the answer. Here is the link again (it describe the whole GTD technique): zenhabits.net/the-getting-things-done-gtd-faq. –  user2567 Nov 12 '10 at 15:11
    
+1 for "next actions". –  EOL Nov 12 '10 at 16:09
add comment

Since coding is the problem at hand, in addition to the techniques mentioned by Pierre, I would suggest coding in a dynamic language, if at all possible (Python is a delight to work with, for instance): such languages allow you to be extremely productive (measured coding times show an improvement factor of 2 to 10, compared to C). They're so nice to work with that you might basically never "just spend time at your keyboard".

share|improve this answer
    
Why the downvotes? The answer above does address the question "What kind of technique do you use to be more EFFECTIVE (…) in your software development?". –  EOL Mar 17 '11 at 10:01
add comment

The key thing to remember here is that there is no "one size fits all" solution.

There are lots of techniques for improving your ability to "get things done" and one of the reasons is that different things work for different people.

Some people do very well with this sort of methodology (c.f. Pomodoro Technique) and some people will find it destroys their focus - I really don't like stopping in mid task and that's almost invariably what timer based systems do to me... conceptually good, implementation challenging (true of the majority of structured methodologies for time management and other things)

share|improve this answer
    
I'm just looking for lots of input. As you say there is no "one ring to rule them all" approach, but I'm interested to see how other people approach it. –  Todd Williamson Nov 12 '10 at 16:41
    
Oh absolutely - and I agree with the question (-: But the above is a point that needs to be made as people who have systems that work - for them - can get a bit enthused. –  Murph Nov 13 '10 at 12:01
    
I think this is a good point. What's more, I've found that some techniques work better or worse for me depending on my mood, what type of work I'm doing, etc. There are times when I have no trouble coming in to work and working productively all day without any system. Other times, I need something to keep me focused and on track. At times, when I've been going through a funk like that, I've found Pomodoro to work pretty well for me, though I would occasionally skip a break when I was on a roll. –  PeterAllenWebb Nov 16 '10 at 1:07
    
Tempted to downvote just because this doesn't really add a subjective opinion - it just states "it depends". This can be said of almost anything and be true for just about anything. –  Magnus Wolffelt Dec 11 '10 at 21:50
    
@Magnus can't argue with that particularly but equally the point has to be made. Too many people go hunting for the golden bullet. –  Murph Dec 12 '10 at 10:56
add comment

I'm unimpressed with that essay; he spent what, one day trying out his new method?

That said, Pomodoro & similar techniques seem to have a persistent niche popularity. Typically I try to sort my days into "focus days" and "misc days". Focus days I show up in slightly more relaxed clothing, maybe a bit earlier (or stay later). I don't have any meetings those days, so I can basically write my own schedule, which lets me focus better. On the other days, I have meetings, appointments, and so forth. I won't have the time to concentrate, so I try to schedule smaller and easier tasks to fill my time in.

One good way to increase productivity in coding is code generation of any boilerplate bits; refactoring anything that gets duplicated, etc.

share|improve this answer
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.