November 23, 2003
The neverending story

I realized this morning that I have five, (count them: 1, 2, 3, 4, 5) on-going projects that I'm actively working on. This isn't work-related, just my own little side-projects to simplify (heh) my life. At least that's the long-run intention. This isn't a new development by far.. I've always had several things going on at once.

Why isn't that I tend to do this?

Anyone who has better time management skills than your average five year old realizes that it's better to finish something before starting a new project. The biggest time-sucker is finding that particular spot where you left off the last time you worked on the task. Now assuming you spend about an hour a day on some project, each day a different one, and it takes you 15 minutes to arrive at the spot you left off last time.. that's a lot of wasted time. That's where I am.

Now to attempt to answer the question why is it that I divide myself into many projects instead of concentrating on one and actually finishing it.

Boredom.

I get bored easily. If I work on something for too long and don't have quick gratification of immediate results I tend to get bored with the task. That's a terrible trait in a programmer.. after all.. any decent-sized project takes weeks before you start seeing a result! Hours upon hours of work.

So I could approach my little side-projects the way I do work. Schedule, and well, just do it... but I'm afraid that will take the enjoyment out of it.. and what fun would that be.

Or I could continue the way I have been, wasting precious time (oh, how I wish I didn't need to sleep), tediously working through the more boring parts and delaying that good proud-of-myself feeling I get when I manage to do something really cool.

I suppose programming is much like running a long race.. you start out all excited and full of joy, sweat through the middle, force yourself to keep going towards the end and always manage to find that little push to finish looking strong. After that it's just all joy and pride and happy, good feelings. You did it, went for the long one and finished without quitting. You tell yourself you'll never put your body through this again.. but before you know all you remember is the good stuff, forget how bad the bad parts were and sign up for the next one.

Except for that one bruised toe.. that's still there over a month later.

So approaching programming like running.. I guess it's time to sweat and finish these off one at a time. But will I still enjoy it if I do?

Posted November 23, 2003 03:12 PM in Geek Stuff
TrackBack URL for this entry: http://www.unix-girl.com/mt/mt-tb.cgi/1020
Comments
On November 23, 2003 04:06 PM Travis added:

For contrast, there's a man of whom you've probably heard who has developed the art of extended concentration and batch-mode tasking to an, er, science...
http://www-cs-faculty.stanford.edu/~knuth/email.html.

I attended a lecture he gave at my university and he is most interesting and entertaining as well.

#
On November 23, 2003 05:00 PM darwin added:

"The artist finds a greater pleasure in painting than in having completed the picture" -Seneca. A motto I have come to rationalize my life with.

#
On November 23, 2003 05:08 PM Mark Eichin added:

Note that most advanced programming fads (XP, RAD, Agile, etc) are *all about* avoiding the "weeks before you see results" problem. XP is pretty explicit that if you don't see results in two weeks, you didn't break the problem down into small enough pieces.

To some extent, that's the unix way too - you glue together lots of small tools, each tool does a specific and easily tested thing. Then you can treat each tool, plus the gluing-together, as separate projects, and quickly see progress on all of them.

That said, I'm having the same problem with my own "side projects" - I've got four or five "half done" that if I picked a day and pushed on any one of them, it would be off the list. But all of them are at "and the next thing I need to do is hard" step...

#
On November 23, 2003 05:21 PM kasia added:

Mark, while that's a noble idea, I really dont' think it's realistic on a large scale.. you would have to sacrifice good design and scalability to achieve that.

#
On November 23, 2003 11:37 PM Adam Keys added:

I suffer from 'personal project ADD' like you do. I've been putting a lot of thought to it. I think it boils down to things you can look back a 3, 6, 12, 60 and 120 months from now and think "wow, am I glad I did that."

Last week I was working on a Scheme interpreter, but that sorta bogged down around Thursday. Today I found myself attempting to grok lambda calculus. Mix that with the media diet of news, TV and video games and all my time is gone. Sure I would like to have implemented a Scheme interpreter at some point, but I'm not sure I'll look back in ten years and say "damn, I'm glad I spent a few months on that Scheme interpreter."

Most people are unable to see future-value of present-time, but I think hacker types are somewhat immune to this. Hackers know that spending time on a design will show benefits later, that time spent writing a quicksearch will make the app run faster later, etc. But once you take off your hacking cap (http://iratescotsman.com/index.php/university/coding_hats.html), perhaps you regain your short-sighted view of present-time.

Wow, OK, the point is over there and I'm way over here. Filter your personal projects through "will I be excited that I did this in the future, or is this just going to end up in my crufty-halfbaked-ideas folder?" That's my plan going forward.

#
On November 23, 2003 11:38 PM Techie2000 added:

I totally understand. I often end up in the same predicament. However I have learned to finish, you simply need a little motivation, and spend a day trying to get as far as you can.

Course most of my "projects" have been web pages and such, not really anything with C, Java, or any of those things...

#
On November 24, 2003 12:37 AM yoshi added:

i do the exact same thing, dont feel bad :)

#
On November 25, 2003 12:51 AM dws added:

One good way to get a jumpstart on where you left off is to leave yourself is to write a test case with no code (yet) to back it up. It'll fail, which serves both as a flag and as a pointer.

#
On November 25, 2003 01:08 AM David added:

What I prefer to do is just write down where I stopped/have a tree outline of pending stuff to do, tape it to my monitor and when i come back, its just there for me to use and look at..I don't know, I kind of develop this visual imagery of the code that I keep..

#
On November 25, 2003 08:33 AM peter added:

I find that leaving a project and just mulling it over rather than "heads down (no nonesense mindless) coding / boogie"* produces shorter and better understood code.

It can be quite a suprise when you see the big problem become the little program. Then you get to bulk it up by documentation and tests and the like.

As a result I have five projects on the go, but the latest one will make CPAN in the next week or so (once I've sorted out the documentation).

* apologies to the berts

#
Trackbacks
Ben's Thought Crimes:Procrastination Central
I know exactly what Kasia means when she talks about juggling her many side projects. I'm exactly the same, it's probably the geek gene coming into play, but no matter how hard I try, I always get to that stage...
(read more)
November 23, 2003 08:03 PM
ZOQ:Juggling concurrent projects
Most creative developers I know suffer from Kasia\'s kind of attention defficit disorder when it comes to actually implementing ideas. Little weekend projects which start to run away an...
(read more)
November 24, 2003 11:41 AM