harriyott.com

Sunday, March 05, 2006

What?! Rupert can't leave! He's the only one who know the SCLABE system!

Which is precisely why he's leaving. Poor Rupert has been trying to spend more time with the rest of the .NET team doing cool stuff, but he keeps getting dragged off to fix the old SCLABE* system.

Any time a tweak is required, Rupert's manager gets Rupert to do it, because he's been here the longest, knows it the most, and can fix it the quickest. And he knows exactly why an extra column is added on alternate weekends - a previous customer was having problems with their invoicing, so this was introduced to get round it.

But now Rupert's off, all his manager can think to do is get him to document what he knows about SCLABE. The thing is, Rupert's motivation percentage is equal to the number of days left at the company; today there are 17 days left, so he is 17% motivated. So Rupert adds a table of contents to the document, changes the headers and footers, tweaks "Heading 2" so it has 6pt spacing before and 12pt afterwards. He writes about the objectives of the system, describes the main areas of the system as an overview, and spends the rest of the day trying to get Visio to draw something resembling a diagram of the system.

In other words, he's wasting everyone's time.

To be fair, he's asked what he needs to write, and the answer was "enough for someone else to take over from you". Well, to take over, they need to know what the thing does, right? But that doesn't really help the next guy (who had better not be me) when the next tweak is required. There isn't any documentation that will help. There can't possibly be. Why? Because it isn't Rupert's knowledge that needs to be passed on, it's his experience. And that can't be passed on in a document. I can read a document telling me how to do a backside footplant wallride, but that doesn't mean I understand it, let alone have any success with it.

So what to do? For Rupert's boss, not a lot, except learn for next time. Rupert's experience needs to be passed on, which can only be achieved by showing someone. Although I've never been a manager, if I was stuck managing SCLABE, I would find a volunteer or two (willing or otherwise) to learn from Rupert. When a tweak is required, the volunteer, let's call her Ingrid, would sit at the keyboard, with Rupert next to her. Rupert would tell her how to navigate through the code, what to look for, how to implement the change, how to test it, where to deploy it to, and everything else, without actually doing it himself. Rupert would answer questions, and sometimes withhold information to make sure Ingrid thought about what she was doing. She would either work it out, or have to ask the right questions.

In this way, Ingrid would actually experience the system, and start to understand it. After a few of these sessions, she may be able to fix some things by herself. This would free up Rupert to get on with the cool AJAX stuff. If Rupert spent time with others in the team, then it would seem fair, and people could take turns. If Rupert left, then SCLABE fixes wouldn't be a major trauma, as someone else could do it. Rupert would be less likely to leave anyway, as he's now a confident, successful mentor, and even has time to write some Ruby on skis.


* SCLABE is a fictional legacy system written in COBOL on an AS/400. Rupert is a fictional developer, whose resemblance to anyone you know is the whole point of this exercise.

19 Comments:

Helephant said...

Awesome article with a cool story. :)

March 06, 2006 6:51 PM  
Simon said...

Thankyou, very kind of you to say so. Glad you enjoyed it.

March 06, 2006 9:25 PM  
Shiva said...

Being "Rupert" right now. I am exactly 15% motivated :)
The point of the post is so true, and it is so funny - always the same situation, like no manager ever learns.

Cheers!

July 11, 2006 12:23 PM  
Simon said...

Hi Shiva - sorry to hear that you're in this situation. I have seen it a couple of times, but fortunately I haven't been in it myself. I hope you can get it sorted soon.

July 11, 2006 7:26 PM  
Riley said...

A true story.

In the early 1980s I worked for a then-large data networking company. The company's network used special variations of their node processors to route all traffic.

One day the guy who did virtually all the development and maintenance on the special processors announced he was leaving: He'd received a very handsome offer to go work for a startup company "back East." It was only then that management reconized that the special processor contained a couple of hundred-thousand lines of cryptically commented or uncommented assembly language.

So management hired a stenographer, bought a tape recorder, and had the departing guru sit in a conference room with his feet on the table (I saw him doing it) and free associate everything he thought someone ought to know about the special networking processors. The stenographer than took her notes and the tape recordings and transcribed them.

Of course the resulting "documentation" was no more than semi-impressionstic word painting of the processes involved.

About two years later I was working for a different company with a product that distributed its routing intelligence. Along the way came a competitor who, we came to learn, used specialized processors to perform routing; the company also happened to be located "back East." I laughed out loud because I knew immediately that my former co-worker had done that architecture and implementation.

By the way, "Back East" flopped stupendously -- its use of special processors to perform routing was roundly rejected by a marketplace that had moved beyond those sorts of techniques…

July 19, 2006 12:28 AM  
Anonymous said...

It's also known as "punishing someone for doing a good job".

An example - you work in a restaurant and cleaning the grease trap is the ugliest, dirtiest job there. It takes the normal person 2 hours to do it, but you can do it better in only 45 minutes. Guess who gets to clean the grease trap every week? And guess who will quit?

This happens in every industry. It is just bad management...

July 19, 2006 1:29 AM  
Simon said...

Great story, Riley. I actually quite like the stenographer idea - it sounds like a great way to get a lot of knowledge down in a short space of time. It still is a last-minute fix for a long term problem, but one of the better ones.

July 19, 2006 7:35 AM  
Rupert said...

Aw, gee. I'm really choked about the part where you say you'll miss me cos I'm such a great guy to have around.

July 19, 2006 9:12 AM  
KpyM said...

Deja vu.
That's exactly why I quited my previous job.

July 19, 2006 9:39 AM  
Jonathan said...

Great article - I might send it on to a few people at work :-)

Being a 17% Rupert, I know exactly what you're talking about ...

I've been trying to make the mgmt team here understand that it's simply not possible to write down how to admin a system - it just HAS to be *experienced*! And when none of the current team *want* to experience it, then they're screwed. You can't /force/ experience into people :-)

Oh well - not my problem in 17 days ... and counting :-D

July 19, 2006 11:07 AM  
Simon said...

Rupert: er yes, sorry, forgot to mention that bit ;-)

Jonathan: Hey, well done on getting out! I guess you can't force someone to take on a system full time, but it might be possible to get a few people to take on half a day per week. I don't know if that would work quite as well though.

July 19, 2006 10:00 PM  
Mike said...

Great post. Illustrates a familiar situation to almost anyone in a large IT shop with a serious attrition problem.

You cannot replicate experience with more documentation, and, as a corrollary, crap code is crap code no matter how well it is documented. In such an environment, only experience will get you through.

July 21, 2006 3:22 PM  
Anonymous said...

Great post??? What the #(%&@(@ is the author talking about???

July 21, 2006 6:36 PM  
another anon said...

@Anonymous:

once you are more than 3 months in that industry you'll surely learn. :)

July 22, 2006 10:59 AM  
Anonymous said...

oh man, i think *i* used to maintain sclabe.

top post.

lb (secretGeek.net)

July 23, 2006 10:44 PM  
Anonymous said...

AWESOME article!!!

Another variation on this, is the meeting question:

Boss: "Does anyone have any ideas how we can [improve/sell more/etc] X"

Worker: "Yes, we could do ..."

Boss: "Great idea. Go ahead and do it".

Worker [thinking]: "Great, I just stuck myself with more work, won't be doing that again"

After a while the question was met with silence...

July 24, 2006 2:14 PM  
Anonymous said...

In Defence of Management

I've experienced this problem from both ends. As a developer and as a manager.

If there's one thing I have learned it's that things are rarely as simple as they seem.

As a developer, it's easy to lay blame because we don't have the full picture (quite right too) but, imagine:

Your boss is told that Widget 2.0 HAS to ship by next month or the company is in big trouble and half the development team will have to be laid off and all other dev work suspended.

Your boss knows that Rupert can do the SCLABE system on his head but, he's a bit green when it comes to Widget 2.0.

If your boss were to implement the tenet of the idea here, Rupert would have to be taught how to program Widget 2.0 by a developer that knows his stuff, losing development time on Widget 2.0.

If another developer has to learn SCLABE, that's a developer from Widget 2.0 having to spend time away, losing development time on Widget 2.0

So, your boss HAS to get Widget 2.0 shipped by next month and Rupert would like to program on it.

Your boss examines the downside to having Rupert work on Widget 2.0 now and tells him that he'll have to wait until after Widget 2.0 ships - and for very good reason (as shown above).

However, next month, a new crisis arrives and that stops Rupert going on to work on Widget 2.0. Repeat.

In the meantime, should Rupert decide he wants to leave, it's not your bosses fault and he won't lose his job because of it.

Welcome to Software Development Management. Things are rarely as simple as they seem.

July 25, 2006 1:19 PM  
Simon said...

Wow, great recent comments, various anonymice.

The "new idea" meeting is definitely a problem. The boss should at least work out a schedule for the new feature, and get the requirements nailed down before saying to go ahead and do it.

As for the defender of management - I really enjoyed your comment, thanks. The situation you describe is right at the extreme. If the alternative is staff redundancies, I'm sure Rupert would understand, and I agree that he shouldn't be on the Widget 2.0 team.

However, from the earlier comments, it seems that the same decision is repeatedly made when staff won't lose their jobs, and the company isn't in big trouble. This is an example of doing the urgent instead of the important, which leads to Rupert being dissatisfied and moving on.

If the company has a crisis every month, then the manager's boss needs to understand the impact of top management's "reactive" style, or re-evaluate the priorities for the development teams. Development by crisis will naturally occur from time to time, but shouldn't be the norm.

Remember here, that the aim of the manager is to ensure that both SCLABE and Widget 2.0 are successful. By keeping Rupert on SCLABE only, the manager is gambling that he will stay. Gambling is the key word here. Is it worth the risk? Is a slightly late Widget 2.0 better or worse than a completely unsupported SCLABE? In the emergency, yes, but every single month?

Even if Rupert is actually happy working on SCLABE, and decides to stay, what happens if it crashes at the start of his 3 week trek around the Andes? What happens if he drops a hedgehog in his eye and can't work ever again? Exactly the same thing - SCLABE is a failure. A good manager evaluates risks and plans to reduce them. Two developers with knowledge of SCLABE are much less likely to have hedgehog-related incidents than just one.

I've not been a manager, so you're right, I don't always know the full story. I'm guessing that Rupert would have mentioned his concerns in his appraisals, and so the manager would have enough warning to plan for his career progression in an appropriate manner.

July 26, 2006 11:56 AM  
Adjusted said...

I think a person would only fun this funny if you were in that situation, guess what i found it real funny. The sad thing is that it is totally true.

Good one!!

July 27, 2006 2:36 PM  

Post a Comment

Links to this post:

Create a Link

<< Home