• m0ffx (unregistered)

    You shouldn't have two mutually dependent components. If they depend on each other, they should just be one component.

  • (cs) in reply to m0ffx
    m0ffx:
    You shouldn't have two mutually dependent components. If they depend on each other, they should just be one component.
    Isn't that precisely the thinking that led to this article? :-)
  • Rob (unregistered) in reply to m0ffx
    m0ffx:
    You shouldn't have two mutually dependent components. If they depend on each other, they should just be one component.

    Well, that's just more security - if one component fails, the server is only "half dead" instead of "mostly dead"

  • Eric (unregistered)
    The approach seemed to work, though it did have it drawbacks. Not only did changes take longer to implement, but the codebase didn't seem less ugly; it was only a bit smaller.
    Hmm.. what to do with this tangled knot in my shoelaces... I know! I'll pull on the ends as hard as I can to make the knot smaller!
  • Nick (unregistered) in reply to m0ffx

    What if there is a third component, that only depends on one of the components. That should be rolled in there too?

  • (cs)

    This story is summed up in one line: "You get what you pay for."

  • howes (unregistered)

    I went to china, india and the like. It all comes down to one thing. You get what you pay for. Pay up or shut up..

  • Layer I Up (unregistered) in reply to Nick
    Nick:
    What if there is a third component, that only depends on one of the components. That should be rolled in there too?

    Exactly! There should be some layer of abstraction to allow changes to be easily made to an upstream component.

    Perhaps when the author said "At a very high level", he was intentionally disregarding interfaces / layers of abstraction.

    Architecturally speaking, the diagram rings alarm bells!

  • Warren (unregistered)

    "Each new bug [threw] the development team into crisis-mode"

    Found one there, hope you're not in crisis-mode now.

  • Anonymous (unregistered)

    What's so bad about using ArrayLists, HashTables, and DataSets to move around data?

    Not for everything, of course, but wrapping yourself to death with custom data structures is not exactly better.

  • blah (unregistered)

    What the blimey do you all think you're doing? We should share an account and edit a single comment!

  • No one you know (unregistered)

    INSANE is missing the blink tag.

  • (cs) in reply to Anonymous
    Anonymous:
    What's so bad about using ArrayLists, HashTables, and DataSets to move around data?
    It's just soooo .Net 1.1. We're almost to 4.0 now. Get with the program!
  • DMC (unregistered)

    Love the reference to Crazy Eddie's in BKLYN. "Prices so low, they're INSANE"

  • Yanman (unregistered) in reply to blah
    blah:
    What the blimey do you all think you're doing? We should share an account and edit a single comment!

    Communism?

  • blah (unregistered)

    Static globalism.

  • kayakyakr (unregistered)

    Is it just me or have the feature articles been ending just as the story seems like it's about to become interesting?

    I mean, this one seems like it should have a co-dependent pt. 2 to it.

    Form post for today:

    1. Good programming vs bad programming (w/ diagrams)
    2. Company sends code offshore
    3. Offshore code sucks
    4. Company saves money by retrofitting shitty code instead of rewriting
    5. Retrofit process still ongoing (or is it?)
  • (cs) in reply to Yanman
    Yanman:
    blah:
    What the blimey do you all think you're doing? We should share an account and edit a single comment!

    Communism?

    Wiki?

  • (cs) in reply to kayakyakr
    kayakyakr:
    Is it just me or have the feature articles been ending just as the story seems like it's about to become interesting?

    I mean, this one seems like it should have a co-dependent pt. 2 to it.

    Form post for today:

    1. Good programming vs bad programming (w/ diagrams)
    2. Company sends code offshore
    3. Offshore code sucks
    4. Company saves money by retrofitting shitty code instead of rewriting
    5. Retrofit process still ongoing (or is it?)

    No... '5' is, "New feature set is impossible to add due to 4. Goto 2".

  • tragomaskhalos (unregistered)

    Strangely redolent of code I am currently working with. Features include: = Entire program in one function, including numerous repetitions of near-identical logic = But novel use of #region to break logic into chunks ! = lots of goodness like:

    if (condition)
    str = <HUGE concatentation of terms, all on the one line>
    else
    str = <EXACT duplicate of above huge concat, with ONE extra term!>

  • Dave (unregistered)

    Why didn't the bank run through their own testing when they got the release from their offshore developers? They had a QA dept. It's their own fault for releasing a piece of software they didn't test themselves.

  • monkeyPushButton (unregistered) in reply to Mcoder
    Mcoder:
    Yanman:
    blah:
    What the blimey do you all think you're doing? We should share an account and edit a single comment!

    Communism?

    Wiki?
    In communist wiki, comments edit you.

  • (cs) in reply to tragomaskhalos
    tragomaskhalos:
    Strangely redolent of code I am currently working with. Features include: = Entire program in one function, including numerous repetitions of near-identical logic = But novel use of #region to break logic into chunks ! = lots of goodness like:
      if (condition)
       str = HUGE concatentation of terms, all on the one line
      else
       str = EXACT duplicate of above huge concat, with ONE extra term!
    


    Last time i checked, you can't put region blocks in method bodies...

  • Anonymous (unregistered)

    So, we have incompetent offshore developers coupled with management who are all too ready to repeat their past mistakes. Technically this is a WTF but in reality it's not going to raise any eyebrows around here. Welcome to the IT industry.

  • (cs) in reply to m0ffx

    This is what you get when you hire cheap offshore workers. I have yet to see an app that was developed as an offshore project like this (not talking about major offshore corps like NCSoft) actually come back with clean, functional and maintainable code.

  • none (unregistered)

    I have no sympathy. A modicum of code review by Infotech or the bank would have revealed that the code was crap very early in the process.

  • Anonymous (unregistered) in reply to XioPod
    XioPod:
    Last time i checked, you can't put region blocks in method bodies...
    Then it's probably about time you checked again. This is C#, you can put regions wherever the hell you like.
  • LBP (unregistered) in reply to tragomaskhalos

    I really recommend that if you're not using ConQat or Clone Detective, that you start. They're both free, and ConQat is now a lot easier to configure than it used to be.

  • silent d (unregistered)

    Guaranteed way to keep your customers from becoming disgruntled: don't gruntle them in the first place.

  • (cs) in reply to Anonymous
    Anonymous:
    What's so bad about using ArrayLists, HashTables, and DataSets to move around data?

    Not for everything, of course, but wrapping yourself to death with custom data structures is not exactly better.

    Lists are probably OK, but the HashTables and DataSets WERE being used for everything (note that they did not define ANY classes except as holders for static methods). Basically they had completely foregone OOP. And type safety; I bet you 3:1 that the vast majority of those HashTables contained a nice mix of strings, decimals, bools, and other HashTables.

  • JoeCoder (unregistered) in reply to XioPod
    XioPod:
    tragomaskhalos:
    Strangely redolent of code I am currently working with. Features include: = Entire program in one function, including numerous repetitions of near-identical logic = But novel use of #region to break logic into chunks ! = lots of goodness like:
      if (condition)
       str = HUGE concatentation of terms, all on the one line
      else
       str = EXACT duplicate of above huge concat, with ONE extra term!
    


    Last time i checked, you can't put region blocks in method bodies...

    check again, I see it all the time.

  • (cs) in reply to amischiefr
    amischiefr:
    I have yet to see an app that was developed as an offshore project like this (not talking about major offshore corps like NCSoft) actually come back with clean, functional and maintainable code.
    Then again, how many onshore-outsourced projects have you seen that had clean, functional and maintainable code?
  • WTF Fan (unregistered)

    Finally, a pretty thoroughly WTF WTF. Congratulations to Alex et al. for returning to the source: persistently bad management decisions.

  • A Gould (unregistered) in reply to amischiefr
    amischiefr:
    This is what you get when you hire cheap offshore workers. I have yet to see an app that was developed as an offshore project like this (not talking about major offshore corps like NCSoft) actually come back with clean, functional and maintainable code.

    Which makes sense, if you think about it - they're not paying for clean or maintainable code. They're paying for functional, and I'll bet it does exactly what they were paid to have it do (as shown by whatever testing was used), and not a thing more.

    That's what "lowest bidder" means - no frills. (And anything not in the original bid is a frill).

  • Stefan (unregistered) in reply to XioPod

    [quote user="XioPodLast time i checked, you can't put region blocks in method bodies...[/quote]

    private void Comment_Load(object sender, EventArgs e) { #region "Yes you can" string a ="Just see "; string b = "me doing it!"; #endregion #region "I rest my Case" Console.Write(a + b); #region "I rest my Case"

        }
    
  • Stefan (unregistered)
        private void Form1_Load(object sender, EventArgs e)
        {
            #region "Yes you can"
            string a = "Just see ";
            string b = "me doing it!";
            #endregion
            #region "I rest my Case"
            Console.Write(a + b);
            #endregion "Even text in the closing tag!"
    
        }
    
  • (cs)
    Mark Bowytz:
    The "Fit" hits the "Shan"

    Mark, we're adults. We're not going to send you to the principal's office for saying the word "shit".

  • Shaftoe (unregistered)

    This is exactly why offshoring Dev work is a short sighted and stupid idea.

  • OldCoder (unregistered) in reply to kayakyakr
    kayakyakr:
    Is it just me or have the feature articles been ending just as the story seems like it's about to become interesting?
    Perhaps Alex accidentally the ending?
  • (cs) in reply to XioPod
    XioPod:
    tragomaskhalos:
    ...


    Last time i checked, you can't put region blocks in method bodies...

    private void YouAreWrong()
     {
      #region WTF?!
       MessageBox.Show("i can haz region!");
      #endregion
     }
    
  • Osno (unregistered) in reply to Shaftoe

    Offshoring dev work to idiots is a short sighted and stupid idea. Americans seem not to understand that there's a lot of bright people around. Not the lowest bidder, generally.

    captcha: dignissim. What I feel as an excellent offshore developer.

  • blah (unregistered) in reply to Someone You Know
    Someone You Know:
    Mark, we're adults. We're not going to send you to the principal's office for saying the word "shit".
    Can you really blame Mark? He has the spelling/grammar skillz of a second grader.
  • (cs) in reply to Osno
    Osno:
    Americans seem not to understand that there's a lot of bright people around. Not the lowest bidder, generally.
    How did you conclude they were American?

    Addendum (2009-04-16 13:18):

    analysts in the US would send a list of new bugs to the offshore developers
    Yes, that would do it. Nevermind.
  • Osno (unregistered) in reply to Code Dependent

    Experience, I guess :). Ok, I'm biased against Americans because all the offshoring I did, I did it for them and the code they provided was so incredibly bad and their egos where so incredibly huge. Sorry for my bias, what I said can be applied to anyone that thinks he's better than the rest of the world.

  • telluryde (unregistered)

    "No primary keys, indexes, or foreign key constraints existed on tables, nearly all fields were of type varchar(50), and 100% of fields were nullable."

    Amateurs! Everybody knows those fields should be varchar(255).

  • (cs) in reply to Osno
    Osno:
    ...and their egos where so incredibly huge. Sorry for my bias, what I said can be applied to anyone that thinks he's better than the rest of the world.
    Yeah, the ugly American, I've heard of him all my life. On behalf of American assholes the world over, I apologize.

    Incidentally, I've been to Canada and Mexico, but never off the North American continent, so I've never behaved badly in Europe, Asia or Australia. I hope to travel more widely someday, and not behave like an ugly American in the doing.

  • Procedural (unregistered)

    Is the first diagram having hot lesbian sex or am I too horny right now ?

  • (cs) in reply to XioPod
    XioPod:
    tragomaskhalos:
    Strangely redolent of code I am currently working with. Features include: = Entire program in one function, including numerous repetitions of near-identical logic = But novel use of #region to break logic into chunks ! = lots of goodness like:
      if (condition)
       str = HUGE concatentation of terms, all on the one line
      else
       str = EXACT duplicate of above huge concat, with ONE extra term!
    


    Last time i checked, you can't put region blocks in method bodies...

    Last time I checked, I could...

  • Wodin (unregistered) in reply to Someone You Know
    Someone You Know:
    Mark Bowytz:
    The "Fit" hits the "Shan"

    Mark, we're adults. We're not going to send you to the principal's office for saying the word "shit".

    If he'd said the word "fan", though...

  • m0ffx (unregistered) in reply to Code Dependent

    When you come to Europe, tell people you're Canadian.

Leave a comment on “eTeller Horror”

Log In or post as a guest

Replying to comment #:

« Return to Article