26

I'm coming off a lengthy staff augmentation assignment awful enough that I feel like I need to be rehabilitated to convince myself that I even want to be a software developer.

They needed someone who does .NET. It turns out what they meant was someone to copy and paste massive amounts of code that their EA calls a "framework." Just copy and paste this entire repo, make a whole ton of tweaks that for whatever reason never make their way back into the "template," and then make a few edits for some specific functionality. And then repeat. And repeat. Over a dozen times.

The code is unbelievable. Everything is stacked into giant classes that inherit from each other. There's no dependency inversion. The classes have default constructors with a comment "for unit testing" and then the "real" code uses a different one.

It's full of projects, classes, and methods with weird names that don't do anything. The class and method names sound like they mean something but don't. So after a dozen times I tried to refactor, and the EA threw a hissy fit. Deleting dead code, reducing three levels of inheritance to a simple class, and renaming stuff to indicate what it does are all violations of "standards." I had to go back to the template and start over.

This guy actually recorded a video of himself giving developers instructions on how to copy and paste his awful code.

Then he randomly invents new "standards." A class that reads messages from a queue and processes them shouldn't process them anymore. It should read them and put them in another queue, and then we add more complication by reading from that queue. The reason? We might want to use the original queue for something else one day. I'm pretty sure rewriting working code to meet requirements no one has is as close as you can get to the opposite of Agile.

I fixed some major bugs during my refactor, and missed one the second time after I started over. So stuff actually broke in production because I took points off the board and "fixed" what worked to add back in dead code, variables that aren't used, etc.

In the process, I asked the EA how he wanted me to do this stuff, because I know that he makes up "standards" on the fly and whatever I do may or may not be what he was imagining. We had a tight deadline and I didn't really have time to guess, read his mind, get it wrong, and start over. So we scheduled an hour for him to show me what he wanted.

He said it would take fifteen minutes. He used the first fifteen insisting that he would not explain what he wanted, and besides he didn't remember how all of the code he wrote worked anyway so I would just have to spend more time studying his masterpiece and stepping through it in the debugger.

Being accountable to my team, I insisted that we needed to spend the scheduled hour on him actually explaining what he wanted. He started yelling and hung up. I had to explain to management that I could figure out how to make his "framework" work, but it would take longer and there was no guarantee that when it was done it would magically converge on whatever he was imagining. We totally blew that deadline.

When the .NET work was done, I got sucked into another part of the same project where they were writing massive 500 line SQL stored procedures that no one could understand. They would write a dozen before sending any to QA, then find out that there was a scenario or two not accounted for, and rewrite them all. And repeat. And repeat. Eventually it consisted of, one again, copying and pasting existing procedures into new ones.

At one point one dev asked me to help him test his procedure. I said sure, tell me the scenarios for which I needed to test. He didn't know. My question was the equivalent of asking, "Tell me what you think your code does," and he couldn't answer it. If the guy who wrote it doesn't know what it does right after he wrote it and you certainly can't tell by reading it, and there's dozens of these procedures, all the same but slightly different, how is anyone ever going to read them in a month or a year? What happens when someone needs to change them? What happens when someone finds another defect, and there are going to be a ton of them?

It's a nightmare. Why interview me with all sorts of questions about my dev skills if the plan is to have me copy and paste stuff and carefully avoid applying anything that I know?

The people are all nice except for their evil XEB (Xenophobe Expert Beginner) EA who has no business writing a line of code, ever, and certainly shouldn't be reviewing it.

I've tried to keep my sanity by answering stackoverflow questions once in a while and sometimes turning evil things I was forced to do into constructive blog posts to which I cannot link to preserve my anonymity. I feel like I've taken a six-month detour from software development to shovel crap. Never again. Lesson learned. Next time they're not interviewing me. I'm interviewing them. I'm a professional.

Comments
  • 2
    What a giant steaming pile of excrement.

    The best thing I think you can possibly do (besides running away from that job as fast as you can) is use it to give that guy enough rope to officially hang himself in the eyes of management.

    Getting him screaming on a call with an abrupt hangup was a sweet, sweet move.
  • 2
    Also, the bit about constructors for unit testing and the production code calling other stuff, that was a great laugh!

    There is a thing known as Bastard Injection, which is what you do when you're refactoring terrible code like that, but it sounds as if somebody stopped in the middle of the refactor.

    So many lols.
  • 3
    @duckWit I learned this awesome trick. When someone is being evil and looses their cool, I use one of these lines:

    Do you realize that you're raising your voice?
    Do you need a moment to compose yourself?

    This isn't just for anybody. Everyone gets a little frustrated and I'm not sensitive. If you mean well you can say anything to me. Even then I'll give you the benefit of the doubt. I'm not out to get anyone.

    This is for someone who is becoming an active threat to either my job or my ability to do it. That includes management. You need at least one witness.

    It's like gasoline on a fire. You can hear the whoosh. They totally lose it, and then the conversation is all about their lack of control.

    This guy got option A, delivered like a parent to a child: "You're raising your voice." He lost it and I owned him. I haven't had to speak to him once since. It obviously doesn't destroy him but it lowers respect for him and makes him slightly more vulnerable for the next guy.
  • 0
    @badwiring that's a great card to play. Nice job. I'll have to tuck that one away for future use.
  • 1
    What a rant. Just wow.
  • 0
    Lmao. I hope you find a better place to work soon. Thanks for the laugh.
  • 0
    This all sounds horrible. Hope you get on a better team/job.
  • 1
    No words can describe what I just read
  • 3
    @gitpush but you only read words
Add Comment