• JBert (disco)

    //snip 19 lines

    You know the :wtf: is strong if the embellisher FP author gave up coming up with stacktraces somewhere halfway.

    Still, a respectable list of 19 well done class names!

  • HardwareGeek (disco)

    New author photo looks more corporate, but somehow also more ominous and threatening. Awesome.

  • Tsaukpaetra (disco)

    Wow, fired after four days? I'm not even... What? That's barely enough to sign the paperwork that says you should be taxed!

  • Maciejasjmj (disco) in reply to HardwareGeek
    Comment held for moderation.
  • Eldelshell (disco)
    Comment held for moderation.
  • Shoreline (disco)

    The wasted time is very annoying. What do you have to show for that on your CV?

    "For four days I worked at fucking-morons-inc, who failed to provide me with the promised work and instead gave me some bullshit to do. I hope they fucking crash and burn."

    I was once hired as a software developer and got given a server migration. Over a hundred domains of various shapes and sizes needed to be transferred, based on lists excel spreadsheets which weren't up to date, with domains which seemed to be transferred successfully or not depending on which day you checked it, and all set up by a company that now consisted of one guy (who I will call 'Cunt' because 'spacetime-wasting wilfully-ignorant blamegamer' is a bit long) who had 'merged' with our company but didn't know much about it.

    Every single step seemed to require a phone call to a domain's client. When there was no number and I tried to email I had to use some bizarre piece of machinery that couldn't send to multiple email addresses (seriously, I asked about this) and somehow when Cunt had failed to keep his CRM with the contact details up to date, this was my fault.

    Anyway, I'll leave it there because I've run out of mood stabilisers.

  • Rhywden (disco) in reply to HardwareGeek

    For some reason, I am always reminded of Rasputin.

  • Maciejasjmj (disco) in reply to Rhywden

    That's because I am also, in fact, Russia's greatest love machine.

  • RFoxmich (disco)

    TRWTF: "Don't worry, we'll have something real cutting-edge for you soon!""

  • Steve_The_Cynic (disco) in reply to Rhywden
    Rhywden:
    For some reason, I am always reminded of Rasputin.
    Yeah, that was my first thought when I saw that picture. And not in a good way, either.
  • Steve_The_Cynic (disco)

    Back to the article itself. Of course they kicked his lazy arse out the door. He gave a one-hour estimate and wasn't finished four days later. (Arguably, he could be like Calvin and say "I've almost started" after those four days.)

  • Hasteur (disco)

    ExceptFondler

    Do Exceptions like to be Fondled? Did you ask the Exception's permission to be fondled? Is an incipient "Exception Sexual Harassment" mandatory?

  • dkf (disco) in reply to Maciejasjmj
    Maciejasjmj:
    Sure hope it looks corporate, it's on my entry card to the building.

    By virtue of scaring the security staff so much that they let you in?

  • Michael_Mahn (disco)

    He submitted a one-hour time estimate, giving himself some leeway, then got down to hunting the bug.

    For a 5 million LOC codebase, he didn't even see before? I'm sorry but TRWTF is definitly George himself.

  • isthisunique (disco)

    I've been in this exact same situation. Almost the same story.

    This was a particularly weird codebase where the sole maintainer was extremely "productive" in terms of producing LOC or content in general. I could almost describe it as though the developer had some kind of a fetish for voluminous text. This was hoarder behaviour. The extreme opposite of one liner fanatics.

    The error handling was strange, merging two patterns where only one was needed. It would switch from exception throwing to error class properties like a zebra, catching errors, setting object properties to the error state and sometimes throwing exceptions when error states on locally called objects were detected only to be caught again and turned into new or duplicate error properties on the calling object. One method name in 5 or 6 classes and doing completely different unrelated things each time. Similar functions (siblings) often had their names swapped (I.E. Something like deleteItemById and deleteItemsById would be swapped, in the worst case an update might delete and a delete might update).

    Another thing I remember is that some classes and functions didn't match what they were supposed to do at all as if someone had copied and pasted them changing the contents later to meet a new purpose without changing the names to reflect this.

    Each view defined a strange model class at the top that had been copied and pasted to the top of every view as far as I could see which the rest of the view used. This is one example but the entire structure of the program was convoluted like this featuring all kinds of invented patterns that appeared to serve no purpose other than to increase the LOC.

    I couldn't get anywhere causally browsing the code. There were no shortcuts, only the scenic route. I asked for some kind of a spec or design and was given a document that turned out to be table after table of tests. Under all the time pressure to get anything done, without thinking I printed it and was mortified when over 1000 pages came out. I returned to my desk with a wad that rivalled the yellow pages. This was not a big ball of mud, it was a mud planet. A mushy brown soggy planet entirely covered in mud. A miles deep ocean of mud.

    The bloat was everywhere and it was back breaking. I had a very hard time getting into the source because of a mangled and massively bloated permissions system on a default local install that would grind the system to a halt with a handful of users. Loading a page would take ten seconds to a minute. There wasn't much data in play so I can only imagine that somewhere someone had done something that was n*n or even n^n. It was loading millions of things, making millions of calls. It's enormous size and excessive code execution made it near impossible to debug, trace, profile, etc. Whatever I did would rapidly descend into an indecipherable journey chaotically through hundreds upon hundreds of classes and thousands of functions. A single method or a handful being called I can handle. This was something else.

    The LOC count was not because of library bloat, someone had actually created a few million lines worth monstrosity which I'm certain could have been created in 50K lines or less. No doubt the copy pasta was strong with this one. What really pushed me to my limits was the God Class. A super-massive file consisting of tens of thousands of lines and performing a wide range of core functions. Just including this file would noticeably lag the web application.

    A lot of things I can deal with but this level of bloat sapped my productivity to 0.001% of what it would normally be. I have my own problems, many of which I contribute to because I have to often deal with codebases that are based on a legacy codebase, which had no proper spec or architecture, often use entirely the wrong technologies, etc. I can't always easily afford excessive comments, documentation, test cases, etc in this case because I know sooner or later everything will have to change again. However any good developer knows that if you can't do anything else, at least keep a small clean footprint to keep things maintainable. Personally, I also give developers at least a month to really get to grips with a complex codebase.

    So in the end I lasted only 4 days as well and for those complaining, I can assure you, that's a good thing. Saved me from a life of hell. I wonder if it was the same company.

  • vita10gy (disco) in reply to Michael_Mahn

    Agreed. That's almost unbelievable. And he seemed to think that gave him plenty of leeway. A new recruit is still waiting on Dave to give him access to the such and such so he has what he needs to ask Mary to authorize him to see the code 3 hours later.

    Asking him for a time estimate is bonkers, him saying an hour is madness. The only times we estimate an hour for something WE did is when we really mean "probably 3 minutes, but just in case that breaks something I want time"

  • EatenByAGrue (disco)

    There are 2 ways of handling situations like this:

    1. Run away very fast. This is not a bad idea if you can afford to do it.
    2. If you have to stay, then your goal is to clean out the crap one shovelful at a time: Take control of one key section of the code, build a complete test suite for it, write the short-and-simple version that demonstrably does the exact same thing better and faster, push it out to the rest of the organization. While it takes a while to turn a 3.5-million-line monstrosity into something manageable, you can at least have the parts you touch most frequently be decent. It also can have a beneficial snowball effect, as your fellow developers start noticing what you're doing and how your stuff doesn't break and is easier to manage.

    Anybody who believes a new developer will do anything particularly productive during his/her first week is either lying or kidding themselves.

  • Adynathos (disco)

    After finally gathering the courage to run away from his previous job, which had involved maintaining a million-line, 15-year-old mess of a codebase, he'd spent the last month interviewing with nearly every tech company in his area. Here he'd found his Promised Land: a modern-looking, professional company

    So many of TDWTF articles begin with the protagonist entering a new job and end with him leaving the company or at least preparing to leave.

    One could imagine that this is always the same hero, going through an endless series of terrible companies and jobs. That could be a plot for a very depressing TV series.

  • dkf (disco) in reply to Adynathos
    Adynathos:
    That could be a plot for a very depressing TV series.

    “Quantum WTF”?

  • RFoxmich (disco) in reply to Michael_Mahn
    Comment held for moderation.
  • dkf (disco) in reply to RFoxmich
    Comment held for moderation.
  • blakeyrat (disco)

    Pfft. I spent 4 months at a company and accomplished nothing, and it was a better article too.

  • boomzilla (disco) in reply to blakeyrat
    blakeyrat:
    Pfft. I spent 4 *months* at a company and accomplished nothing, and it was a better article too.

    Expectations vary by employee.

  • gwowen (disco) in reply to blakeyrat

    You've spent several years at this website, and achieved considerably less than that.

  • ufmace (disco)

    More Real WTFs:

    Giving an hour estimate for fixing a bug on a codebase you've never touched before.

    Believing a time estimate for how long to do something from somebody who's never seen the code.

    Firing a new coder after a few days because they didn't fix your WTF code fast enough.

    Automatically bailing because the code is awful. Yeah, almost all code that actually does anything useful is objectively awful. Suck it up and improve it instead of quitting at the first glance. That's our job. You aren't going to get far if you refuse to work on anything but new projects in the trendiest language, where you will probably build your own WTF architecture.

  • Slapout (disco) in reply to isthisunique
    isthisunique:
    Another thing I remember is that some classes and functions didn't match what they were supposed to do at all as if someone had copied and pasted them changing the contents later to meet a new purpose without changing the names to reflect this.

    You think that's bad? I was giving some specifications for updating a system where the specs had be cut and pasted from another document and referred to things that haven't been pasted over and only existed in the original document. It would say thing like, "If xyz, then go back two paragraphs and do what it says there." But two paragraphs back didn't exist in this document!

  • Slapout (disco)

    ErrorJuggler

    I hope that throws and catches the same three exceptions over and over and over...

  • slavdude (disco) in reply to RFoxmich

    I think the mistake was on George's part, too, for thinking that he could easily find a configuration error in a 5-million-line legacy monstrosity and giving an estimate of an hour to find it.

    Then again, I was at a place for 3 weeks before they decided that I couldn't "do the work" that they didn't even bother giving me. Luckily I was a mere contractor.

    Note to self: Read TFT before commenting.

  • dse (disco) in reply to isthisunique

    Drama is good, with a little polish and some code snippets this could be a nice TDWTF article of its own

  • TimeBandit (disco) in reply to gwowen
    gwowen:
    You've spent several years at this website, and achieved considerably less than that.

    Liar. He proved without any doubt that he knows nothing about Linux :smiley:

  • mechanicjay (disco) in reply to Maciejasjmj

    It's not everyday you find a Boney M reference on the internet. My heads off to you sir!

  • rc4 (disco) in reply to mechanicjay
    mechanicjay:
    My heads off to you sir!

    God, it would be utterly horrifying if we decapitated ourselves to show appreciation for another.

  • kupfernigk (disco) in reply to Adynathos
    Adynathos:
    One could imagine that this is always the same hero

    The hero with a thousand interfaces.

  • redwizard (disco) in reply to Shoreline
    Shoreline:
    I was once hired as a software developer and got given a server migration.

    Had a similar experience at my second engineering job: hired to do electronics design for locks (after a six month interview process), then the company gets bought out and I was relegated to drafting and mechanical engineering work.

    My 3-month evaluation happened 9 months into the job, and I was criticized for not being "independent enough" or "knowledgeable enough" about mechanical engineering and drafting. The best part? I was rated at something like 70% efficiency when the standard was 90%+. I countered with the observation that that was very good considering I have no mechanical engineering or drafting training whatsoever, and that if they don't have any electronics or computer work for me that maybe they should show me the door and quit wasting both our times.

    My supervisor acknowledged my points and said he would get back to me.

    A week later, I was reassigned to network administration of the Novell network, given a 3% raise, and assigned 7 new NT workstations to build from scratch for the engineering team to run the new Pro/Engineering program.

    Note: It helped that I had earlier found out why their 100Base-T network was barely communicating at 10Base-T & corrected it: Instead of the standard Ethernet 12364578 pairing, the crimping was all 12345678. :facepalm:

  • isthisunique (disco) in reply to Slapout

    At least you know that the paragraph is missing. Running findPerson and finding that your person has not only been found but has also been turned into a Penguin it's much worse.

  • isthisunique (disco) in reply to ufmace

    It's relative. I'm sure people can deal with a lot of things but no one can or should put up with everything. Personally, sometimes it's the small things that get me because they are so easy to do right. In this case it's more about the big things.

    If you started a job and were told to find a lamp in 10 medium sized cardboard boxes and you had 30 minutes to do it or you are fired then complaining would be a sign of an attitude problem.

    If you change one variable, the number of boxes, to 1000 then any reasonable person would bail. One day someone will get lucky and it will be in one of the first boxes.

    It wouldn't surprise me if a lot of people suffer this fate. Boxes are easy to quantify, code is a different beast altogether.

    So these companies don't want skilful developers, they want lucky ones. Given such Akira codebases luck is the only thing that is going to help such a developer.

  • Tsaukpaetra (disco) in reply to redwizard
    redwizard:
    Instead of the standard Ethernet 12364578 pairing, the crimping was all 12345678.
    Strangely enough I had this issue with Gigabit failing to connect at all. For some reason the switch decided that it was Gigabit or Bust if it appeared that all eight lines were connected, and of course failed spectacularly when the twisted pairs generated massive interference on each other. Somehow it worked (almost) okay if I forced 100, but there were lots of dropped packets. Can't remember the pairings though, but iirc the wires were basically bit-shifted across the connector, so what would normally be two lines in a twist was one line paired to the neighboring pair's twist.
  • Luhmann (disco) in reply to dkf
    Comment held for moderation.
  • Polygeekery (disco) in reply to Rhywden
    Rhywden:
    For some reason, I am always reminded of Rasputin.

    It reminds me of the band Type O Negative.

    [image]
  • dkf (disco) in reply to Slapout
    Slapout:
    You think that's bad? I was giving some specifications for updating a system where the specs had be cut and pasted from another document and referred to things that haven't been pasted over and only existed in the original document.

    In the past, I've been on a project funded for around 20 million whose entire project plan was a cut-n-paste job. :smile:

  • george_gonzalez (disco) in reply to EatenByAGrue

    That would be nice, but what if the micro-manager was very explicit in wanting "minimum size fixes"?

    Many a time I've wanted to throw away thousands of lines of bloated code, but the boss wants a one-line patch.

  • Gribnit (disco) in reply to george_gonzalez
    george_gonzalez:
    the boss wants a one-line patch

    This strategy creates a fiefdom very, very effectively, and there aren't a lot of counters to it. But, if you can get away with a couple lines extra, maybe you could nop thousands of lines of bloated code instead :speak_no_evil:

    Or, beat them to it, with half-line fixes.

  • snoofle (disco) in reply to EatenByAGrue

    Been there, in reverse.

    At my previous job, I was hired as a contractor "developer" to code some piece of a larger system. On day-1, they introduced me as a dev-manager. In the first two months, they laid off 2 of the four people on our team. By 3 months, they had given us no requirements (after 6 months of the BA's trying to figure out the requirements). Finally, they laid off all the senior folks across all the dev teams in order to save money.

    This left only 1-2 junior developers on each project team, in case the requirements ever materialized.

    I've been out of there about a month and I'm still hearing reports of no requirements/work to do.

    After 30+ years of doing this, I don't know which is worse; developers who can't write decent code in well-established ways, or managers who simply can't manage software development efforts.

  • cheong (disco) in reply to Shoreline
    Shoreline:
    What do you have to show for that on your CV?

    Emmm... Why do you want to show a 4 days work on your CV?

    I'd simply discard that and pretend never worked there before.

  • cheong (disco) in reply to EatenByAGrue
    EatenByAGrue:
    Take control of one key section of the code, build a complete test suite for it

    Good luck on trying to refactor intentionally made-hostile maze of factory classes and methods. That thing can be more challenging than trying to work of multi-decade-aged codebase of spaghetti code.

    With spaghetti code, at least the codes are put together and you can "divide and conquer" it. With code in abused factory pattern, it can be difficult to isolate the side effects. If you want to write complete test suite for one trival change, you can find yourself have to write hundreds if not thousands of test classes before you can start modifying it on a 5M-lines codebase.

  • FrostCat (disco) in reply to RFoxmich

    I was looking for that exact clip this morning to mail to a client. Instead I found the "do you always multiply your repair estimates by a factor of four?" version from whichever movie that was--5, I think.

  • Tsaukpaetra (disco) in reply to FrostCat

    I think that was Wrath of Khan? When they were all "We knew the communications were being monitored so decided to fudge everything."

  • FrostCat (disco) in reply to Tsaukpaetra
    Tsaukpaetra:
    I think that was Wrath of Khan? When they were all "We knew the communications were being monitored so decided to fudge everything."

    Actually I think it was at the very beginning of STIII, on the way back to Earth, before they found out the ship was to be decommissioned[1].

    [1] no spoilers for you! If you haven't seen it by now, you probably never will. Also, Rosebud was his sled!

  • Scarlet_Manuka (disco) in reply to snoofle
    Comment held for moderation.
  • Tsaukpaetra (disco) in reply to Scarlet_Manuka
    Comment held for moderation.

Leave a comment on “The Depths of Insanity”

Log In or post as a guest

Replying to comment #:

« Return to Article