Main Logo

Same Ugly Logo Since 1978

F
e
b
2 3 4 5 6 7 8 wW
9 10 11 12 13 14 15 wW
16 17 18 19 20 21 22 wW
23 24 25 26 27 28 29 wW
M
a
r
1 2 3 4 5 6 7 wW
8 9 10 11 12 13 14 wW
15 16 17 18 19 20 21 wW
22 23 24 25 26 27 28 wW
29 30 31 1 2 3 4 wW
A
P
R
5 6 7 8 9 10 11 wW
12 13 14 15 16 17 18 wW

My art:
98. Parking
124. Some Friends at the Bar
107. Angel 3
29. Fairy III
78. Subtle Forms of Resistance
code
Leviathan
John Shepard (radiographite@gmail.com) - Sat Nov 13, 2010 03:38:00 GMT - 1130
''Oh goodie. My very own Lovecraftian monstrosity to feed and take care of. No points for guessing what language it's written in. ''

So here's where my head is really at.

Work has begun to depress me. The company has grown - nearly doubled in size since I started work there in August 2009. We've moved to a new, larger building that has two extraordinary redeeming features: parking doesn't cost money, and although it is farther from home as-the-crow-flies, to get home from it I no longer have to go through nasty traffic jams every day of the world. This all sounds awesome but it's not, because due to the sudden growth and the reshuffling of personnel, it's getting to be something of a trainwreck.

The whole time I sat on the proverbial bench, wishing for my industry back, my secret dream was to be given a sixty-thousand-line Perl monstrosity to beat back into shape. That could be my career. I can take it, right? I've battled monstrous things before, dealt in things that eat sanity for breakfast - sometimes battled more than one such thing at once. An uncommented Leviathan would be nothing. Right?

Turns out it literally is 56,000 lines of Perl, most of it uncommented. Documentation exists, from four years and two significant upgrades ago.

Not all of my work involves this beast. We've got several sites we maintain, most of them far less Lovecraftian than this one. But I don't get to say "oh I don't feel like working on that one today" and when I get a job to do in the beast, it is never "oh go fix this one line of code" - it's "add this complex feature". I'm in there for months at a time.

If it were just the code I could probably handle it. It's the requirements that are leaving scars. You see, with nothing on paper that says "here's what the site does," the only actual "specification" is the site itself as it now stands - and that means when these change requests come in, to apply some kind of functionality change across the whole site, I don't get to rip stuff out and redesign it wholesale as it so richly deserves, I have to preserve as much functionality as possible without knowing what that functionality really is. Nobody knows what the site does, but if in the course of adding a feature I cause some weird years-old custom behavior to disappear, we'll hear about it.

What I think is interesting is, while Perl has a reputation for birthing such horrors, the problem with this application is that it really isn't Perl - it's more like someone tried to write Java in Perl. There are many dozens of little accessors, most of them six or seven lines long, some with subtle conditionals, and all they do is redirect to other accessors. The logic of the site is buried in these mini-methods, hard to track down and impossible to debug. I've seen this in Java before, in part because many Java textbooks encourage something like it, but never in Perl.

The original author was trying to build this vast grand object architecture, but the core is all wrong: because the Web interface uses tabs, tabs are the innermost model! The application object is a list of Tab objects, each of which is empty except for the active tab which bears the results of execution. I guess it'd be like if you had a car, and the gearshift was shaped like a spark plug because after all, the car runs on spark plugs.

Oh but the story gets better. Original developer got to about the 90% mark on this beast, and then left. With no other developers available, some of the artists in the company had to learn Perl real fast and finish it.

This all took place while Clinton was president.

We've been bolting and stapling on to that horrorshow ever since.

But like I said: it's not the code that's eating me alive. What's eating me is the "napkin" tasks, where it feels like the request for some major change in site behavior, in some cases global changes on every page in every object, was scrawled on a honky-tonk bar napkin. I get in there, start to try to develop it and first of all, discover it deals with a part of the site I know nothing about, and second of all, start discovering all the hidden implications of the change they want made. Thus the scope of the project swells up like the Hosefish, and in spite of me warning everyone and trying to keep them in the loop, it goes over hours and money and there is much distress and anger, much of it directed at me, as if this were a surprise.

The company is smarter than this. And I must have at least some sympathy or they'd have canned me the third or fourth time this happened. But yet we keep going right back to the same feeding trough, and I think part of the problem is that with all the growth and chaos, our people are now too busy managing complexity and not able to go actually get to grips with the jobs we're doing.

I'm not whining about my job. I'm panicking because this shit may cost me my job.

The complexity and baroqueness of this "engine" leave me doubting my abilities. Most days I look at that evil code and I don't see code at all, I see a screen-shaped blur. It is a depression trigger, it actually lowers my blood sugar.

It's like we're afraid to take questions back to the client.

One gripe I have is, we get such a project, I'm buried in there for months, and for the last entire month of it, I keep saying "well, now that it's taking shape, can we have the client look at it?" and the grownups say "yeah, we'll get on that" and they never do. So for two weeks I was staying late, coming in weekends, missing Saturday Market, never seeing the inside of my apartment. Deployment day rolled around and I had a Meteorite, and I stayed anyway and worked through it, did the deployment, stayed late that night to continue fixing bugs as the testers found stuff, basically worked myself sick and kept working anyway. Delivered a piece of epic work, at great personal cost. Next day the client was royally pissed off because some feature wasn't where they expected to find it. The feature only appeared when it made sense to appear, but because they had never thought the request through, they thought it was broken and it was all our fault.

(Client later apologized. You take your little victories where you can get them.)

Did it need a round of usability design? Of course it did. That might have helped. But it didn't get it. Nothing I do ever gets a usability review or even a mockup. They just skip that step, hand me a halfbaked spec and not enough hours, and wonder why the client is griping about the results. Then we pick up the pieces, fix it how they wanted it (usually impeding usability more but the client seems to think that's what they need) and the next project, do it again.

So this might explain why I've been getting grouchier in recent months.
Theme selection:

Moo Bunny message board software version 4.2 beta 47.

Guidelines for usage: Enjoy yourselves. In times when people aren't enjoying themselves, messages may be deleted and IPs may be blocked for abusive content, pirate site addresses, or confidential information. Policy complaints and questions to squid@flyingmice.com.

[Add a message] [Get a cookie] [Regenerate this index]
    Tuesday, May 22, 2012Thursday, Mar 29, 2012Thursday, Jun 16, 2011  
this so belongs to here
2/2
NEW
old
  Entire thread / Short

Glenn Beck
1/1
  Message
Entire thread / Short

[Thread archives]