debuggable

 
Contact Us
 

The 48 Minutes challenge / A rush of productivity

Posted on 18/9/06 by Felix Geisendörfer

For those of you who have followed this site in the past days you might have noticed that I was writing a lot of posts on here recently. This of course has something to do with my 10 Days of Free Dessert! series, but on saturday and sunday both, I wrote 3 desserts even so the bet just says I got to write 1 / day.

In the past 3-4 weeks, I've started to work hard on myself. I've been trying to get up at 5am every day and even so I still oversleep at least once a week and feel a little sleepy when getting up, it has given me a serious increase in productivity. Together with that I've pretty much given up drinking coffee especially in the morning. I still drink a cup in the afternoon from time to time, but gone are the days of waking up by the brute force of my Geeky 16 ounce coffee cup.

Even so all of this has really been benifital it wasn't until last saturday that I discovered a real killer strategy for increasing my productivity. It was a post on lifehacker.com, and it suggested to Work in 48 minute increments. So you would always work for 48 minutes on a certain task while making it your main priority to fight distraction. After that you take a 12 minutes break before you start to work again. This entire pattern has really pushed my productivity way up. On the past weekend when I started to apply it, I wrote 6 good sized posts on here, refactored (almost rewritten) the complete application I work on right now to increase code quality, did all my homework (I never do that ... ^^), met with friends and also completed a ton of minor tasks. Especially the first two items are pretty big and normally would have taken me 4-6 days instead of two. Now a lot of people who commented it negativley on it, but for me this just seems to work like a charm, so in case you are interested in trying it out as well, here are some advices I would like to give you:

  1. Use a coundown timer to keep track of the 48 minutes, otherwise you'll get of path easily. I personally love using my watch for it, but maybe you want to get yourself a big countdown timer instead.
  2. In the 48 minutes of work, *really* blend out all distractions. No email checking, no news reading, no instant messaging, no banging your head against the monitor. Force yourself to stay on task - you know after 48 minutes you'll definitly get a break.
  3. If you feel the urge to go to the toilet please go, I don't want to be responsible for any accidents ; ).
  4. If you get distracted by the outside world like a phone call or things like this, stop the timer. If you feel like you'll have some control over how long the distraction will be, remember where you stopped the clock and set it to the new value you try to stay with. After you are done, get right back on task.
  5. You'll maybe notice that this technic can lead to serious pressure of trying to finish the task in the given time, maybe even setting the timer back to get more time. Don't do that, if the task can't be done in 48 minutes take a break and start in 12 minutes again. This will make sure you don't exhaust yourself too badly for the hours to come.
  6. If you have to eat something or such, take a bigger break. Maybe 30, maybe 40 minutes. However, set the timer for this time as well to make sure you're not using it as an excuse for goofing of after a while.

Ok, if you wonder *why* 48 minutes: I don't know. It probably works just as well with any other combination. I'll probably experiment with that a little bit in the future.

PS: Here is a similar post, but this strategy has a good list of people who will especially benifit from this technic (like me).

--Felix Geisendörfer aka the_undefined

 
&nsbp;

You can skip to the end and add a comment.

Christian Tietze said on Sep 19, 2006:

Sounds challenging. I'm not doing any homework at all too. I never sat down and learned something during the week if there was no test the following day. So I decided to work on my time management as well, like planning to do this and that in about 3 hours, but I never thought of, ahem, BREAKS :) Could have worked yesterday while I tried to stick knowledge about light and waves and physics in my head...

Brandon P  said on Sep 19, 2006:

Felix...
Ha! I have been doing a 45 / 15 schedule for about 3 weeks now and I have to say that my productivity has increased dramtically also. I had problems before with feeling too overwhelemed with the constant idea of "I need to finish this project asap" when there were weeks left of coding. Moving over to a 45 / 15 schedule allowed me to plan 1 or 2 tasks at a time.

I will try your 48 / 12 to maybe even maximize this more. I use a program called TimeLeft that not only I use for a countown timer but I also use the program's stopwatch to chart my "Total Hours Worked" each day.

When first starting this program, I noticed that allthough I was at my computer for 10 hours the first day I only logged about 6 "quality" hours of work where I wasn't preoccupied with something else ** cough ... like reading your blog ... cough ***.

My "quality" work time and time at my computer is nearing ~90% which is a dramatic change from the 60% 3 weeks ago.

Keep on keepin`

Felix Geisendörfer said on Sep 19, 2006:

Christian Tietze: I only do school stuff when it's absolutely neccessary too. It's enough for me to do well (12 point average), but for this year I decided to do a 13 points one (you're from Germany so you understand what I mean, right? ^^). However, the German school system is something I'm utterly disgusted with and I sort of feel like blogging about this as well (on a different blog), what do you think, could that be an interesting read ^^?

Brandon: I would say on bad days my quality work time would be around ~30-40% before I started to work on myself. I had the same problem with the "I need to finish ASAP" approach torwards a 50-60 hours load of work (I only get ~30-40 hours of computer time per week, and maybe 15-20 of it goes into paid projects). So this method really changed my perspective and therfor producitity big time. However the other things I mentioned like getting up at 5am have been really neat as well. So right now I would think I've reached the 75-80% area of [computer time/focused work] and this is huge. Now while I'll still try to work on this as well, other coding technics like agile development become a lot more effective as well which I really enjoy : ).

Good luck to all of you trying to fight the lazy bastard we all have inside of us - he's a tough enemy but he's gotta go, that's for sure ; ):

Brandon P  said on Sep 19, 2006:

Felix...
Also moving over to a test-driven design has made my programming more practical because with "testing before implementing" it makes you design all the functionality in mind and helps maintain a true MVC structure.

For so long I kept using $this->{model}->findById () but now placing an actual method (ie: Team::getTeam (id) ) it removes that sort of ambiguity that comes from these methods and allows me to test more effeciently.

Every model I make I create a test for it .. so adding new models and interactions/associations all I have to do is run "All Tests" and any possible errors that the new models create is shown right in front of me. It is a great way to really manage your software effectively because when in doubt you can run the tests to make sure that everything is working correctly.

I have also created a series of test methods that use real-time data in testing. I have cronned this test to return the results to me hourly. This, also, is a great way to not only make sure that your code is performing effectively but it also makes sure that any user-based actions and/or data entry doesn't comprimise your code.

Felix Geisendörfer said on Sep 19, 2006:

Hey Brandon, well I don't get why you want to replace all findBy*Magic calls in your code, but other then that I agree with the advantages you can take from TDD. Btw., I'm putting a good effort into my CakeTaster testsuite for functional (and unit) testing, in case you are interested here is a little preview screenshot from the web interface (command line will be available as well).

http://img291.imageshack.us/img291/5674/caketasterfr1.png

Brandon P  said on Sep 19, 2006:

Felix...
Sweet! Right now I use the tests suite for cake which is nice but definitely lacks some of the quality unit testing features and/or a quality GUI.

Well there are a few reasons why I replace the findBy* magic calls in my code.

1. Semantics. You aren't finding a row you are retreiving it. You already know the id and IMO "find" suggests you don't know the exact location of it. read() is even more obscure and really doesn't describe what the method is actually doing. A method like "getBlog" or "getOwner" are much more defined just by their names.

2. Associations & Recursion. With recrusive>1 cake (IMO) does a horrible job returning rows. It returns associations as single statments (when they can be grouped into 1 query). This is huge because a Blog::getBlog(id) you can perform any additional working on the results there and call the method many places.

Practical Example (i know much can be solved with using HABTM)...
Blog hasMany BlogPost hasMany BlogPostComment belongsTo User hasOne Profile

If you do $this->Blog->find ("Blog.id='1'", null, null, 3) it will return the correct rows but the sql shows a ton of queries because it uses 1 query to return each comment, 1 to return each User for each comment, and 1 to return each profile for each user.

Meaning if you had say 5 posts with 5 comments each it will need 75 queries to return all the rows.

The practical way (and best for unit testing) IMO is something LIKE (not exact) this:

function getBlog ($id)
{

return array_merge (

$this->Blog->find ("Blog.id='{$id}"),

$this->Blog->getLastPost ($id),

);

}

Any of this make sense :) ?

Christian Tietze said on Sep 30, 2006:

Felix I fully understand your problems with the German school, I think I waste an unbelievable time in this faculty. Blogging about is good, if you keep the niveau above "school sucks because grades suck" :)

Felix Geisendörfer said on Oct 01, 2006:

Christian Tietze: Ah no, I don't really care about grades too much. Mine are good (not excellent) without me having to put a lot of effort behind it. I'm more interested on topics like democratic schools and giving more depth to the process of studying in general. I'll see what I'll do about it ; ).

Henk  said on Oct 01, 2006:

I discovered this site because I was searching for a Google Analytics API ...

Anyway, on sleep rhythmes pretty much research has been done, a.o. by NASA. During sleep the brains go through various cycles, and it is vital to wake up during the right moment. This explains why sometimes LONGER sleep can let you feel MORE sleepy.... 20-40 mins sleep is called a powernap. If you want to know more, I suggest to visit Jetlog's website: www.jetlog.com. Set up by Germans, btw, based on research at Hannover University. This site includes many supporting background documents. Their system is based on measuring muscle activity is effectively related to the sleep cycle. You get an intelligent alarm clock so to speak.

Sonic  said on Oct 17, 2006:

Man, I honestly find it hard to get to bed before 5 a.m. Really. This ofcourse makes me sleep later and so if I go to bed early I can't sleep. It's a hard cycle to break and whenever I do, it ususlly isn't long till I slip up again.

I'm going to try the 48-12 thing. Anyone know of a good timer like 'TimeLeft' for Linux?

@Brandon: How are you setting up your Group test files in cake. I seem to be missing something. Can you point me to a paste?

I hope you see this post. At present I'm running my tests individually. I'd like to be able to group them, then make groups of groups, and then group them all. Is this what you do?

Sonic

[...] I recently read about the 48 minute challenge on ThinkingPHP.org [...]

This post is too old. We do not allow comments here anymore in order to fight spam. If you have real feedback or questions for the post, please contact us.