I was part of a team that just finished a massive project, or rather the first phase. I am in the throws of learning a new life lesson, and was wondering how the other monks faired in similar situations.

I'm sure others have been here. The pressure was on, things were looking a little grim, alot was on the line, and Perl comes to the rescue. A couple of simple scripts and things could proceed. A few head nods, a quick "good job", and things move on, with much less anxiety. Then something else rears its ugly head, and yet again, a quick 15-30 minutes and things roll on. This time a few more people notice, a few more comments, but you do your best to just do your job and contribute to the team effort. Wash, rinse, repeat for a few weeks.

Towards the end of the project you realize something. You went from having a very small, comfortable scope of work, to being part of decisions left and right. People are turning to you and listening to what you say in a new way. Your word has weight, for good or ill. Some are expecting magic from you on a regular basis. While for you its simply what you do (and not particularly difficult at that), for them its something amazing and worth its weight in gold. Everyone seems to want a piece of your time, and for you to be part of their mini-domain within the project. You get the distinct feeling you are coming apart at the seams, due to everyone pulling in different directions.

So where have other monks been within a situation like this, and how did they cope. I'm a simple geek. The things I did were fairly trivial text processing with Perl, and it was really Perl that saved the day. I'm not sure I like the attention I'm now receiving, but don't want to offend people at this point nor block possible improvements in cash flow. I also don't have enough time in the day to be part of everything that people would like me to be part of. At least, not as a geek/sysadmin/programmer, maybe as a manager type, but that is most certainly not the route I want to take.

All I can think of is the commercial back from the dot bomb era. A bunch of people huddled around a monitor and a counter ticks to one, and they sigh. Counter hits 100 and they cheer and pop the cork off a bottle to start the party. Then it hits 1,000 and they get a glazed and confused look, then 10,000 and the groaning ensues as people scramble to get a plan together to deal with the onslaught of business. What advice can be shared with a poor monk, to help defer and/or deal with some of the sudden success he has achieved?

That sounds stressful, but you might as well get used to it -- the price of being competent is that responsibility accumulates around you.

One suggestion: keep track of the work you've done and what you have been asked to do, and make that record public.

This could be an RT system or simple database, or it could just be a clipboard on your desk with boxes to write in the name of each task, who asked you to work on it, and how much time you've spent on it so far.

This serves a number of purposes:

It acts as a paper trail, so that if your supervisor asks you at the end of the month "what have you been spending your time on" you have something to show them, rather than just waving your hands.

It makes your work queue visible to people who are making requests, so that if someone asks you "could you get this done by tomorrow" you can point to the list and say "yes, but only by making all of these people wait longer for the things they've already asked me for."

It helps you get a plausible sense of how much work you can get done each week, so that you can give people more realistic estimates of when you will finish their task.

It's not a complete solution, but it can help provide a little structural support as you adjust to being in demand.

I second the idea of keeping a written-down trail of what you've been spending your time on. Another important reason to keep such a list is Annual Review Time. Your least favorite time of the year, most likely...But believe me, your audit trail of what you've been doing will be INVALUABLE when review time comes around.

Talk to your manager about being pulled in too many directions. That is priority #1. Maybe, you need your job priorities redefined. Maybe, you need someone to manage the requests on your time. I know I've been in a similar situation. "Rob, I need a little something-something to do XYZ." A month later and someone says in staff meeting "Rob owns the XYZ-ABCDRGFLadsdlkfEFLKJW process" and it's consuming 40% of my time and my manager has no idea where my time is going.

This is especially important if you're a contractor, as I am. Your manager is (probably) paying for you to work on a specific project. If, as in my case, your project is cancelled / rescheduled, your contract will be shortened (as mine was), even if you're reducing cycletime by at least 50% in every other part of the process (as I have done).

Also, you need to have some time to regroup and refactor your code. Otherwise, you will be unable to deal with all the one-offs.

Also, you need your customers (cause, that's what they all are) to follow process and give you usable specs. I made that mistake and am now in the position of handing over code that is, in my words, "completely unreadable and unmaintable, even by me". Scopecreep is a horrible beast.

------
We are the carpenters and bricklayers of the Information Age.

The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

... strings and arrays will suffice. As they are easily available as native data types in any sane language, ... - blokhead, speaking on evolutionary algorithms

Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

I see two things which will help without involving a step backwards for you.

Use your exposure to learn the whole project. Take a a few questions to the project manager and design lead, explaining how knowing more will help. That will ease your confusion and assist your work. It also sets the stage for,

Ask for an assistant somebody to train to do what you're doing. Pick the person in advance and get their willingness. Teach them perl.

Talk to people frankly, it is much better than suffering quietly, at least most of the time.

Lots of people including myself, keep thinking there are things that are taboo, talk about it might be offensive to others, but that’s actually not true. Talk to people openly, but present your thought in an organized way and a way shows your good will, people will listen to you.

On the other hand, if you could help others in more than one way, not just coding, and it does not bug you too much. It might be a good thing to do …Your decision.

The problem I have/had was it was a lot of good karma, from farther up the food chain than I am used to. I am not a contractor, but a full time employee. I had already talked to the people who are in control, about my whole resource issue. It's on them on how to best utilize my skillsets. It looks like things will change for me, its just a matter of how.

I was hoping for more feedback on mainly how to go on in my normal workspace, now that things have changed for me. I have become out of touch with the majority of the coworkers in my group. I've always attempted to remain close to my peers, if for no other reason than being aware of whats going on on the network. Unfortunatly this is no longer the case. I'm slightly frustrated by the fact of backing the new project, I have effectively distanced myself, and moved to the proverbial "them" group. I think it may be time for an official change of positions, and again thats slightly frustrating. I guess I was hoping to slip back into the stream and go on being mostly unnoticed and that just doesn't seem to be the case.

I would imagine it would be different in a contractor type position, as when the project is over, so is the job for the most part. You might come back for maintenance, might not. With a full time position its not so easy, or at least it doesn't seem so at this point. Life will go on and I'll figure it out, I was just hoping for some deeper wisdom, in regards to maintaining in the current workspace. Looking at my original post, that didn't come across, my bad.

Ah, you are a victim of your own success, which is a problem not uncommon to those who are competent at something. Far too often that results in people being pigeon-holed into one particular job, type-cast in a sense. Now, for some that's just great. However, this does not seem to be the case for you, as you are getting exposure, something that many want and find it hard to get. However, once the genie is out of the bottle it can be hard to get it back in.

It's tough being labled "one of them", however, you may want to consider it to be an opportunity rather than a burden. Organizations can suffer greatly from separation between management and those who actually do the work. It appears to me that you may be in a position to a lot of good things for your company as a leader, should you deside to do so.

If you want to just blend back into the woodwork, then time will probably take care of things. You may be getting a lot of attention now, but if you can successfully fend off the requests imposed on you by others (other than your manager) then eventually they will look elsewhere. People often have short memories and tech heros fade fast when they are not continually performing super-human feats of magic. I know you do not see what you did in those terms but the non-tech types often do.

IMHO, you should consider very carefully your course of action here. You have stumbled into something that many often wish they could obtain... visibility to the muckety-mucks.

I guess I was hoping to slip back into the stream and go on being mostly unnoticed and that just doesn't seem to be the case.

Good luck. In many organizations, once you've risen to the level of "competent", it's all over. You can't go back. You have to either find a faraway corner to go hide in for a long time, or you have to pack your bags and move to a company that doesn't yet know that you're competent.

I was just hoping for some deeper wisdom, in regards to maintaining in the current workspace.

There are several "tricks" for managing your career. One is to realize that if you draw lines around what you enjoy doing, what you think you're good at doing, and what the people who pay you think you're good at, you get a Venn diagram. There might be overlap there, or there might not. As you choose what you get involved in, you may find that you'll be happier when there's a lot of overlap. When there's not a lot of overlap, you're going to get pulled in directions you don't want to go.

Don't say it(at least not often), but be aware of the saying, "lack of planning on your part is not an emergency on mine."

Learn to set limits, but occasionally push them when necessary.

Don't leap on each question as a new challenge. Step back and think, "what else do I have going on now?" I know it's too too easy to do, but it's a quick way to become swamped.

Spread the wealth, learn to teach. These simple techniques that you elude to, take some promising initiate in your organization asside and make sure that they understand how they work. Go over the 'nuts and bolts'. Develop them into a resource onto which tasks can be offloaded. Invest a few hours of teaching today, to save a few days of work later.

Not a skill, but keep duplicate copies of Programming Perl and The Perl Cookbook on your desk. When someone comes around, "can you do X?", hand them a copy and say "X is in here, try this, and come back later and come back if you can't make it work." (make sure your name is on the side of the book)

Woo! Excellent, excellent advice. I wish I had it when
I found myself in that position.

When people listen to you, you're likely to suddenly
find yourself in middle of political battles as power
above you is sought from below you.
You're also going to be expected to speak on the behalf
of people below you. I can't
say enough good things about "The Mythical Man Month",
especially for the latter case. Politics I've had the
hardest time with in the past. A few tips (YMMV):

Don't let people mistakenly think that you're a threat to them if you're not. Show them soft underbelly - be submissive - actively work to calm their fears. People hate change and they hate losing control.

Know your friends. One isn't enough - you need redundancy. They have their own web of interests,
and with three or more, you get parity.

Send spies. People suck. It is a matter of time before
someone else desides that you stand between them and
fame and glory. When you get power because you're
worthy of it, you're an extreme rarity. Most people get
it because they're good at politics. I know - we're
bad at politics, they're bad at everything else -
life is strange. The only answer is not to fall too
easily when a political attack is made.

When attacked, have documentation - written,
witnesses, edicts from above, track records. This takes
time, and it robs you of time better spent on projects,
but it is the price of being a router instead of a node.
Or a firewall rather than a node. Know what your
attacker is afraid of - the truth that can mortally
wound them - and use it against them if they don't
back down quickly and quietly.

Those above you don't know who to listen to, but they
tend not to listen to the people that seem to want to
be listened to, so don't try too hard when taking people
out. Make it look like an accident. Use henchmen to
blow your attackers covers, or just happen to stumble
on the tip of iceberg of their undoing at a calculated
moment, so they have a chance to backdown before it
gets bloody. The point of this is that you don't want
to be the bad guy.

Don't scapegoat people, don't block people below
you from advancing, don't create vendettas,
don't try to take out people who are above you
(unless they are doing something illegal), and don't
try to make a fortune off of your company. These are
all things that people routinely do, but you're above
that - you have real abilities. People who do this
are frauds, who get in, rape the company before they're
exposed, and expected to be run afoul of politics
sooner or later.

Rise technically as well as politically - go see
Damian Conway and the other perl greats speak. Read
a bit about project management - project management is
very, very hard. Learn how objects are really meant to
be used - not the 5 cent, cheezeball, dumbed down
perl conceptualization of objects. Learn algorithm
theory if you don't already. If people are going to be
promoting you to your level of incompetency, fight
back - become more competent.

Hire a mentor. If you're ever given a chance, hire
an employee who has been around the block more than you.
Make sure they have a good attitude and a good personality,
though. One of the greatest things that can happen to
any programmer is that they find themselves surrounded
by better programmers who are ready to teach.
It is awe inspiring and humbling, but you'll learn a
lot more a lot quicker than you possibly could any
other way. If you have the chance to engineer this, do
so.

As mentioned, mentor people. Desciples/spies/students
are useful in another way, too - offsetting workload
from yourself. You'll do like was done to you - give
people work beyond what they're really capable of.
This is how things work. You can't do everything, so
this is the only alternative. By giving it to people
you know and trust, you can identify when they're in
over their head, and speak openly about the fact that
they have to raise to the challenge. When doing this,
always let people out if they decide they don't want
the respobility - and I mean let them out graciously.
Someone else will want a pass at it. The ultimate
state to be in is to have a hand chosen, hand trained
crop of talent that you can trust with anything.
It is like paid retirement. No, I've never accomplished
this, but I've known people who have. Perhaps a better
analogy is being the CEO of a company within a company.
This goes against the natural instinct of a programmer
to keep thier hands in as many things as possible, but
dire consequences will befall you if you ignore this
advice and try to do it all.

While I really do mean this stuff, this note was
written in fun - you should have fun as a programmer
who isn't a bottom feeder. If you can't have fun, what
good is your job? Politics doesn't suck so bad when
you see it for what it is and treat it like the stupid
but unavoidable waste of time that it is.

I've been at my current job for just over 4 years now, but when I entered the company I knew a lot more than most of the other techies around there and started showing them how they could do some of the stuff they were doing different and better. Some picked up on it, while others plainly balked at my ways, not even wanting to try them out because there ego's got in the way. This behaviour got me into the most rewarding geek job the company had for me. Rebuild an entire portal site using hardware of my choice (mostly) and i could write in any language I thought best suited for the job.

This came with complications, I had to solely write a portal site in 4 months, and I had people coming to me
asking questions about 10 times day. After a month or so, I started to buckle under the pressure of both the portal deadline and wanting to answer everyones questions. So I started to say 'Sorry, but I can't help' a LOT and I put on eye-blinders to a lot of stuff going wrong in other projects because I had my own to worry about.

This 'No' and 'ignoring' attitude got me back to doing my thing and after a while all I had to worry about was producing good code. Looking back now, that was a Bad Thing (tm). Other techies were trying out new things, and some bad practices. Some of those bad things grew into bad habits.

About a year ago I started noticing some big deficiencies and I started doing again what I did when I joined the company, help and teach people, trying to get people from the bad habits into the good things. The management hadn't forgotten about me being 'competent' and viewed this development as a good thing. Currently on average I spend 12 hours a week helping/teaching people. 8 hours of optimizing / bug-fixing and 20 hours on
development.

Even though I would prefer cranking out code 40 hours a week in a team with members who are my equal or ( better yet) better than me, what I currently do is more rewarding and helps me sleep at night :P, I never want to slip into the main-stream again.

To the point: Try to find your balance, if people can benefit from your knowledge let them, but don't allow to have more pressure/workload put on you than you can handle. Zaxo's and ptkdb's points were very good.