The Pomodoro Technique for Programming

Discussion in 'OT Technology' started by Peyomp, Dec 15, 2008.

  1. Peyomp

    Peyomp New Member

    Joined:
    Jan 11, 2002
    Messages:
    14,017
    Likes Received:
    0
    Lately at current gig have been working on some inherited code that is overly OO and complex - written by an architect astronaut (click me) - to the point that its quite challenging to work with, as you have to keep multiple classes/parent classes and their workings in your head at one time to accomplish very simple things that should just be a couple lines of code. I end up having to read 1000 lines of code to fix trivial bugs, and dissecting and over-riding method after method.

    And I've been burning out on the code quite fast, which leaves me pretty unproductive for long periods after the first hour or two.

    A few days ago a friend sent me this link: http://www.tecnicadelpomodoro.it/docs/francesco-cirillo/2007/ThePomodoroTechnique_v1-3.pdf

    I decided to try it. The core is this: you work in 25 minute uninterrupted chunks, with a mechanical kitchen timer. You only work on one thing at a time, in this case hacking on this code. You do not multitask while you work. So no post whoring every 10 minutes or anything like that. You utterly focus on a single task for the entire 25 minutes.

    Each time the timer goes off, you make yourself stop. You take a 5-10 minute break where you don't use your brain much, walk around, pee, get some water, etc. And then back to another 25 minute work session.

    Every 4 work periods, you take a half hour break.

    Been doing this, and am shocked at how much more productive I am. I often code in 8-12 hour marathons, and I get pretty frazzled at the end. This really helps coding stamina, MAKING yourself take the scheduled breaks, otherwise you're like, "Just one more thing" and pretty soon you've gone 3-4 hours without taking a break and your brain is fried need a long break just to be able to think worth a crap.

    This method kicks ass. You can code longer. You can code better.
     
  2. deusexaethera

    deusexaethera OT Supporter

    Joined:
    Jan 27, 2005
    Messages:
    19,712
    Likes Received:
    0
    Pacing yourself FTW.

    - - -

    Also, the title "architecture astronaut" was called in my school a "Software Scientist" as opposed to a "Software Engineer". The distinction is that Software Scientists spend as long as possible (their entire careers, sometimes) analysing the patterns and theories behind software development, whereas Software Engineers ultimately tie their designs to the concrete goals written out in the Requirements document. If a theory, no matter how elegant, doesn't fulfill one of the requirements, it's useless to an SE, whereas an SS lives to create theories. They are useful, because it's good to have a bunch of frames of reference to test-fit your application into -- but not if you forget that the application is more important in the real world than the theory is.

    As far as I can tell, the term Software Scientist isn't a widespread thing, but more of a derisive term coined by my professors who used to work at Bell Labs. It was based on Computer Scientist, obviously, with the difference that Computer Scientists (originally) developed theories regarding the mathematical principles governing the hardware's operation, instead of the software's operation, because back when CS first came on the scene it was a challenge just to get the hardware to do anything useful, and there really wasn't any complex software anyway.

    - - -

    I gotta take the guy to task about bashing XML, though. XML doesn't just make it easy to build node trees in memory and store them in files, it also makes it easy to tell what data isn't in the tree. I have a program that used to store settings data in a .INI file, but there was no way for the program to easily tell if the file was an older version that didn't include any new settings for each data node, so it could automagically update the settings. I used to deal with that by writing a .INI update utility to scan and update the .INI files every time I updated the main program. Eventually I got tired of this, and did some research to find a better solution; XML seemed like the easiest one. VB6 didn't have an XML parser, so I wrote my own, and it's been working flawlessly ever since. I don't have to worry about the data files at all anymore.

    - - -

    Wait a minute, this guy is bitching about marketing, not architecture. Those whitepapers never make it to press without getting passed around the PR Department, laughed at, revised, laughed at again, shredded, taped back together, hand-annotated, scanned, PDFed, commented, printed out, revised again, and translated from English to French to German to English again. Of course they make no sense.
     
    Last edited: Dec 15, 2008
  3. Peyomp

    Peyomp New Member

    Joined:
    Jan 11, 2002
    Messages:
    14,017
    Likes Received:
    0
    Why are you talking about Joel and not the Pomodoro technique? Get over your insecurities and try the technique. It really works.
     
  4. Peyomp

    Peyomp New Member

    Joined:
    Jan 11, 2002
    Messages:
    14,017
    Likes Received:
    0
    P.S. You know what the difference is between a "Software Scientist" and a "Software Engineer" is?

    A decade of experience dealing with the consequences of design decisions. Too bad you can't skip that.
     
  5. piratepenguin

    piratepenguin New Member

    Joined:
    Jun 18, 2006
    Messages:
    1,067
    Likes Received:
    0
    Location:
    Ireland
    Dunno if too many games programmers would get away with that in work. But I could be wrong.
     
  6. Peyomp

    Peyomp New Member

    Joined:
    Jan 11, 2002
    Messages:
    14,017
    Likes Received:
    0
    They should. It increases output. I got 5 people to try it, all are like, "DUDE I COMMITTED SO MUCH GREAT CODE!"
     
  7. CodeX

    CodeX Guest

    I am sure you are destroying and hacking the shit out of an elegant system.
     
  8. Peyomp

    Peyomp New Member

    Joined:
    Jan 11, 2002
    Messages:
    14,017
    Likes Received:
    0
    As though you would have any idea whatsoever what constitutes maintainable code. :rofl:
     
  9. deusexaethera

    deusexaethera OT Supporter

    Joined:
    Jan 27, 2005
    Messages:
    19,712
    Likes Received:
    0
    I'm talking about Joel because the Pomodoro Technique isn't really that impressive -- as I said before, it's called pacing yourself. Everyone I know works for about a half-hour at a shot before getting up to do something else, be it getting a drink or taking a piss or sending a fax.

    Maybe it's impressive to you because you don't work in an office and so you don't have enough distractions, and you probably don't work in an office because you're a code-bitch and you'd get hassled every time you stopped to adjust your nuts, to say nothing of actually leaving your desk. That's not to say any of this is your fault -- no-breaks programming is part of the corporate culture at a lot of tech firms -- but the Pomodoro Technique is nonetheless just an official excuse to do what almost anyone would do instinctively, in an environment empty of overbearing assholes.
     
  10. deusexaethera

    deusexaethera OT Supporter

    Joined:
    Jan 27, 2005
    Messages:
    19,712
    Likes Received:
    0
    I never said you could skip experience. Of course an SE with ten years of experience is going to be better than I was straight out of college. However, an SS is not the same as an SE, regardless of experience. SS' by nature don't deal with consequences because their work is all theoretical.
     
  11. deusexaethera

    deusexaethera OT Supporter

    Joined:
    Jan 27, 2005
    Messages:
    19,712
    Likes Received:
    0
    Maybe the problem is you don't have (gasp!) a design document that you could review to get a birds-eye view of the code architecture. If there isn't one, then that is almost certainly the fault of the "architecture astronaut" who planned it out but never wrote it down, but that person is more likely to be a programmer who's read a bunch of design books as opposed to an actual SE who's been trained to write shit down first and start coding later.
     
  12. CodeX

    CodeX Guest

    Possibly, I do not work in maintenance, I work in development. Maintenance is the janitorial staff of the programming world.
     

Share This Page