Fog Creek Software
Discussion Board




Fire and Motion

Discussion of "Fire and Motion"

http://www.joelonsoftware.com/articles/fog0000000339.html

Joel Spolsky
Sunday, January 06, 2002

This does not specifically apply to SOftware Development.

Inertia is a big problem for a lot of people. You will have your good(productive) days and bad (unproductive) days. It is a vicious cycle. Guess, you have to be really displined to handle it! , and Oh! reading and re-reading 7 habits by S R Covey is very helpful.

http://www.amazon.com/exec/obidos/tg/stores/detail/-/books/0671708635/reader/1/107-7482490-0981357#reader-link

my 2 cents.

Prakash S
Sunday, January 06, 2002

I was going to reply, but somehow I can't find the 'get up and go' to actually write anything.......... ho hum

Seriously, I like these columns because it turns out I am normal, something I have often doubted.

I too have days when nothing flows, and the only answer is to do something else for a while (usually an hour or so), so its nice to find I ma not the only one!

Keep up the good work

Peter Lovatt
Sunday, January 06, 2002

It is often said that it takes Microsoft until version 3 to get anything right What this really means is that they are willing to keep on going, working even just a little bit every day as Joel said, until they get it right.  Most companies I've worked for give up and move on to something else before even the beta is complete.

Though I'm sure this is helped along by the fact that Microsoft has ~$36 billion in cash sitting in the bank. :)

Darrell Brogdon
Sunday, January 06, 2002

I find I have a very similar, but equally devastating problem. It's not that I can't get started, but that constant interruptions completely wipe out my concentration. For some reason, companies have this idea that if you don't show your face in the office 40 hours a week, you're somehow cheating somebody. When I was working at home 5 days a week, it was amazing productivity; even when I could only do it once or twice a week, that week I usually ended up getting twice as much done.

Brad Wilson
Sunday, January 06, 2002

I have been having this same problem, except it has been going on for a year now.  I have been independently consulting for about a year, and the money is great when I am working, but I just can't seem to start coding.....the only way I can get things done in a timely fashion is if I start and finish it immediatle after I receive the request....its a sad state of affairs.

Todd
Sunday, January 06, 2002

Brad brought back part of the misery of working in the really-big-corporation:  It's important to look busy, be at your desk, produce something, anything.  These days, you are rarely in the company of folks who understand the  work, how the work really gets done, and how you personally work.

I could never fake looking busy.

TK
Sunday, January 06, 2002

I too have good days and bad days, I however tend to waste time on purpose, It's because I prefer to have more to do then I can actually handle, that always gets my a*s in gear, and putting off work until I can't anymore gets it done... I know that I could just look for more freelance to actually do, but I just put that off too ... in hopes that i'll end up in the long run with lotts of work;)

Robert French
Sunday, January 06, 2002

Wow, that was honest.  In fact, I'll have to write a dumb "this article resonated with me" post.

When I was going through a long dry spell, I met with the CTO and offered my resignation or a pay cut; his choice.  And he laughed and told me I was the fastest and with the least defects for the complex projects.

I had been driven nuts since I'm in Germany and noticed that everyone could easily work 10hr days, full focus.  Often they'd come in for more.  But after that talk, I noticed that everyone was just fighting their own fires, dealing with their own defective designs.  Whereas I'd come late in the day, after lying in bed thinking of the design, and work when I wasn't so interrupted.  Maybe I'd surf the web for a long while, but I'd eventually get my butt in gear.

Incidentally, that websurfing turned out to be very important.  I was learning the entire time, and came to know tools and libraries that changed the project.  I became special ops, to keep the military metaphor.

In a perfect world, I'd do a part-time telecommute.  For a day or two I'd come in, put my feet on a desk, and happily answer questions and talk with designers/customers.  Inspire and get inspired; measure twice and cut once.  The rest of the time my dark side would come out and I'd code like nothing mattered, communicating through email, except when there's a compelling reason to do otherwise.

Anon
Sunday, January 06, 2002

"Face presence" is a requirement in many companies. If you run your own company, along with a few fellow engineers. You don't feel you are cheating anybody, because the values of production are well understood by every one of them.

The problem is when you happen to work for another company, and not all your colleagues are engineers. Sales people have to wake up early and show up for work exactly at eightish or nineish, just because the industry wakes up at that time, and if they want to get customers, they have to be up when their customers are up.

Most white collar, software development doesn't require direct contact with any customer, perhaps just a representative. But the times at which a software developer needs to be in the office are not necessarily the same one's as that of the salesman. Many companies like to enforce "same for everyone", which is fine, and quite understandable from the HRM point of view. But it just kills many of the really productive hours for engineers.

I am supposed to get to work at 9, and leave at 6. Yet, I find that I can crunch a lot more work between 4pm and 8pm. Yet, the company I work for wouldn't allow me to do that. They understand my possition, and I understand theirs.

The problem you see, is that unless you are in an all-engineers kind of company, this is the rule of thumb for the industry, face presence is relatively important, because work isn't just about crunching code, it's got a lot more social involvement than just that.

The only way around I found to this problem is, headphones (so I can keep off interruptions), and a "Fire and Motion" strategy that starts as soon as I can every day. Some days it doesn't work, but most days, it does.

Beka Pantone
Sunday, January 06, 2002

Another thing that Extreme Programming has, is the concept of the "perfect engineering day".

When you're estimating how long it would take to perform some coding task, you're encouraged to think in terms of "perfect days", the day where you sit down at your workstation, and work your full eight hours programming with no interruptions.

To convert a "perfect day" into real days, you apply a load factor. You calculate the load factor as part of your project tracking, but you're encouraged to start off using a factor of 3, which correlates quite closely to Joel's "two or three hours a day of productive time".

Charles Miller
Sunday, January 06, 2002

Its that dreaded foe of the writer's community, writers block; and its quite natural and common.  Typically it happens between zones, although it can also happen when significant distractions impose themselves on you. 

For me the best remedy is to do something small and sometimes stupidly simple.  A recent task was to write a distributed installation device for multiple platforms.  My head rejected the idea immediately and voted on browsing the dilbert archives.  But all virtual elephants must be eaten one byte at a time so I coded a small file mover in java, and then moved on.  Once I had finished this small piece I was ready for the next, and the momentum slowly built up into the zone.

The only other thing that is a must is my own space to think.  I tried writing some documentation once, and it took me quite a while just to get started.  I worked from home the next day and extended the page I'd done the previous day with 22 pages of real documentation.

Michael Chester
Sunday, January 06, 2002

I totally loved this article; it's nice to know I'm not the only one.

I worked at a company a few years ago where we had all types of programmers: those like myself (and apparently most of the world) who averaged a few hours of heads-down programming a day, those who might do two hours a week, and one fellow who did eight a day. Every day. He came in at 7 AM, took one hour for lunch, and finished at 4 PM. Every day. Lowest defect rate of us all, too. He stopped only to smoke two cigarettes every two hours. If you wanted to talk to him about anything, he could context-switch for as long as needed, and drop right back into what he was doing.

I asked him about his productivity once, and he told me that he'd always been like this, and early in his career, realized he was unusual. He refused to work overtime at all, and nobody minded.

The only tip or trick he used was that he kept a notepad with him everywhere, and if he thought of something to do, he wrote it down. As he did them, he crossed them off. If one task turned out to imply another, he made a note of that. If he realized that what he was doing had an effect on some other code, he made a note of that. I tried this, and found that it worked pretty well; I got about 25% more productive, I think. It keeps the queue full, and I felt generally more on top of my work.

Jeff Paulsen
Sunday, January 06, 2002

This piece is so honest that it surprises me.

The web-surfing and all the emails going on really annoyed me to a point that I have to force myself to just forget about them.

The email is easy, like what Joel suggested, don't keep the client running! Originally I instruct OL to check mail only every 1 hour, but the fact that it eats up 12mb of ram staying in the taskbar convinces me to just shut it down. Now I only check email twice - right after I come in and before the tea break. And it saves me a lot of time because I don't have to contribute my input after every other colleagues' comment. I can easily get the point after their long conversation and occasionally give them feedback if they have overlooked anything.

As for web-surfing, I once installed a little shareware that keep track of what percentage of my time were spent on IE and on my editor. And it turns out Joel is correct again - it's about 2-3 hours quality time each day.

BTW, I don't know if any of you have this problem - once you get into the zone, you just can't tell your body to stop. I have had developed some major neck and shoulder pain because my brain won't let my body to rest 5 mins every hour.

The task scheduler popping up every hour ('Time to take a break!' ? OK : CANCEL) won't help either - I was so concentrated that I just clicked the 'OK' button and continued on (and at that moment I just thought it's a stupid idea to remind myself every hour - it interrupts the flow).

But then 2 out of 5 days my shoulders are so painful that I just can't do anything at all. I have to go see a doctor soon.

Mac
Sunday, January 06, 2002

This article was sheer brilliance. I've always disbelieved people who claim that they work 80 hours a week, knowing full well that most of that time is water cooler talk and checking email.

Your productivity lament is actually expressed beautifully in the short story Memento, the one on which the movie is based. The full short story is here:

http://www.esquire.com/features/articles/2001/001323_mfr_memento_1.html

The relevant excerpt is:

"Here's the truth: People, even regular people, are never just any one person with one set of attributes. It's not that simple. We're all at the mercy of the limbic system, clouds of electricity drifting through the brain. Every man is broken into twenty-four-hour fractions, and then again within those twenty-four hours. It's a daily pantomime, one man yielding control to the next: a backstage crowded with old hacks clamoring for their turn in the spotlight. Every week, every day. The angry man hands the baton over to the sulking man, and in turn to the sex addict, the introvert, the conversationalist. Every man is a mob, a chain gang of idiots.

This is the tragedy of life. Because for a few minutes of every day, every man becomes a genius. Moments of clarity, insight, whatever you want to call them. The clouds part, the planets get in a neat little line, and everything becomes obvious. I should quit smoking, maybe, or here's how I could make a fast million, or such and such is the key to eternal happiness. That's the miserable truth. For a few moments, the secrets of the universe are opened to us. Life is a cheap parlor trick.

But then the genius, the savant, has to hand over the controls to the next guy down the pike, most likely the guy who just wants to eat potato chips, and insight and brilliance and salvation are all entrusted to a moron or a hedonist or a narcoleptic. "

Keep up the great writing.

Naval Ravikant
Sunday, January 06, 2002

As always great article from Spolsky.  Reading the responses I was woken by the guy who mentioned the notepad.  I've never really been supervised as a programmer. I've not met anyone who could really do it anyhow, not yet, perhaps because I've worked for very small companies. It's all about planning. I would force myself to write down tasks that had to get accomplished for the future, the week and for the day.  I would take those projects that came in on napkins and then create a WBS to help manage and control development.  Spolsky is talking about ANYBODY who is not managed.  The interesting article would be why so many programmers are inadequately managed.  Why do people throw everything at a programmer asap?

Peter J. Schoenster
Sunday, January 06, 2002

It seems to me that all of us are a bunch of gooey stuff with bones all over the place being held together by a bag of skin. We all get up each day and then go back to sleep. To me every day is Groundhog day.

If you ask me, we all experience the same thing each day. Although it looks differently to each of us.

Sometimes I don't feel like doing anything for days, let alone hours during a day. Now that I think of it, it must be time for a vacation.

Regarding the fire and motion, I never even looked to see who the competitors were for the first 2.5 years. Now I take a look around to see who is doing what every now and then. People tell me its important to know this stuff.

Stephen Kapit
Sunday, January 06, 2002

Cool article.

Makes me think a bit about my productivity.

Mohammed Firdaus
Sunday, January 06, 2002

Thanks Joel for the honesty, yes it resonated.

I've come to identify that there are two kinds of "stuckness" (I also suggest reading Zen & the Art of Motorcycle Maintenance).

There's the general, "I don't want to work on anything" mood. Nowadays, I try to deal with that by doing stupid, clean-the-stables tasks. There's always something clerical that needs doing, that you've been living with.

The worst is the writers block on a given project. The "I'm stuck and I don't know how to move on" which sometimes translates into inventing ways to avoid working on that project. I've suffered from that on and off. Mostly it's the projects where I've tackled a windmill - I've volunteered to solve a problem that's huge, and not allocated anything near the time for it.

I've not got a good way to deal with this other than sheer ram-your-head-through-the-wall persistence. Even if I'm unproductive, I will refuse to allow myself to work on anything else until X is finished.

I'm (hopefully) preventing these situations by giving someone else the veto on everything I sign up for.

Andy Dent
Sunday, January 06, 2002

Just like on a battle field - you need a leader. If you don't have a leader the first 30 minutees of your day should be spent by you being your leader:

Another important military method is: Appreciation: factor, deductions for each factor, possible paths and devise which way ahead is best, good leaders do this inherently without really conciously thinking about it.... From here come all the actions that need to be done and forces your focus... Basically brainstorm your day organise the detail into the most important bits and then get on with that: if it is answering emails, then so be it, if it is web browsing then so be it.. and if it is coding : then that is it. Also Covey''s prinicple of First Things First and the four quadrants of actions well help you go from appreciation and strategy to be effective and more productive in the day to day detail:

Also.. another good thing about momentum I read in FastCompany.com:
http://www.fastcompany.com/online/51/goodtogreat.html

How Change Does Happen


Now picture a huge, heavy flywheel. It's a massive, metal disk mounted horizontally on an axle. It's about 100 feet in diameter, 10 feet thick, and it weighs about 25 tons. That flywheel is your company. Your job is to get that flywheel to move as fast as possible, because momentum -- mass times velocity -- is what will generate superior economic results over time.

Right now, the flywheel is at a standstill. To get it moving, you make a tremendous effort. You push with all of your might, and finally, you get the flywheel to inch forward. After two or three days of sustained effort, you get the flywheel to complete one entire turn. You keep pushing, and the flywheel begins to move a bit faster. It takes a lot of work, but at last the flywheel makes a second rotation. You keep pushing steadily. It makes three turns, four turns, five, six. With each turn, it moves faster, and then -- at some point, you can't say exactly when -- you break through. The momentum of the heavy wheel kicks in your favor. It spins faster and faster, with its own weight propelling it. You aren't pushing any harder, but the flywheel is accelerating, its momentum building, its speed increasing.

This is the Flywheel Effect. It's what it feels like when you're inside a company that makes the transition from good to great. Take Kroger, for example. How do you get a company with more than 50,000 people to embrace a new strategy that will eventually change every aspect of every grocery store? You don't. At least not with one big change program.

Instead, you put your shoulder to the flywheel. That's what Jim Herring, the leader who initiated the transformation of Kroger, told us. He stayed away from change programs and motivational stunts. He and his team began turning the flywheel gradually, consistently -- building tangible evidence that their plans made sense and would deliver results.

Michael Guilfoyle
Sunday, January 06, 2002

I've found a solution to the 'geek block' Joel speaks of: forced change.  Since before college I've found that when my creative side is frequently blocked (or bored as I like to think of it) - as is natural for artists and geeks - I just have to rock the boat a bit from time to time.  So, I overcome my cranial blockage by forcing some arbitrary (but not insignificant) change ... like jumping in a glacial lake.

Many things push me past anti-productivity.  For small bumps, I find running, cycling, hackiesack, basketball (mmm...endorphins) do the trick.  Burnout blockage, though, needs more momentum; overnight roadtrips to find night-time surf or a concert in the next province, movie marathons, frag-fests - or nearly anything that disrupts normal sleep schedules.  Scale the amount of change for the size of blockage.

I've had blockage and burnout blockage during many lengthy projects (most recently an 18 month deathmarch) ... and I find my creativity when I kick myself in the *ss. 

Bruce Alderson
Sunday, January 06, 2002

My company has been on a Jihad against web surfing.  The bosses run up behind you and stare at your monitor to make sure you are looking at code.

It's gotten so bad that before I load any web page, I go to my team leader and get explict permission.  This goes when I want to take a minute to check an ebay auction, or if I want to go to MSDN to read something in the Knowledge base. 

I don't have to ask permission to go to the bathroom.  Yet.

Jim
Sunday, January 06, 2002

Compare the work ethic of those people who really love what they do to those of the rest of us. They are unstoppable, and often need to be forced to stop working by wives, husband, family or whoever they live with or love.

We have all experienced this when we are enjoying ourselves coding.

Maybe software development is'nt that interesting when it's all said and done, maybe not being able to get going is the product of common sense. It's the mind/body/intellect saying to you 'you've got to be joking, you want me to do THAT AGAIN for 8 hours'.

Tony
Sunday, January 06, 2002

Ever notice when an important deadline is really close, you become extremely productive?  The fear of missing the deadline is what gets you started.

JJ
Monday, January 07, 2002

Nice article. Same problem here…

Sometimes, I think my inability to start work in a timely fashion is related to working too much. The strange attraction of the web and email comes from a secret desire to do something "on my own time" -- that is, it’s a kinds of surrogate "vacation".

Also, like many of those who do programming-related work, I can visualize the outcome of various tasks well beyond my current position in the task. This sometimes causes me to become discouraged by problems (or flaws) that I imagine I will eventually encounter. Which leads to a kind of paralysis. As you note, often the best approach is to simply move forward with something…anything. Once you have motion, there is new information to use and evaluate.

This reminds me of my early experiences leading rock climbs. On a lead, when you get stuck, your first instinct is to analyze your situation to find the "certified" safe way out of the predicament. But hanging out in a difficult situation drains your physical strength with incredible speed, and increases your fear proportionally. You soon realize that you have only one choice -- go up, now! Even though you can't see what holds are available. In many cases, even 6 inches of vertical movement opens up new options, and you’re soon happily on your way. Of course, in the real world, immovable deadlines ultimately have the same effect, with the same outcome…

Finally, I have wondered if my inability to start and stay on task is a symptom of an undiagnosed case of ADD (Attention Deficit Disorder). But perhaps this is a normal state for those with hungry minds and persistent web connections? Seriously.

David Bruns
Monday, January 07, 2002

JJ had an interesting observation. When a deadline is looming on top of our heads, we are suddenly very productive. This has been the case since school and college days when  2 days before the exams, i was 5 times more productive than usual. Maybe thats the reason, we have many mini deadlines in a big project. Is there a scientific explaination how the urgency gets that "flywheel" started?
   

Jasdeep Singh
Monday, January 07, 2002

Check out Patterns of high performance

http://shop.barnesandnoble.com/booksearch/isbnInquiry.asp?userid=187K5UOS9Q&mscssid=VS4DQGJ0A6619HPPK3UHSV06Q31K6TL3&isbn=1881052338

I would call Covey the modern (systematic approach can solve everything) approach while fletcher has the post-modern approach.

Until i read the latter i thought i was abnormal.

Karel van der Walt
Monday, January 07, 2002

Now that Joel has marked everyone who replied with a "me too" off
of his "gets things done" list, we can now move on to a new topic.
Kidding.

Robert Anderson
Monday, January 07, 2002

Before reading this article and all the feedback I felt alone and scared, now I feel much comfortable.

I am actaully going thru this problem right now. After coming from the long vacations I find it hard to concentrate and be productive. Just before the vacations I remember gaining the right momentum and being really productive.

I have to deliver something tomorrow and I am feeling really stuck. I have been trying since Friday and I even came to office both days of weekend to try to get things going but things didn't work out. Now, being desperate I have planned to stay the whole Sunday night here at the office just to get something done.

I must say somethings are starting to happen but i am still not sure if I will be able to make it by tomorrow (in fact it is midnight so its today already). Anyways reading the article and all the feedback has brightened my spirit and the feeling of being lonely with this condition is gone now.

I wonder if there is a way to tell you manager something like that you have a programmers block or something.

Well Done Joel ! You have made my day. Keep writing such peices of blatant truth.

SAAR
Monday, January 07, 2002

Joel, I found your last column both refreshing and surprising.  It's kind of ironic how much of a people's factor there is in this so called technical field of software development.  It touches on the side of one of my hobbies of the last years of my life- motivation, its origins and implications.

Saying "the problem is that X is not motivated" is a very empty and a circular explanation - but I am starting to digress.

I think the bottom line, echoing a bit with what Tony mentioned before is that the work we are trying to put away is simply unnatural or in disagreement to what we really rather do.  At least at our perception level. Once the "car" starts, it all gets going probably because the results of going into action start providing pereceived value, new meaning to what we do and tangible product that is rewarding.  To get started is simply most of the time, painful.

Usually for me the work is certainly unnatural - if I won $20 million dollars in the state's lottery tomorrow, would I keep my software development job and position working for who I work for? Would anyone else in their respectives jobs? I sincerely doubt it.  Joel you are probably one of the exceptions because you own your own company :-)

It is almost as if "starting to go at it" involves an initial phase of self delusion, to artificially create an initial reward thus breaking the inertia to gain that desire to start.

Perceived value and meaning helps explain why when deadlines get closer, people tend to take more action - a task that seemed like it could be put away, all of a sudden takes a new meaning when cold-steel consequences are "in your face."  The task at hand becomes a matter of survival to keep the job, earn $$, etc.

I also think there are times where the chemistry of the brain just isn't there. And when going back to motivation in general, it becomes far more complex.  I have found that very, very few people are willing to look in depth on the why's and how's of motivation.  Most likely because it threatens core beliefs, brings uncertainty and there is a degree of at least initial pain in those answers.

My intuition seems to tell me that the mechanisms involved in "starting" a software development task and following up with it are not very different from losing weight, exercising regularly, etc.

Ricardo Hernandez
Monday, January 07, 2002

Maybe I should stop reading this web page and start with some work but first I have my email to check.

John Ridout
Monday, January 07, 2002

isn't it wierd how people who work long hours still deliver late and those that work (meaning actual coding) 4 hour days deliver on time. it's all about focus i think.

periods of screwing around all day are just natural recovery periods, arising from the fact that coding is an incrediably intensive exercise.

alan
Monday, January 07, 2002

I thought of one reason why this happens.  Reading the web and checking email carry unpredictability.  You find things that you haven't anticipated, and you can react to them.

I think in Peopleware, I read a study that showed peoples' productivity rising perceptibly day-to-day just because of variations in office lighting.

On open-source projects, you always see the developers answering emails. Even just to be rude, in the case of an amusing few.  Is this needed, getting feedback from the outside, so you're inspired to 'Aha!' change the frobulator to schedule things better?

Is there any way to make programming more reactive?  Maybe companies should be structured as learning institutions?  (I love learning new things with people, and putting them into effect.  In fact, I have much higher productivity after understanding a new methodology, and my context-switches are then almost faster than instantaneous.)

Richard Jenkins
Monday, January 07, 2002

I think I've lived like this forever.  Occasionally the anglo-saxon work ethic tries to make me feel guilty, mostly though I let it pass until I'm forced over the brow of the hill.

Its another form of a lack of gumption (another Zen and The Art of Motorcycle Maintenance).  The gumption needed to start real work when one is confronted with a seemingly infinite number of choices to start with can be considerable.

It almost doesn't matter what decision you make in beginning to work, any decision can lead to real work.  The trick is to realise there are no pointless culs-de-sac.  Even if you throw away all the code you write today, because it was in the wrong direction, it will inform the rest of the code you write.

So, when you have a problem in beginning to work just do something :-).

Yes, its exactly as hard as that.  Now try not thinking about polar bears and you will achieve nibbana by lunchtime.

Simon Lucy
Monday, January 07, 2002

I can also recommend "Get Everything Done and Still Have Time to Play" by Mark Forster for some useful ideas to get that momentum going.

By committing to just 5 or 10 minutes of something and giving yourself frequent deadlines it makes things easier to start and also makes you more productive.

I don't necessarily agree with all he says but I do find some of his ideas useful.

Robert

Robert Cowham
Monday, January 07, 2002

I am a student in a technical university and the exam session just started. I have two days until my first exam and I know I'm going to fail it - because I just can't concentrate on schoolwork. I spend my days in front of the computer, but mainly playing or surfing instead of coding.

We are allowed to leave almost everything undone, until the last two weeks of school. Then we are unable to sleep, because we have too much to study in a very small amouny of time. I know I am not the only one on my class.

Mario
Monday, January 07, 2002

What if another cause for not being able to code is that things are not ready to be coded? Like, there is this problem, I have in mind an idea about how to code it but... deep within, I still have doubts. There might be another way to do it. Or, the problem might not be exactly what I think it is. There might be a way to generalize the solution...

I *know* I should start coding, but somehow my brain refuses to do so until I'm happy with my solution. And my day-dreaming/web-browsing/email-reading is just me taking time to just *think*.

I spend more time writing specs than coding, and the same applies to specs too, by the way. Sometimes I feel like going out on a bike might bring more ideas than drawing more diagrams at my desk.

Unfortunately my boss does not pay me to go around on a bike.

Stephen
Monday, January 07, 2002

Two strategies:

1) Have more than one project "live" at any given time. Three to five is about right for me (not all programming projects -- because I work out of a home office, it's a mix of programming, writing, and Doing Stuff around the farm). Then when you just can't get started on one project, you can switch to another. The hard parts to this are managing the granularity of task-switching to be productive, and not having multiple deadlines fall on the same day. But it works for me, and much better than the typical advice of "just do one thing until you're done".

2) Relentlessly delete every version of solitaire or Tetris that the elves install on any of your computers.

Mike Gunderloy
Monday, January 07, 2002

And Joel you do an admirable job of helping people out with 2) and 5) and 9).

Toby Allen
Monday, January 07, 2002

Nice Post.

I've recently been able to make some large strides in increasing my productivity at work. Here's some things that seem to work for me.

First the basics: Eat healthy, get daily exercise and plenty of rest. I've also started meditating, which seems to help me to feel calm. ( There's a programmers guide to meditation here: http://www.perlmonks.com/index.pl?node_id=73034&lastnode_id=20513 ).

One of the biggest boosts for me has been switching to 4, 10 hour work days. I'm more motivated in this structure, and am getting more done than I was in 5, 8 hour days.

I'm worked on slowing down, doing one thing a time, minimizing distraction. I set my e-mail check to happen every 15 minutes instead of 30 seconds. Sometimes I close it entirely. I let (most) personal e-mail sit unopened until I get home to read it. If I have a fit of "just gotta check out this website", I make a note in a "to home" file. If I still think it's important when I get home, I look at it then.
I set my all my browser start pages to "blank", so I don't get distracted when launching a new browser window for work. 

I make use of the "do not disturb" feature on my phone. If I want a break of work, instead of browsing three websites and getting more distracted, I'll take a real break-- stand up, stretch, walk around, get some water.

I also try to one thing at a time so I can focus on it. I actually find this is faster than "multi-tasking" several things at once.

Finally, I reward myself by leaving on time, and having my evenings and weekends as personal time. :)
    

Mark Stosberg
Monday, January 07, 2002

So here I am... Monday morning... I've been here an hour... I'm still in this newly defined "read_the_email" phase... and I come across this article.

Wow!!  Justification!!!  After having just read a bunch of books on  VB a year or so ago and started programming, I guess I've made it!!  I'm among the ranks of <adjusting volume and turning on the reverb) The Developers!

I just got a call from someone I'm supposed to be presenting a database thing to today that's still not quite working.  The pressure's on.

I know my body's here, because it's drinking coffee.  When my mind shows up, I'll get to work.

Ted Watson
Monday, January 07, 2002

It took me about fifteen years to find a way of actually doing something when I got 'frozen'. The key is, as Joel says, to realise that doing something is better than doing nothing. You have to have a to-do list or bug tracking system - the two are really the same - and for once, if you are desperate, you should throw priorities out of the window and find something easy to do from your list. Correct the spelling in a comment or something. Then you can mark that item as fixed, and you're moving! Do a few more piss-easy things and then you might actually work up the courage to tackle something nearer the top of the list.

Well, it works for me. But I am of course avoiding work simply by writing this...

Graham Asher
Monday, January 07, 2002

Dare I ask?  Given that Joel is pretty much dead on in describing the usual work process, how does this translate into hourly billing for those of us who are independent consultants?

I can "work" all day on a project but still not have more than 3 or 4 of what I call billable hours.  Is this why I'm not making as much money as it seems like I should?  Do others in this position bill seven or eight hours for a project that takes up the whole day when only, say, five or six hours, were spent actively focusing on the client's project?

Herbert Sitz
Monday, January 07, 2002

I find that I'm very much like Joel on this topic and many of the people responding to the list.

Although I share the same idea of perpetual motion, I found myself plagued with guilt. When it seemed everyone was working so hard and some weeks, I just didn't catch a ride on the flow train.

And as mentioned in the article negative feelings only help to prolong unproductive periods.  What a vicious cycle.

But it's cool seeing others feel like this and to know it isn't just a weakness on my part.  In a strange way this article felt more like a support group for developers!

Hi my name is Charles and I don't always code a productive 10 hour day.

Anyway I just came across your site last week and think the articles are fantastic.  Keep them going!

C N
Monday, January 07, 2002

To Herbert: Interesting question. Come to think about it, on a typical 10-hour working day, I typically worked 4-6 effective (billable) hours a day when I was working from my home. On the other hand, when I was on my client's site, I billed them for every hour I was there -- which was easy, since I had to punch in and out anyway. And I was probably a bit more efficient there, given that I charged them by the hour for surfing the web and reading my personal email.

Johannes Bjerregaard
Monday, January 07, 2002

I think just about every programmer has experienced what Joel described in this great article.  I think one thing worth mentioning is that when we do get into these ruts, it's not like we as developers enjoy them.  These periods of unproductivity are usually paired with feelings of frustration, guilt and, which is probably the thing a programmer hates most, boredom.  I think that's why mainy programmers were so quick to flock to start-ups, and for most of us it wasn't for the money as it was for the challenge and the chance to work on something that would *let* us add more than 10 lines of code per day.

As for Pair Programming and XP, I will say that on the days that I have paired with someone I came away feeling mentally exhausted because it would just be session of non-stop concentration where we forced each other to be focused.  Because let's face it, when you're paired up you're not going to play tetris, you're not going to surf the web, you're not going to check your email every 5 minutes or instant message with your buddies.  I don't know about being able to pair program every day but for really tricky problems I'll definitely look to pair up with someone and at least make it a common practice within my software development team.

Christian
Monday, January 07, 2002

Keep lists, start small, read all these posts, but do not wait for a deadline. I have to disagree with JJ. That is the worst possible way to work. Sure, your motivated. If you miss this deadline you will be in the welfare line. That is motivating.
It is the idea that programmers need deadlines to get started that causes unrealistic, death march deadlines.  Stay off the critical path. Always have your stuff done, tested and checked in.
Not procrastinating is one of the keys to happiness. I made a point of having my piece finished. I was available to help others, train the newbies, plus had free time to myself. This worked so well, they made me a manager. Now my job is checking email, surfing the web for new tools and technology, …

Doug Withau
Monday, January 07, 2002

Something that really helps me but no one else has listed (I hope I am not weird) is a journal.
I keep an old notebook in the back of my desk. When I realize I am totally blocked and procrastinating, I pull it out and start writing. I just explain the project like I would to another developer and just let my mind go where it wants.
Letting my mind choose what to write about is key. If I write that I would finish this code but I have a list of 10 things to do at home, I go home and do those 10 things. Tomorrow, I am ready to code. Most of the time I realize there is something missing or a detail I do not understand. I’ll write widget foo is tied to bar too tightly and foo keeps changing. There is the problem; I just had to bring it to the surface.
I keep it in the back of my desk because I will also write about my coworkers. It is a safe place to say that Joel really pissed me off, he isn’t in charge, where does he get off saying that shit. Once it is on paper, it is out of your brain and the calm Zen state can take up the space.

Doug Withau
Monday, January 07, 2002

I once worked in an environment where features were scheduled in 1/3 day increments, we were required to work 12 hour days, and we would go through "lockdown" periods where we weren't supposed to leave the building for lunch or dinner.  The only positive lesson I took away from that experience was that I could be extremely productive under extreme stress, at least temporarily.  I'm sure that staying in that environment would have eventually resulted in complete burnout.

Now that I'm in a much better work situation I still occassionaly use a kind of positive stress to get motivated.  If there's something I really don't want to work on I'll make up an artificial challenge, like, "Let's see if I can get this feature done and tested by the end of this week instead of next week".  Even if the work I need to do is tedious the the challenge keeps me interested.

That said, there are still plenty of days I don't want to do anything but surf the web.  Thanks, Joel, for this excellent article.

Candace Bain
Monday, January 07, 2002

I knew that there's going to be lots of discussion on this article. The article reminded me of the Johnie Walker ad "Keep  Walking " ;-)

Sunish
Monday, January 07, 2002

Thanks for this post, Joel.

I've been in a personal slump for several weeks now.

Stewart Vardaman
Monday, January 07, 2002

Hey Sunish,

The one in which they feature Roberto Baggio!:-) , that's a good one.

If Joel increases his frequency of articles, most of us wouldn't be moew productive:-)!

Prakash S
Monday, January 07, 2002

You mean my periods of vegetative unproductivity aren't abnormal? The Great Joel also has these problems? But... I thought I was the only one! Heck, I feel better already. Maybe tomorrow I will actually get some work done. Joel, I think I love you (in a non-sexual way).

PS: Were you *really* a paratrooper?

Skinny Rob
Monday, January 07, 2002

A few years ago, I wanted to take up swimming. Every few days, I'd put on my suit and go down to the pool in the courtyard of my apartment complex. The water was chilly, and one day, I stood on the top stair with my feet submerged, and couldn't bring myself to get in the rest of the way-- I knew it would be painfully cold.

So, I took my apartment keys of out the pocket of my swimsuit, and threw them in the opposite end of the pool. That seemed to do the trick-- I got in right away and retrieved the keys. Of course doing the workout was easy after that, once I got started.

I find this memory helps me. On another note, a good book y'all might like is 'Getting Things Done.' It's a new release and covers useful topics, especially how to clear the mind. Reading it (well, the first part anyway) improved my quality of life overnight.

Alan S.
Monday, January 07, 2002

I have found that often the reason I haven't been able to get started is that I was not totally happy with the current implementation, but felt that the schedule wouldn't let me take the additional time to refactor. In those situations I had so much inertia I found it extremely difficult to fire up the editor at all!

I am getting better at identifying those particular inertia generators and invariably take the time to do the refactoring, which results in me getting into the 'zone' more often than not.

As to other causes of inertia, I like the unpredictability/anticipation theory put forward by Richard Jenkins in an earlier post. Often the code you need to write has a great deal of 'sameness' about it, not sameness in the OO sense, but it is predictable and does not offer any sense of anticipation, which is a great inertia generator.

What techniques are there to cope with this style of inertia ? Maybe looking at the code in different light, trying to build tools/code to help eliminate the sameness might be of value here.

Robert Leftwich
Monday, January 07, 2002

I've been stuck in a rut lately trying to "read the tea leaves" about Microsoft, .NET, and ADO.NET in particular.  I've finally figured out ADO, and have been developing apps quite happily.  But lately I've been afraid that I better start switching all my code over to .NET or I'll be stuck in the past.

Thanks Joel, for helping me to see how stupid it would be for me to waste months of time porting all my code to .NET, when I really can't put my finger on why this is so important from a customer's perspective.  Trying to be buzz-word compliant is an easy way to waste time, which eventually hurts the customer.

Troy W
Monday, January 07, 2002

Everyone's reaction to this article seems to be:

1) Although Joel is a successful programmer, he sometimes has problems getting into the zone.
2) I have problems getting into the zone.
3) Therefore I am a successful programmer.

This is of course a logical fallacy, equivalent to

1) Socrates is a man.
2) All men are mortal.
3) Therefore all men are Socrates.

;-)

Mountain Smog
Monday, January 07, 2002

And sometimes I can't get started in the morning because I'm reading "Joel on Software."  Hmmm....

James Fristrom
Monday, January 07, 2002

Joel is Mortal - this is the logical proper Valid conclusion.

Tony
Monday, January 07, 2002

Get back to work!!

Your conscience
Monday, January 07, 2002

I just realized I wasted an hour reading all these replies when I could have better wasted my time at TheOnion or Brunching or Memepool or Yahoo Games or ...

Socrates
Monday, January 07, 2002

I'm reading up on extreme programming, and it seems to me that the whole methodology is designed to specifically deal with the problem of getting started.

1) Pair programming.

As Joel observes, working in a pair helps you to get started and keep going.

2) Starting with the tests.

Starting an editor and then turning the nebulous mush in you head into working code is difficult, which is why it is hard to get started.

However, running a unit test suite and dealing with the bugs is much easier to get into.

Once I have a unit test suite, I can imagine myself setting it to run automatically on start up so that I am greeted with a chutzpah enducing list of bugs every morning.

3) Lots of small deadlines.

As is observed above, nothing gets you moving quite like a deadline.

Ged Byrne
Tuesday, January 08, 2002

Thanks Joel -- boy, that beanbag in the corner with a ti-book surfing on airport has gained a brand new look of justification since reading your latest piece.

Robin
Tuesday, January 08, 2002

You know, all this guilt is absurd.  Theorem proving -- that's what we mainly do, and 10 hours a day...

It makes one realize that the world just isn't optimized.  Sure, I can code for a very long stretch, but like homework, it just sometimes isn't sensible.  From what I hear, the physicists working on the Manhattan Project worked normal 8-hour days on average. 

Richard Jenkins
Tuesday, January 08, 2002

I've absolutely got this problem (as does everyone else on the planet, judging by the response to this piece). The way I deal with it is trickery.

If I don't feel like starting an article or a hunk of code or a book chapter, I just say to myself "don't do anything at all -- just brainstorm a bit. Write down everything you can think of related to the project." By the time I do that, I'm in and rolling. That takes care of the "blank piece of paper" problem.

To deal with the problem of finishing something once I start it, I just say to myself, "don't do anything -- just read what you've already got." That puts me in editing mode and by the time I get to where new stuff needs to be, I'm back in, baby!

Chris Sells
Tuesday, January 08, 2002

For some, this condition is called depression and can be treated with a good combo of some meds and lots of counseling.

Chris Morris
Tuesday, January 08, 2002

I recommend Carl Rogers' person-centered approach to blocks.  (Journaling is a great way to try this on your own.)  When you are blocked, find an empathic listener and start talking about whatever is on your mind.

Jim Lucoff
Tuesday, January 08, 2002

Re: Chris - which is why people are becoming dependant on medications and shrinks rather than learning to stop worrying and love the bomb... I mean code.

So harkening back to Joel's comments from a column or so ago - this page is often more about managing software projects rather than being a programmer.  So let's flip the problem over.  You're a manager, you recognize these patterns, how do you help shove the wheel for your programmers to get them going again.  As a human, I don't want my friends (who happen to have little lines from their boxes on the chart to my box) to sit around feeling depressed about not being productive.  Not to mention it's my job to keep them productive.

It seems there are dueling concepts here.  Many programmers hate being asked to lay out lots of little goals to accomplish.  But at the same time, it's the relentless progress on the little goals that works.

Plus, there's an underlying theme here - judge the programmer on his productivity.  I don't know about you guys, but defining productivity is hellacious for me to do as a software managr.

Any thoughts on that from Joel or the assembled web-surfers who aren't feeling productive?

John
Tuesday, January 08, 2002

Mountain Smog -- Another possible argument that might more accurately (or at least consistently) capture the reaction of many of us in this thread:

(1)  I often have trouble getting into the zone.
(2)  If a person often has trouble getting into the zone, then they aren't a successful programmer.
(3) Joel Spolsky often has trouble getting into the zone AND Joel is a successful programmer.
(4) There is a conflict between premises (2) and (3), therefore, one of them must be false.
(5)  Joel says he has trouble getting into the zone (and I have no reason to disbelieve him) and I'm pretty confident that he's successful, so it must be premise (2) that's false.
(6)  Therefore, there's hope for me after all.  The fact that I often have trouble getting into the zone doesn't necessarily mean that I'm not a successful programmer.


I can be the first to admit that I'm not Joel Spolsky.  But it's nice to hear that there's hope for me yet. ;)

Herbert Sitz
Tuesday, January 08, 2002

To John above who is managing the lines between boxes, which, I guess, makes him a line manager.

Everybody suffers motivation problems, its human.

As a good manager you know if your productivity level is acceptable, if its not then you seek out those responsible and just simply TELL THEM.
At this point you will learn if the problem is to do with the developer or is systemic.

Then you do what you are paid to do.

My point is I guess that I think it is possible to overcomplicate the management process.

Tony
Tuesday, January 08, 2002

Sounds like a little pushback to Dave Winer to me - particularly the "quit talking and write code" thoughts.

http://scriptingnews.userland.com/backissues/2002/01/01#ld1a442373ebefe7203011d79abc473d3

Press on Joel - stay above the riff-raff.

Guy
Tuesday, January 08, 2002


Wow.  I've been out of the zone for several weeks now.  Just before Xmas and New Year's, I was saying to myself.  "I'll get back in the groove once January hits. "

Yeah.

Anyway, obviously this article gives me some kind of hope.  And I found the coping strategies listed in several folks' feedback to be of interest.

But this will probably always be an ongoing thing for me.

In a more general sense, I experience from time to time (ok all the time) a certain sense of forboding that tells me that no matter how much effort I put into improving my skills, I might never become a "real" programmer.  That scares me.

A more specific variation on this pattern of thinking asserts that I have waited too long to try to start getting *really serious* about becoming an uber-geek god of coding, and that  I should have started out along that path five years ago (at least) in order for success to be attainable.  Preferably, I should have started getting serious about coding when I was in high school, or earlier.
I have noticed that as I get older (the big 30 comes for me next year) my mind is just not as adept as learning new stuff as it was, say, five years ago. (And to make things worse, I can remember the advice a co-worker who was pushing 60 at the time gave me when I was 21.  "Get all of your schooling out of the way before you hit 30, because it becomes kind of hard after that....") So now, it is no use... or so goes that line of thinking anyway.

Does anyone else worry abouot this kind of thing?

Should I just console myself with the realization that, in the end, even a lifetime of programming triumphs (that had begun accumulating from an early age) might not seem like enough?

Or is that just some kind of quasi-sour grapes thing?  :)

Anon Lover
Wednesday, January 09, 2002

First I'll get the "me too" out of the way.  I have some incredibly obsessive/productive periods (maybe a week or a little more), some incredibly non-productive periods (ditto) and long stretches in between when I can get maybe 3-4 hours of work done per day.  If plotted on a graph it would probably be a bell curve with noticeable spikes at both ends.  I think most engineers have similar "modal" patterns, but there's a lot of variation in both the productivity of each mode and the distribution among them.  Generally you need to work with someone for at least a few months, letting them cycle between these phases a couple of times, before you can gauge their overall performance.

On a completely different note, the "Fire and Motion" idea reminds me a lot of the works of "Genghis John" Boyd, probably best described in http://www.d-n-i.net/FCS_Folder/comments/c199.htm but also elsewhere.  IMO there's a lot of business-consultant BS that has grown up around his "OODA Loop" concept, but his basic idea of reaction time as a decisive factor in conflict/competitive situations is one of those things I find useful to keep near the top of my mind.

Jeff Darcy
Wednesday, January 09, 2002

Fears of never becomming a "real programmer" are not confined to the almost-30 crowd, Anon Lover. I'm 22 and have been having the same fears ever since I started getting serious about programming three years ago. Of course it's non-sense, at least that's what I keep telling myself.

A good way of combatting these fears is talking to people you regard as real programmers. You'll quickly discover that they're human too. Once you start challenging their thoughts and designs you'll feel a rush of personal acknowledgement. Treasure those moments. Think back on them whenever the feeling of inadequacy creeps up.

David Heinemeier Hansson
Wednesday, January 09, 2002

Anon lover,

Does learning really get more difficult as you pass 30?

It's my Big 3 Oh in February, but I'm still learning lots.

It seems the problem comes with motivation rather than ability.

When I was 18 there was so much I did not know, and I was forced to keep learning just to keep up.

Then at 25 I knew enuogh to be considered an expert in my field (Application Support, MS Office Guru) and I didn't need to learn very much.  When  a new version of office was released with new features, I wouldn't bother because I would probably be able to achieve whatever I wanted using my current skill set.

Then I finally moved into real programming, and my knowledge was blasted away.  Once again I find myself sorely lacking in basic knowledge and having to learn every day to keep up.  After the initial show, I'm back in the swing and not finding it any more difficult.

I think its the learning situations that dry up rather than the learning ability.  You just get stuck in a rut.

Ged Byrne
Friday, January 11, 2002

I am really glad that Joel covered this topic.  Indeed it felt very reassuring.  At the end of an unproductive day, nothing hurts more than the guilt feeling one experiences. 

In order to discipline myself, I have started using a time-tracking tool.  I found a very useful time-tracking tool at www.syntap.com.  At the end of the day, I log my productive and slack hours.  Classifying what is productive and what is not is probably difficult.  I have tried to keep it simple.  If an activity contributes to the project directly or indirectly it is productive, otherwise it isn't.  While logging the hours I also briefly describe the activities I did in the day.

When I have an unproductive day, the slack hours column is the driving force for me to better the productive hours the next day.  It has helped me so far.

I have stopped using instant messaging tool while I work too.  Personally for me, this was a big nuisance.  I don't even browse while I work.

I am not sure if I have found the panacea to lack of productivity but at least at the end of the day I have an honest picture of how well I utilized my day.



My 2 cents.

Regards,
Kartik

Kartikeya G. Rindani
Sunday, January 13, 2002

There is a relevant discussion on Advogato which is a nice datpoint for this article.  The discussion has turned to asking whether the DCERPC support in Microsft's NT/W2k is `cover fire' or the real thing:
  http://www.advogato.org/article/404.html

Charles Stewart
Monday, January 14, 2002

Hey,

I have led a software development group for a
large ISP for quite some years now.
Recently we decided to set up our own software
development company.

What I can read here (in the article, as well as the
replies) is what we call 'factory development' vs 'brightspark development'.

Factory development meaning being disciplined,
following the correct steps, etc. etc.
Brightspark development meaning leaving your developers to do whatever they need to do to get the job done.

I have found that when you discard the office
hours paradigm for the programming force and
loosen the reigns, so to speak, productivity is
a factor higher than with the other method.

The only upshot is that you really have to trust
your developers in that they will not let you down.

Face it, development/programming is a creative
job. That is a fact a lot of managers do not
understand.

Well that's my 2 eurocent :)

Regards,
            Adrianus Warmenhoven

Adrianus Warmenhoven.
Monday, January 14, 2002

Good to know I am not alone out there :-)

Seriously, I think I spend about two thirds of my working time browsing, writing/reading e-mails or playing spider solitaire at work. I always fear, my boss will notice and fire me on the spot, but just today he told me again how satisfied he is with my work, so I guess, this is nothing I should worry about.

Being unproductive really brings me down when it goes on for too long, though, not because I have to fear for my job or something, but just because I need the satisfaction that getting things done gives me.

Jutta Jordans (aka Capella)
Monday, January 14, 2002

Hi,

I work for a small software company and as everyone I sometimes
have this 'problem'.
However, I never stay in this state for long. There are a couple of reasons for this:
- I always work together with a really good friend. Although we are 200km apart, we share terminals using 'screen' and an irc window. If I am distracted, I get 'pulled back in' by him and the other way around. Not that either of us gets pissed if the other one goes away for a while (shopping, a nap, ...), we totally accept that, but it helps a lot to focus.

- When I nevertheless go into 'mindless clicking mode', it only lasts for 10 minutes because then I have finshed clicking /., garfield etc. After that my mind returns to the project, although that may be in the form of checking out algorithms or a deep thinking session on the toilet ;)

- Of course this is only possible because my boss trusts us completely. We both work at home, have no working hours, just a meeting once a week. This level of trust is a key motivation for me, it's just awesome.

That doesn't mean I'm always at my brightest, so to speak, but because you have two people, you almost always move forward and we make more progress than the sum of us two when we would work alone.

Marijn

Marijn Meijles
Monday, January 14, 2002

I used to have this problem too.

I'd sit down on Monday morning, think "I gotta write lots of code today" and load up the editor. Then my mind would go blank, and I'd end up reading Slashdot or comp.software-eng or whatever, and then the day would be gone, and so would Tuesday and Wednesday.

Then I'd wake up on Thursday morning and realize the design I was working to was fundamentally flawed, there was no way it could ever accomodate a certain critical feature, and I needed to rework it. If I'd spent those days writing code it would have been a waste of time because I'd have had to rewrite the code anyway. Instead I'd spent them letting my subconscious chew at the design until it figured out what needed to be done.

Eventually I noticed that _most_ of the time when I had "programmer's block", it ended up like this. In other words, no matter how much I thought I needed to sit down and start coding, if my subconscious disagreed, odds were it was right and I was wrong. So these days I just go with the flow.

(Well not always, sometimes I've a deadline for getting something done _now_, even if the price of that is producing an unmaintainable crock. Then the technique I use is to write down a list of subtasks, do the _easiest_ one first and cross it off, then the second easiest and so on.)

So, if you find yourself only spending 10 hours in a week actually writing code (due to internal block rather than external interruption) it might be worth asking yourself whether the other 30 hours were spent so unproductively after all.

(Since political comments appear to be allowed in this forum, I will also add one reply to the ones people have posted above: siding with your deadly enemies against your friends is one of the most peculiarly contemptible things human beings can do.)

- Russell

Russell Wallace
Tuesday, January 15, 2002

I found out about this years ago, and you are absolutely right. It has become my resolution to find a solution to this problem, and I think I have found one.

It all happened when I stopped to think about the whole process. I thought, what would happen if my day was divided into two jobs? Would the same process repeat itself twice?

Lately, I have actually tried it, and it looks like it simply works. I have my day job, and I get my 2 to 4 hours of productivity, usually either early morning (when nobody's here to interrupt me, no phone calls, no bosses), or late evening, for the same reasons.

Then I get home, and work on my personal projects, and it starts again - I read email, browse the web a bit, make some food, prepare a drink or two (Something fruity if possible), and then get to work, and once I get to work, I can get 4 to 5 hours of productivity! It amaze again and again, every time it happens. I just sit there in silence, and work like a robot.

Hope this provides some additional insight :-)

Loved the article and the honesty,

          Aric

Aric Fedida
Thursday, January 17, 2002

For me, the problem isn't just that I don't want to get to work, it's also that the distracting activities (email, surfing, games) are hypnotic -- I wake up hours later and think, what have I been *doing*?

If that's what you're running into, the best solution I've found is to look away from the screen, get up, and walk around, and don't sit back down until you have in mind something that you actually want to do.

John McIntosh
Saturday, January 19, 2002

On journaling:
My most efficient week as an independent contractor was the week that Dan Pink asked me to track every half-hour of my time as research for his book 'Free Agent Nation'  ( www.freeagentnation.com ).  I didn't want to write down that I played solitaire for an hour, so I worked instead.  So now I have a pad of blank time-sheets sitting around here somewhere and when I feel really stuck, I start recording how I'm spending my time.  It helps me get back on track.

Sometimes it helps to set a little contest deadline for myself: "Let's see if I can get this code working by 2:00".

On billing:
I'm an independent contractor, and I too, used to bill only my 'in the zone' hours.  One contractor I know bills 'employee hours' - the kind of hours he would be working if he was an employee at the company site (including the sitting-and-thinking-time or water-cooler-time). 

Ink Burbey
Friday, February 01, 2002

Another fascinating article and many interesting insights from the gang. I too get stuck & get guilty over being stuck. I appreciate the many suggestions.

I've had good luck with the 2x2 grid way of dividing tasks (urgent & important, non-urgent important, urgent & unimportant, non-urgent & unimportant) both for deciding what I should be focusing on and as a place to write down a potential distraction so I can do it later instead of now.

I also recommend RSIGuard rest reminder software to get me up from my desk. It breaks me out of non-essential activities (e.g. surfing, instant messaging) as well as saving my health when I do get into the groove and don't realize I've been typing frenetically for an hour and my arms are starting to hurt. (It's available from www.rsiguard.com as you might expect).

Dinah Sanders
Monday, February 04, 2002

I have my own experience to share.  It was my second job out of college, writing software for a large embedded telecom application in a department that, over my two years on the project, grew from 30 engineers to 60 (that's not counting managers and support staff).  Near the end of my term there I experienced the worst case of software writer's block that I ever experienced.  I'd come in to work, settle in at my desk in front of my terminal and ... draw a complete blank.  Absolutely nothing would "flow".

Now I have a pretty strong work ethic.  I believe in giving value in return for a paycheck so naturally I started beating myself up, psychologically speaking. "What's up with this?? What's wrong? Get your butt in gear!"  I tried taking breaks, reading trade journals, taking walks around the campus (this was in the days before the web, and I didn't get much email).  Nothing seemed to help.  I grew  depressed.

After a couple weeks of this, I went to my manager and told him of the situation, and that I didn't know what was causing it. (It's funny, the limits to introspection.)  No problems at home, no life changing events.  He said, "You've got a vacation coming up in a couple weeks. You'll probably be fine when you get back. Don't worry about it."  Well, the couple weeks went by, I took my vacation, had a good time, felt rested, came back to work and ... still nothing.

After a few more days of this, as I was sitting at my terminal one day, it was like there was a small voice inside that said, "It's time to move on. It's time to find another job."  With some reluctance, that's just what I did.

In retrospect, it was the best career move I ever made.  I learned five times more in the next three years at the new job than in the previous five since leaving college.  And I took great satisfaction in the work that I did.

It took me at least a couple years to come up with some explanation for that writer's block episode. Who knows whether it is "the right" explanation (again, limits to introspection), but it's the one that feels most correct.  It consists of three facts: (1) I was very much aware of the product's software quality problems -- in fact many developers complained about it. (2) The quality problems were clearly getting worse over time. Whatever management was doing was not enough. And, here's the kicker, (3) somewhere at a subconscious level I knew that in this large project, with as many developers as we had, that no matter how perfect a job I did on my task, there was nothing I could do to significantly improve the overall quality of the product.

No surprise, looking back, that my next job was with a company that made small telecom products, ones where the software teams were small.  My first project there had a total software staff of two people.  These were projects where a single person could "get their arms around" the entire software for the system.  We wrote the all the device drivers, rolled our own multi-tasking kernels, command line parsers -- everything in these small embedded systems.  We also rolled our own tools -- wrappers for RCS or SCCS, makefile generation, etc.  And the quality, success or failure of the product was very much under our control.

I have had writer's block episodes since then, but I now have more ways of dealing with them, and I have learned a little more about myself to help me deal with with them -- including being able to decide more proactively when it is time to move on.

Kurt Luoto
Wednesday, February 13, 2002

I liked Joel's story.  I'm old too, almost as old and wise as Joel. 

I remember working at firms where getting one days solid coding out of five put me into the elite category.  Sort of 20% utilisation.  Even the best 'body shops' struggle to get more than than 70% billable hours out of their staff.

And, of course, 25% of <insert your name here> hours are worth <insert multiplier here> hours of somebody elses hours.

DON'T KICK YOURSELVES.

All of this is really the fault of your managers/directors.VPs/architects/etc.

These people should be able to:
- keep your work real
- apportion the work in meaningful segments
- hound you
- make you love them
- and generally make your problems go away

And of course, the vast majority can not do this for you, because they simply are not suited for their executive roles, and they can not read.

Read "Deadline" by Tom DeMarco.

Software is easier than ever before, because everybody has already made lots and lots of mistakes, and everybody has already published all the mistakes they have made.

They have also published all the good ideas they have ever had.

All you need to do is read, talk, learn and code.

Easy, peasy.  Stop moaning.  You're all in charge of your own destinies.

richard
Thursday, March 07, 2002

Hello!

This is my first message to this board.

I am a Masters student at a not-so-reputed-but-not-bad-enough-to-make-a-big-hit University. I am doing my Summer Internship in a big company and there have been days similar to what Joel writes.

Frankly speaking, Exactly the same!

The only difference is that this is the beginning of my career and hence such days freak me out completely. The confidence level drops tremendously and sometimes I begin to doubt my existence in this field.

I am happy to read this article not because it gives me an excuse to continue wasting time, but it does give me a reason to "think" that "the time wasted is wasted". I can "still plan" and go ahead.

I have my full appreciation for this article in particular and other articles in general.

I am reading all the articles in the archive!

Best,
Nitin

Nitin.
Friday, July 05, 2002

Hi there!

I'm currently in a 'geek block', too.  I sometimes have problems getting out of it, but most of the time a couple of things work for me.

1) Music. Listen to something really fast. Get revved up. Go.  My co-workers think that I'm nuts wearing those ridiculous big headphones and apperently having a good time, but it certainly gets me into 'it'.
2) Watering hole. Get a cup of coffee. Listen to the problems of your  pals. Try really to solve them. If I focus onto a completely different problem, I easily get into 'the mood'. Face it, if you spend a couple of months on the same project, you'll get ultimately bored. Without noticing it. Distract yourself with something related.
3) Find an external pacemaker. There is usually somebody in your team who is in a  coding frenzy.  Try to catch up. I like working in teams of two for this reason.
4) Browse the web for new technology on the web. Now this is a biggie. If I have problems getting into 'it', I redirect my browsing efforts onto some tekkie web page.  The Java Sun homepage usually does the trick. Read the forums. Try to answer some questions. Look for new APIs. Check the Apache Jakarta homepage.  Something has to interest you.  Find that energy and channel it into your task. This method also keeps you up to date, which never is bad.
5) Order your taks. Write down a TODO list. Priorise stuff you have to get done. Find out when you have to get it done. Get scared. Primal fear is a very good incentive to get something done.
6) DON'T START THE DAY WITH EMAIL AND BROWSING. If I immediately start doing my thing, I usually  keep going  nine to five.  If you missed some announcement for YAIM(yet another important meeting), they'll come and get you if you are really wanted. If they find you desperately hammering your keyboard, they'll forgive you. Wether this keeps you employed is up to company policy.

Now I'm in the mood to get things done. Sorry to keep you from work, but it helped me a great deal :)

Bjoern

Bjoern-Falko Andreas
Wednesday, July 24, 2002

Loved this article, too...and spend a lotta time reading all the comments.

I'd just like to know how how people in other jobs manage their port of "coding block"....i stumbled across a review of this "managing einsteins" book once, and somebody pointed out that all of us geeks should simply stop thinking we were something special, and start working like everybody else does.
Somehow, i disagree with that point of view - i KNOW that my "flights to sydney" (flow-induced all-nighters) are more productive than a month worth of 9 to 5 coding sessions (even though everyone says otherwise)...but  there must be something in-between. Accountants, office-clerks and other mere mortals must have been  facing the same problem for centuries - how do they manage actually doing useful stuff roughly 50% of their time?

ah well....it's 6am and i'm still looking for the entrance to the zone. I know it's there, somewhere...

are there any managers reading this? what do youi people think about coders reading /. 805 of the time?

Moritz von Schweinitz
Monday, July 29, 2002

Loved this piece, I'm in one of those moment you describe: check email, read web (this pages), decide to work but immediately check mail...

Let's see if now I'm able to fire the editor and fix those programs...

Marco
Tuesday, November 19, 2002

What we need to do is go back to a single-tasking OS, and take away internet connectivity. I swear that would help.

The easiest way to complete many tasks is to finish each one in turn.

Will

Will Macdonald
Wednesday, March 26, 2003

Toda Raba for this article.

Daniel Jacoby
Wednesday, May 14, 2003

Solution: read through all these replies.

I was in a slump and I started reading through all these replies. By the time I had got near to 75% mark... I was so angry at myself for being in such a whiny group that I started to do my work.

Thanx guys.

PS: The "slump" should not really extend to more than a day. If it does you have a mix or one of the following problems:
1. You really dislike your job.
2. Havent had a vacation in a long while ( more than one year).
3. Your non-work-life sucks or doesnt exist.

PPS: Slacking is a genuwhine problem, fix it.

Anonymoue Coward
Thursday, May 22, 2003

I'm in doubt about a density of the metallic hidrogenium.
However if so, then much more harder will be to keep this disk under pressure and with nesessary temperature... Unless the leader is Vichnu himself or so :)

Edouard Chevtchouk
Friday, July 11, 2003

Thank you for that one, it was not only fun reading, but also pleasing to see that there are still people around who are not trapped by the work harder not smarter principle.

Michael S.
Friday, September 19, 2003

Aric fedida of isreal is a child porn spammer watch dealing with that guy

hector
Tuesday, October 14, 2003

Sweet...
You can't guess how nice it is to hear I'm not the only one with these troubles.

Sometimes you REALLY feel bad about not doing a single useful thing. Then... BOOM!
Something just clicks and you find yourselfes not gong to bed at all this night either.


I've often wondered why it's so easy to actually stay up coding/thinking/tweaking for, litterary, days with just tea and some sandwiches to keep you going while sometimes it's a struggle-for-your-life to just get your a** of the wagon and get going the day before.

Ah well... better stop this 'reading the web' and 'fire up the damn editor'. :D

Sam Persson
Sunday, October 19, 2003

You're like Jesus.

Nathan
Wednesday, February 04, 2004

One reply to this article mentioned how most of the 80 hour work week is water cooler talk, and email. For some that might be true. However, eventhough I suffer from "coder's block", I have to disagree with that statement.

Working in games, I've had to actually pull 80+ hour work weeks off. It only takes a few of these in a row to make you realize what makes you productive.

Having a full list of things I need to get done in the near future is what keeps me productive. Having a notepad filled with ideas/solutions seems to help even when there isn't a deadline on the horizon.

Oh yeah, great article! ;)

Jeremy Carver
Wednesday, June 16, 2004

amazing, makes me feel much better to know I am not the only one with this problem. now I can have a beer guilt free. :-)

SPastic PLastic the chronic
Wednesday, June 16, 2004

I believe that the productivity problem stems from the fact that programming is actually a creative act -- you have to be inspired to do it.  A programmer is actually building a thought-model by writing cryptic lines of code on a computer screen. Withput inspiration, a pretty difficult task!

Jeff Ferguson
Thursday, June 17, 2004

*  Recent Topics

*  Fog Creek Home