From a programming standpoint, anyway. The wrist of my dominant hand is carpal-tunnel achey, and my lap is warmer than if the cat had parked there for the day. But I think I've written more code in one day than I have in weeks. Of course, it's not a fair comparison, because the code's being done on my terms and my schedule.
I believe I've mentioned how non-programmers would be shocked at the relatively small fraction of time that programmers actually spend writing code. Quite a lot of the time, you (meaning the programmer) are just trying to figure out what, exactly, the final product's supposed to do. And that's even (sometimes especially) when you're working from specifications. But in today's case, I'm the adoptive mother of the code I'm trying to clone (and improve) in a more accommodating language. Thus, I don't have to step outside my own head, much less workstation, to figure out what needs to be done.
But for all that I understand that working from my couch vs. my pod-cube isn't even an apples-to-pineapples comparison, it does drive home the room for improvement in the way programmers and those who ride herd on them can manage interruptions. A few concrete suggestions:
- Meetings should be held in the early or late part of the workday.
- Change requests should be made via a bug-tracking system, not via email, phone, IM, or in-person.
- Senior technical staff (who are still required to go heads-down in design, development, or what-have-you) should establish scheduled blocks of the day when they will be responsible for troubleshooting, promoting code, etc., so as to free up the others--and also to discourage new/inexperienced staff from latching onto a single person.
- Setbacks to development created by poor communication should be noted for personnel reviews, in lieu of focusing solely on buzzword bingo.
- Time-wasters, politicizers, and developers who focus on finding problems to the exclusion of solving them should be fired as humanely and quickly as possible after hire.
- Telephone systems should be enabled with caller ID, even for inter- and intra-office calls, and front-line staff empowered to screen out the above time-wasters.
- Team leads and middle management should create the illusion that all decisions go through them, so as to forestall upper management from calling up their direct reports and demanding features/fixes ahead of schedule.
- And, for pete's sake, if nothing appreciable has been accomplished since the last status meeting, cancelling its calendar appointment with a note to that effect is a heck of a lot more efficient than dragging everyone into the same meeting to tell them that they don't need to be there. How tough is that to understand?!
It's sad, really, the lengths that people in some offices have to go to simply to pitch their work out the door on time. I've even worked in a situation where we had to set up a "buddy system" to call each other's extensions when the local time-waster showed up to revel in the sound of his own voice. Sadder yet, I consider myself rather fortunate in the overall quality of folks I've called co-workers.
And it's also incumbent upon programmers to agitate for less time-wasting. Many perfectly reasonable measures don't cost a thin dime. They just take vigilance and a willingness to buck the corporate feudal system. But in this case, the recession that Those Who Know Best like to blame for all manner of suckitude can be an asset. After all warm & fuzzy pretenses to continuous improvement and scalability and sustainability and yadayadayada have been dropped in the name of keeping the wolf from from the door, it's pretty hard for them to argue against efficiency, particularly the kind that doesn't cost anything. At least, not anything more than the perogatives of pecking-order. Some will argue anyway, but they know that you know that it's complete claptrap. Which is your cue to spruce up your resume. Because you don't need to go down with that ship--much less swim with the rats who will be abandoning it when that happens.