Friday, November 09, 2012

The Myth of The All-nighter

All-nighters, those storied tales of spending all night in the computer lab or the library trying to meet a school deadline, came up in a Facebook conversation the other day. I remember those days myself. Something of a badge of honor – the ability to work all night long. In hindsight it was not always so smart. At least not when trying to meet a school deadline. It showed little more than poor planning in most cases.

Oh for sure there were fun exceptions. I spent more than a few nights one semester staying up all night playing chess with a friend. It did wonders for my game which is no where near as good today as it was then. And then there were the nights we spent in the computer lab trying to create computer art. We could only get access to the computer with the drum plotter (hey it was a long time ago) at night and that thing was slow. So it was all night sometimes or nothing. But for school deadlines? Not such a good idea. I don’t think it is a good idea for professionals either. More on that in a moment.

The women in my college computer courses had a curfew. I said it was a long time ago. All nighters in the computer lab were not something they could do. And yet, they managed to get all their labs done in plenty of time. In fact few of them were even in the lab the night before a project was due. What was up with that? I think the magic is called planning. They, and some of the guys, worked to a plan and didn’t try to cram everything in to one night before the project was due. And those people seemed to get good grades and go on to great careers. Imagine that.

The all-nighter is part of the mythos of the macho programmer able to work long hours to meet impossible deadlines. It turns a lot of people off. Rightly so I think. I remember one person I worked with who was working impossible hours. Day in and day out he was putting in 18 to 20 hour days. I asked him if he had ever heard of the law of diminishing returns. He told me that he didn’t have that problem. Then one day we got to work to find out that he had destroyed the development disk and the most recent backup of the same. We lost a lot of time and our manager finally ordered him to take some time off and rest. It turns out he was human after all.

I concluded some years ago that if developers were working more than a normal work day (roughly defined as 8 hours) on a regular basis that either they or their manager were incompetent. I got some push back on that. People saying that sometimes there are good reasons for crazy deadlines and working long hours. And I agree. What I don’t think is that should be the norm. A competent manager with competent professionals will set reasonable deadlines that can be meet using reasonable working hours. If deadlines can’t be meet in that sort of fashion what has happened? Have the circumstances (specifications perhaps) changed or is the developer not up to the task or did the manager set unreasonable deadlines? Someone messed up.

In the school situation we have either a student who is not up to the task or and instructor who has set a bad deadline. Where a project is being used for the first time an instructor may honestly miscalculate the time required for a reasonable student to complete the task. For a project that has been used before this is less likely. So if the deadline is reasonable hitting a deadline is the student’s responsibility. one of the things we hope a student will learn in school is how to schedule themselves and estimate the effort for various tasks. In most cases a student all-nighter is an example of either a failure to schedule correctly or a failure to estimate the effort a project will take. In either case this is not something we should treat as heroic.

Treating the all-nighter as heroic or as an important rite of passage sends a poor message to others. “Pulling an all-nighter” does not make you a rock star. It means you goofed. Never having to pull an all-nighter does not make you less a student or less a professional. It makes you more a professional and more of a student. The myth of the macho all-nighter is not and should not be a positive image.

Or am I off base here? And if so why?


BJ Wishinsky said...

Ah, memories ... The job interview where a former colleague warned me: "This looks like a beanbag chair in my cube, but it's not. It's a bed. I thought you might want to know that." The story he told me later about one programmer there who pulled so many all-nighters that he ended up in the hospital hallucinating. The architect who pulled an unnecessary all-nighter and had to be sent home after team members complained he was checking in bad code. He was genuinely surprised to be told that he was breaking rather than fixing things.

As much as any other creative problem-solver, I love that feeling of flow when I'm deeply engrossed in my work and lose all awareness of time. The issue here is more the tech culture that often places higher value on the emergency fire-fighters than on the ones who (equally heroically, in my book) prevent fires from starting. I think you're right on the money.

Anonymous said...

But it also shows that in a pinch, you can bust it and finish the job. Proud of my all nighters, they helped define me, more glad I do not do them anymore.

Charley Williams said...

Your discussion of the all-nighter assumes it's happening the night before a deadline. In those cases, I agree it could usually be avoided with better planning.

But... I also do all-nighters at other times, usually because I'm working on complicated problems and I need long UNINTERRUPTED blocks of time to think clearly. And if your office is like mine, you know it can be hard to get more than 10-15 minutes of continuous thinking time during the work day, without phone calls, support issues, people stopping by to ask questions or socialize, all of which prevent you from giving any deep thought to your work.

So from time to time -- maybe a handful of nights a year -- I actually CHOOSE to do an all-nighter, just to get several hours of quiet and solitude to come up with a good design to a difficult problem.