• Industrial Automation Engineer (unregistered)

    If I compare this to the contracted work I receive on my desk as "it's in the maintenance cycle now", this must have be written by a highly skilled team, with all the architecture and functional specifications hammmered out beforehand. oh, wait...

  • Hasseman (unregistered)

    The mythical man month, anybody?

  • (nodebb)

    Tired: JavaScript in PHP

    Wired: PHP in JavaScript

  • (nodebb)

    .parent().parent().parent().parent().parent()

    There's so much to hate about this.

    For once, Remy and I are 100% aligned. There are a fsckload of major WTFs here, and they do deserve unadulterated hatred.

    However, I'll point out the minor points he skipped over:

    • coder liked calling parent() so damn much he didn't bother making an intermediate variable, but did it twice
    • same for repeatedly invoking jQuery(this) --- use a variable, dammit.
    • coder is unfamiliar with the "+=" operator
    • what are the first and third tests accomplishing in (datetime && datetime != "" && datetime != null)
    • lack of { } for the ifs --- be consistent
    • doing a lot of fetching and assigning for nothing if "title" is null or empty
  • (nodebb) in reply to adamantoise

    Technically that's just php - templating is kinda it's thing since the very beginning.

  • Duke of New York (unregistered)

    The dev just couldn't remember the plural for parent. Parentoi? Parentae? Parentheses?

  • airdrik (unregistered) in reply to dpm

    There's also just the whole: creating another widget by scraping the assumed structure of another widget on the page, instead of creating another view on top of the model used to create the first widget.

    But hey, since they're partnering with the contractor that produced this ... "code", Shirley they've agreed for the contractor to help support and maintain it, so that at least they don't have to deal with the mess ... much ... right? Right?!? (filed next to: There are tests, right? and There is source control, right? Yes, you know exactly where I'm putting my money on those bets)

  • Officer Johnny Holzkopf (unregistered)

    "The entire project came back from the contractor in an unusable state. [...] [Management] bragged about how cheaply they got the work done at every opportunity, and entered into a partnership agreement with the subcontractor." - In what kind of world is this working for a company that stays in business for more than a month?! I don't get it... So you basically pay someone to mess up your company's code so it doesn't even work anymore? The code you need to actually run your company? How does that work? And... could I do the same? You give me money, I put nonsense in your codebase, and then I become a partner and get money continuously to either do nothing or contrubute more crap code? Hmmm... sounds like a good idea for a startup! Now with Artificiel Intelligent`s, BlockChain, Bigger Data, 3D, Cloud and... and more! You pay more! Save money now by paying more!

  • mihi (unregistered)

    Hmm. Iterating over td and checking whether their parents have certain classes. I believe there used to be a JavaScript library that could query things like this before querySelectorAll was mainstream. Oh, they are using this library for querying the tds in the first place. Never mind...

  • xtal256 (unregistered)

    "The entire project came back from the contractor in an unusable state."

    This is what I don't get about all these stories. Why would a company accept work from the contractor if it doesn't actually work? (Because they are dumb, I know. I still don't get it though)

  • Osric (unregistered) in reply to xtal256

    From my own past experience, because the people who commission the contractors aren't developers, deliberately aren't involving developers in the contract work, etc, so the people signing the checks aren't qualified to judge what they are buying.

  • NoLand (unregistered)

    It's software engineering! Just look at the built-in redundancy:

    if(imageThumb && imageThumb != "" && imageThumb != null)
    

    We are testing effectively the same thing, trice! Just in case the test in Boolean context fails, we do it in string context, and if this fails, in object context. If only every bridge was built like this! ;-)

  • Chris O (unregistered)

    I worked at a company that wrote public sector software and some level of management also thought it was be a great cost saving decision to hire either the cheapest, or close to it, offshore development team. The inhouse development team (of which I was one of the the senior / lead developers) spent so much time either fixing or re-writing their code that we created a new branch just for them and gave them stupid simple bugs. They would spin their wheels and once a week or so, someone would give the commits a quick once over, just so we could say that we reviewed their code, and then promptly forget about it. Unfortunately, our productivity went up by a significant amount, which was attributed to the offshore team by the Peter Principle dev manager. Fortunately, he was promoted again and our new dev manager knew what was going on, so we were able to terminate their contract.

  • (nodebb)

    There are companies where management will blindly believe any fairy tale told by external contractors because obviously said contractors are "experts" (they claimed so!) and obviously their in-house team aren't...

  • (nodebb)

    In a previous job, working on a PHP intranet app, we hired a contractor elsewhere in the world to do some of the coding. They did quite a lot of copy-and-pasting, even in the same file. Which meant if the pasted code had bugs (often) it would have to be fixed in multiple places. They didn't last long; matter of weeks I think. They also had trouble keeping their checkouts synced with out repository (we were using SVN, that's how long ago this was) so we'd get complete crap sometimes.

  • (nodebb)

    In a previous job, working on a PHP intranet app, we hired a contractor elsewhere in the world to do some of the coding. They did quite a lot of copy-and-pasting, even in the same file. Which meant if the pasted code had bugs (often) it would have to be fixed in multiple places. They didn't last long; matter of weeks I think. They also had trouble keeping their checkouts synced with out repository (we were using SVN, that's how long ago this was) so we'd get complete crap sometimes.

Leave a comment on “Ancestry Dot Dumb”

Log In or post as a guest

Replying to comment #:

« Return to Article