Roy Tang

Programmer, engineer, scientist, critic, gamer, dreamer, and kid-at-heart.

Blog Notes Photos Links Archives About

Yeah, I haven’t been posting lately. I still have a lot of thoughts running around my head, and often throughout the day I find myself thinking, “I should post an entry about this.” But at the end of the day, I’m tired and I’m exhausted from thinking about two hundred different issues and juggling twenty different priorities, so I don’t post about it. I note it somewhere and sooner or later it becomes irrelevant and I forget why I wanted to post it in the first place.

I remarked to one of my coworkers that I often find myself remembering dozens of things in my head simultaneously and he of course reminded me of the popular notion that human beings can only remember seven things at any one time. It’s the concept of limitation in humans’ short-term memory or RAM.

This is probably mostly true, but as I’ve gotten more and more used to this multitasking mode of mine, I’ve found that the seven most important things stay on top, but the rest don’t really disappear. They fall away for a while, swallowed into your subconscious, only to rear their ugly head again later once you have some free RAM again.

My current role at work forces me to be locked in this mode for most of the day. As one of the senior technical guys, I typically field dozens of technical questions from junior developers during a single day and when somebody’s problem can’t be solved quickly I physically get up from my desk and go walk them through it. And that’s just the queries regarding concerns outside my own project. Aside from that I often have to worry about scheduling, technical risks, physical designs and of course the occasional invitation to go down and buy some food.

Developer multitasking is generally looked-down upon in the tech world I know; people are encouraged to work directly on one task at a time to give them focus. Maybe most people have some short period of time at the start of the day to reply to emails and address issues raised by other people. I wish I could have that sort of luxury, but it seems to me that every issue or problem raised to me needs to be resolved five minutes ago. People can’t continue coding unless I help them. Schedules can’t be finalized until I give my input. Developers can’t write program specifications until I hand in the database design. I literally have dozens of dependencies.

So, how do I cope? Simple, I cope the only way I know how. By instinct. This would be a terrifying revelation to anyone I actually work with, but during working hours I’m typically buried under so many issues, my only recourse is to dismiss as many as I can as quickly as possible, and that requires a whole lot of working from my gut.

Luckily, my gut has gotten really good at this. But I’m pretty sure all the people who are incredibly organized and have moleskin notebooks and stuff would tear their hair at such an unorganized method (or is it madness?). And I know, I’m trying to get organized, I really am. I have to-do lists, a couple of dozen that tell me what I should be doing. I have log files that theoretically tell me what I’ve been doing all day. I try to turn off my email client sometimes, even though I will inevitably have people coming up to me and asking if I’d seen the mail they just sent.

But I can’t help it. That’s the role I play. People expect me to help them, to provide them guidance. I’ve projected myself as being open to consultations, and the company and all of my coworkers appreciate that. And even then I still have my own tasks to perform. I’m considering suggesting to the company that I never be considered working on a project for more than a 50% allocation. The other 50% should be allocated to my on-the-fly firefighting tasks.

At the end of the day, especially during the past couple of weeks, I’ve found myself mentally exhausted. I have a very easy time separating work from personal life, because by the time I step into the elevator after logging out I’m already too tired to even think about work issues.

Not that I have a bad job, mind you. It’s awesome. But I guess sometimes I toss myself into it a bit too much. When my personal load is light, I can easily handle everything tossed at me and people go “You’re awesome!” and I nod and address the next crisis. But when my load is heavy, well, then things really get exciting.

I forgot what my point was now, as I unconsciously launched into a narrative of how my typical day goes. I’m still getting by with my gut, but I know from experience that gut instinct only gets you so far. Sooner or later, something’s gonna give and I’ll need to find some way to make sure I can carry this level of awesome-ness to the next level.

Oh, and yeah I changed layouts.

Posted by under post at #Software Development
Also on: blogger / 3 / 860 words

See Also


Ei Roy,

While it's kewl that you can handle the stress of fielding all those "help me" calls, that's not a healthy company practice…

Well, it's certainly got good and bad going for it. It's good because everyone realizes how utterly indispensable you are, so you'll never be fired. Other stuff too.

I think tho' that there's more bad than good in it… There's the stress, which is one thing. And there's also the probability that this role you have assumed will make the bosses pass you over for promotions because you'll be considered too valuable where you are for doing stuff that's not formally yours to do (unless it's really part of your job description to be techno fire fighter).

Anyway, nothing, just wasting time after being flabbergasted by C. Bolastig's forward to the list.

Something you might want to do eventually is to formalize the firefighting thing by having people do it through a standard procedure instead of actively pinging your person with stuff. Like, maybe if someone has a problem they can't work through on their own, they should have to fill out a template e-mail form about it to send to you so you can quickly go over it or something. I'm sure somebody in some Japanese company has a well structured process for doing this kind of technical advising instead of you having to go through many that you have to gut it out =P

I mean, you can manage the load now, but if your company ever expands…

Eh, I'm fine.

I wrote this towards the end of a particularly heavy week. While what I do everyday closely approximates what I wrote here, it seldom reaches the stress levels that the essay could imply.

In the case of promotions, your concern is unneeded, as there's really no such thing as a promotion in our company which has a flat hierarchy thingy. Besides, one of my roles in the current project is Technical Lead, which means that it actually is my job to handle technical questions within the project.

The fact that I also handle a good number of technical concerns from outside the project is a result of two concepts: mentoring and subject experts; I don't know how it works in other industries, but typically in software, senior developers are expected to mentor junior developers to help them gain experience/knowledge. And there's a particular reporting tool we use where I'm considered as the sole "subject expert" on its' use, so almost all technical questions concerning this tool are handled by me.

There are formal procedures for pretty much everything, including sending clarifications, and most people will always ask if I'm busy before sending something my way. But I guess it's actually my own preference to answer as many clarifs as quickly as I can. I'm also pretty sure that addressing each issue as soon as it possibly can is the best way to go; (This is one of the overriding philosophies in the Getting Things Done methodology esposed by David Allen) If I let the questions pile up I'd have a long list of them which would be daunting to go through.

It's not like I'm doing ten thousand things at once; I at least know how to sequence my tasks. If I'm in the middle of something which requires 100% of my concentration, I will typically ignore most incoming requests until I can get to some break point which allows me to successfully shift gears. And in some cases I will even welcome the distraction; somehow my mind thinks better after I have temporarily focused on some other problem.

The firefighting thing takes up 50% of my time at most, and only if I allow it to. I always have the option of saying I don't have time or asking somebody to check it for me.

"I mean, you can manage the load now, but if your company ever expands…"

Note that I never said I was the only one doing this. :D In fact, I think the current practice is scaling pretty-well re: the size of the company. We have roughly 160 people working in technical positions, and I'm one of maybe around 5-8 who can handle these concerns on the same level (or better). About two years ago, there were around 3 such guys to handle concerns for around 80 people.

My current workload levels are more of a problem of lack of senior developers assigned to our project more than anything else, and despite that I still do not normally work overtime. Today was awesome though, with all the work I managed to clear last week, it seems like all the heavy lifting had already been done and most of my day was pretty light :D

As an additional note, it's not even limited to work-related stuff. I think this way even for stuff outside of work.

At any one time I have several personal projects I want to push through with, a lot of stuff I want to try, stuff I want to read, etc.

Now that I think about, the way I handle the work stuff is a lot better than how I handle the non-work stuff. I guess what want out of all of this is a better way to organize my own thinking =p