eTeller Horror

  • m0ffx 2009-04-16 11:04
    You shouldn't have two mutually dependent components. If they depend on each other, they should just be one component.
  • ThePants999 2009-04-16 11:12
    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 2009-04-16 11:22
    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 2009-04-16 11:22
    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 2009-04-16 11:29
    What if there is a third component, that only depends on one of the components. That should be rolled in there too?
  • Code Dependent 2009-04-16 11:31
    This story is summed up in one line: "You get what you pay for."
  • howes 2009-04-16 11:32
    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 2009-04-16 11:34
    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 2009-04-16 11:36
    "Each new bug [threw] the development team into crisis-mode"

    Found one there, hope you're not in crisis-mode now.
  • Anonymous 2009-04-16 11:36
    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 2009-04-16 11:38
    What the blimey do you all think you're doing? We should share an account and edit a single comment!
  • No one you know 2009-04-16 11:39
    INSANE is missing the blink tag.
  • Code Dependent 2009-04-16 11:43
    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 2009-04-16 11:44
    Love the reference to Crazy Eddie's in BKLYN. "Prices so low, they're INSANE"
  • Yanman 2009-04-16 11:45
    blah:
    What the blimey do you all think you're doing? We should share an account and edit a single comment!


    Communism?
  • blah 2009-04-16 11:50
    Static globalism.
  • kayakyakr 2009-04-16 11:50
    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?)
  • Mcoder 2009-04-16 11:50
    Yanman:
    blah:
    What the blimey do you all think you're doing? We should share an account and edit a single comment!


    Communism?

    Wiki?
  • PeriSoft 2009-04-16 11:54
    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 2009-04-16 11:56
    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 2009-04-16 11:59
    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 2009-04-16 12:07
    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.
  • XioPod 2009-04-16 12:08
    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!

    <br><br>

    Last time i checked, you can't put region blocks in method bodies...
  • Anonymous 2009-04-16 12:09
    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.
  • amischiefr 2009-04-16 12:09
    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 2009-04-16 12:10
    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 2009-04-16 12:11
    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 2009-04-16 12:12
    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 2009-04-16 12:12
    Guaranteed way to keep your customers from becoming disgruntled: don't gruntle them in the first place.
  • brazzy 2009-04-16 12:12
    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 2009-04-16 12:13
    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!

    <br><br>

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


    check again, I see it all the time.
  • brazzy 2009-04-16 12:14
    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 2009-04-16 12:18
    Finally, a pretty thoroughly WTF WTF. Congratulations to Alex et al. for returning to the source: persistently bad management decisions.
  • A Gould 2009-04-16 12:18
    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 2009-04-16 12:21
    [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 2009-04-16 12:23
    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!"

    }
  • Someone You Know 2009-04-16 12:45
    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 2009-04-16 12:51
    This is exactly why offshoring Dev work is a short sighted and stupid idea.
  • OldCoder 2009-04-16 12:56
    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?
  • lonewolf 2009-04-16 12:56
    XioPod:
    tragomaskhalos:
    ...
    <br><br>

    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 2009-04-16 13:00
    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 2009-04-16 13:06
    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.
  • Code Dependent 2009-04-16 13:07
    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 2009-04-16 13:17
    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 2009-04-16 13:21
    "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).
  • Code Dependent 2009-04-16 13:22
    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 2009-04-16 13:28

    Is the first diagram having hot lesbian sex or am I too horny right now ?
  • dsckeld 2009-04-16 13:29
    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!

    <br><br>

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

    Last time I checked, I could...
  • Wodin 2009-04-16 13:29
    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 2009-04-16 13:31
    When you come to Europe, tell people you're Canadian.
  • RBoy 2009-04-16 13:31
    Maybe the overseas developers needed more Lunch & Learn. Or would that be a Curry & Consult?
  • operagost 2009-04-16 13:31
    Rob:
    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"
    I think you mean "mostly dead" or "all dead". Because if it's all dead, all you can do is go through its pockets and look for loose change.
  • Isaac Eiland-Hall 2009-04-16 13:35
    Osno:
    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.


    I think stereotypes hurt on both sides, and that's an excellent example...

    Sure, there's plenty of individual cases to point to - Americans being assholes, and folks elsewhere writing bad code... But there's plenty of counter-examples, as well.

    I feel privileged to be involved in a particular open source game that originated in Germany, but has a global community. Interacting with people from all around the world humanizes them, and it's a situation I wish more of us - all around the world - would find ourselves in.

    The enemy of stereotypes and prejudice is familiarity and friendship.
  • Anonymous Coward 2009-04-16 13:36
    We won't, but certain configurations of Websence will.

    I, for one, welcome our spooneristic profanity uttering overlords.
  • Code Dependent 2009-04-16 13:43
    Anonymous Coward:
    I, for one, welcome our spooneristic profanity uttering overlords.
    Ohmygosh, Reverend Spooner! you just took me back about 30 years, to an episode of Hee Haw in which they told the story of Rindercella and the Sisty Uglers. I can't remember much about it, but I do know that at some point Rindercella slopped her dripper.
  • Sanjay Kumar 2009-04-16 13:43
    >This is exactly why offshoring Dev work is a short sighted and stupid idea.

    Really?
    Almost all of the previous stories are of coding horrors produced inhouse.
    Then one story appears of a coding horror produced offshore.
    Therefore, you conclude that offshoring is bad.

    How about bad programmers do bad programming? What does location have anything to do with it?
  • Some American 2009-04-16 13:46
    Code Dependent:
    On behalf of American assholes the world over, I apologize.


    Congrats. You are an asshole. Who are you to apologize for the actions of others? You arrogant, self-righteous asshole.
  • Code Dependent 2009-04-16 13:51
    Some American:
    Code Dependent:
    On behalf of American assholes the world over, I apologize.
    Congrats. You are an asshole. Who are you to apologize for the actions of others? You arrogant, self-righteous asshole.
    Unlax. My ego's big enough to warrant it.
  • Procedural 2009-04-16 14:02
    m0ffx:
    When you come to Europe, tell people you're Canadian.


    Please don't. Just clean up your image, you guys are off to a good start now.
  • rfsmit 2009-04-16 14:06
    Warren:
    "Each new bug [threw] the development team into crisis-mode"

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


    "inaccurate reporting that lead -> led some banks to think their tellers were robbing them blind"

    And another.
  • Some American 2009-04-16 14:08
    Code Dependent:
    Some American:
    Code Dependent:
    On behalf of American assholes the world over, I apologize.
    Congrats. You are an asshole. Who are you to apologize for the actions of others? You arrogant, self-righteous asshole.
    Unlax. My ego's big enough to warrant it.


    Hmm, perhaps I should have added a "winky-face" so you knew I was laughing as I typed that.

    Big ego or not, just appologize for yourself. I make no apology. I am an asshole afterall. Whether I owe one or not could be debated, but since I'm not going to it would be a waste. (asshole, remember)

  • Bla 2009-04-16 14:10
    Looks like a typical management mistake. Offshore-outsourcing without QA at home.
    It should not be the first time, somebody responsible actually sees the code.
  • Kris 2009-04-16 14:15
    Anonymous:
    What's so bad about using ArrayLists, HashTables, and DataSets to move around data?
    You're thinking of .Net 1.1. List<T> provides much higher performance than ArrayList. Hell, even List<object> is faster.
  • PaladinZ06 2009-04-16 14:19
    Procedural:

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


    Yes.
  • CrashCodes 2009-04-16 14:28
    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".


    Adults are why kids think this is a bad word to use.
    Damn the the dict-supremacists!
  • Code Dependent 2009-04-16 14:34
    Some American:
    Hmm, perhaps I should have added a "winky-face" so you knew I was laughing as I typed that.
    Yeah, I was 90% sure your post was tongue-in-cheek (I'm not even convinced you're American), so my answer was, as well. "Unlax" is even a Bugs Bunny quote.

    My apology was sincere, though. I'm thoroughly ashamed of what the Bush administration has done, and of the perception of Americans in general by the rest of the world as arrogant, isolated in their views and out of touch.
  • Great link for WTF source material buried in this article 2009-04-16 14:38
    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.


    Yeah, strict typing is for the birds! Developers need room to breaaaathe. Type checking inputs is for those stuffed shirts from the 50's.
  • Kazan 2009-04-16 14:41
    Some American:
    (asshole, remember)



    is that something like like

    Will: "You cheated!"
    Cpt Jack: "Pirate!"

    :D
  • Kelly 2009-04-16 14:42
    PeriSoft:
    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".


    Now look what you've done, you've created an infinite loop.
  • Gaspar 2009-04-16 14:49
    NO, bad, non-developer.

    I'll give you a simple example of why that is bad.

    You have a program that does X. It needs to read input from various sources and then process Y. The output will be the same for all input.

    So you create Object A that does all the processing. It connects to Interface B which handles all of the input.

    Interface B is just the API/Parent Class/Interface for several pieces of code. Each Instance of B handles different input, such as user input from the command line, input from a file, input from an XML file, input from a data stream.

    A and B only need to talk to each other on a hand full of methods and DON'T need to care about what each other actually do, just that they hand a couple bits back and forth.

    This is the situation described at the top of the article. It is also the entire heart of OO/Modular programing.
  • pink_fairy 2009-04-16 14:52
    Code Dependent:
    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.
    Hey, we've seen the foties of you and the Mazda. I was really looking forward to pix of you standing by Nelson's Column wearing your Richard Nixon latex mask...
  • Ashamed American 2009-04-16 14:53
    Code Dependent:
    Some American:
    Hmm, perhaps I should have added a "winky-face" so you knew I was laughing as I typed that.
    Yeah, I was 90% sure your post was tongue-in-cheek (I'm not even convinced you're American), so my answer was, as well. "Unlax" is even a Bugs Bunny quote.

    My apology was sincere, though. I'm thoroughly ashamed of what the Bush administration has done, and of the perception of Americans in general by the rest of the world as arrogant, isolated in their views and out of touch.


    Yes and I want to apologize for the Obama administration for giving away region encoded DVDs of American films to our friends across the pond. How arrogant to think they would work and that anyone with taste would even want to watch that drek.
  • wee 2009-04-16 14:53
    none:
    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.


    This, multiplied by 1,024.

    I've worked with offshore developers a few times. You let them run around getting requirements and prototypes all they want, but once they start producing actual code, you get that shit sent to you for review. And if they get squingy about sending you source, you tell them that you're going to find another group who won't be worried about showing you what you are paying for -- at regular intervals!

    You also have to make sure your contract is good enough such that you can bail out if you discover newly-promoted VB coders are working on your Java app.
  • Some American 2009-04-16 14:54
    Kazan:
    Some American:
    (asshole, remember)



    is that something like like

    Will: "You cheated!"
    Cpt Jack: "Pirate!"

    :D


    Very similar, but I've been an asshole and used that excuse longer than that movie has been around.
  • pink_fairy 2009-04-16 14:56
    RBoy:
    Maybe the overseas developers needed more Lunch & Learn. Or would that be a Curry & Consult?
    No, with a Curry & Consult you have a legitimate urgent need to be somewhere else in the next ninety seconds or so ... Better make sure the Meeting Room is strategically placed, convenience-wise. Also best to reclaim all that toilet paper that Mission Statements are written on, because there is now a Greater Need.
  • pink_fairy 2009-04-16 14:59
    OldCoder:
    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?
    Yeah, right.

    What do you think happened right at the end, after the ellipsis? Clue: go back to beginning and locate pattern match.

    Sheesh, Bowytz finally shows off his Mad Fine Writing Skillz, and all you guys can do is complain.
  • moz 2009-04-16 15:00
    Code Dependent:
    This story is summed up in one line: "You get what you pay for."

    Some of the time you get what you pay for. At other times, you get little more than an innovating spelling of the word brilliant.
  • Some American 2009-04-16 15:07
    Code Dependent:
    Some American:
    Hmm, perhaps I should have added a "winky-face" so you knew I was laughing as I typed that.
    Yeah, I was 90% sure your post was tongue-in-cheek (I'm not even convinced you're American), so my answer was, as well. "Unlax" is even a Bugs Bunny quote.

    My apology was sincere, though. I'm thoroughly ashamed of what the Bush administration has done, and of the perception of Americans in general by the rest of the world as arrogant, isolated in their views and out of touch.


    Definitely American and proud of it. I even used to answer American when people asked my nationality pre 9-11, even though I knew they really wanted to know my ancestor's nationality.

    I still don't think you need to apologize for Bush's actions. Unless you voted for him, but even then, he didn't do exactly what he campained on did he?

    I agree it is a shame the rest of the world feels that way about all 300+ million of us but it's what people do. People rarely think well of their betters when they are simply jealous. In the sense that America is a young country and still optimistic and (based on the few dozen I have worked with) foreigners are more pessimistic by nature.
  • Code Dependent 2009-04-16 15:08
    moz:
    Code Dependent:
    This story is summed up in one line: "You get what you pay for."
    Some of the time you get what you pay for. At other times, you get little more than an innovating spelling of the word brilliant.
    The grammar nazis must be at a Lunch & Learn. Nobody's corrected my line to read, "One gets that for which one pays."
  • Anonymous 2009-04-16 15:09
    Great link for WTF source material buried in this article:
    Yeah, strict typing is for the birds! Developers need room to breaaaathe. Type checking inputs is for those stuffed shirts from the 50's.

    Care to explain how using standard-lib supplied container types is related to type checking?
  • pink_fairy 2009-04-16 15:14
    Sanjay Kumar:
    >This is exactly why offshoring Dev work is a short sighted and stupid idea.

    Really?
    Almost all of the previous stories are of coding horrors produced inhouse.
    Then one story appears of a coding horror produced offshore.
    Therefore, you conclude that offshoring is bad.

    How about bad programmers do bad programming? What does location have anything to do with it?
    Be fair (assuming you're an Offie): You may work in an excellent off-shore company that produces good-value, superior designs, code and databases. 100% of your off-shore universe is therefore Good.

    We work for quarterly-profit-driven, "overhead"-averse, short-sighted dingbats in suits. These people blindly hire all the offshore "talent" they can find. And because they're suits, they hire the BO (Big Offies) -- Infosys and the like. All the companies you refused to go near when you graduated from B.I.T. or wherever. (Or Cambridge, or Stanford; yes, I know.)

    Consequently, nearly 100% of our off-shore universe is demented and damaging flotsam like the above.

    There's nothing wrong in theory with off-shore development. There's nothing wrong in theory with getting an infinite number of monkeys to recreate Shakespeare, either, as long as you can solve the Halting problem.
  • Crafty_Shadow 2009-04-16 15:20
    blah:
    Static globalism.


    Funniest. Comment. Ever.
  • pink_fairy 2009-04-16 15:27
    Code Dependent:
    moz:
    Code Dependent:
    This story is summed up in one line: "You get what you pay for."
    Some of the time you get what you pay for. At other times, you get little more than an innovating spelling of the word brilliant.
    The grammar nazis must be at a Lunch & Learn. Nobody's corrected my line to read, "One gets that for which one pays."
    *Burp.* God that pizza was awful. Whoever thought that using "Code Complete" as the base was a good idea?

    Allow me not to correct your lack of correction to your original post, which was not incorrect.

    Unless Robert Lowth has mysteriously resurfaced from the eighteenth century, there aren't any of us Gramma Nazis out here who would object.

    Yes, my paternal grandmother was indeed blonde and blue-eyed, since you ask. (And check out the link -- it's an excellent blog.)
  • iMalc 2009-04-16 15:28
    So you end up in a situation where you can't do a rewrite, not even bit by bit!
    Obviously nobody had the guys to tell their boss that they had inherrited a lemon and that it could not be fixed, using phrases such as "You can't polish a turd" etc.
    As long as you are convincing enough that it really is a turd, then you'd be surprised how much push there can be behind a rewrite.
  • Code Dependent 2009-04-16 15:37
    pink_fairy:
    Well unsaid, sir; well unsaid. Of course, no one here has ever accused the grammar nazis of sanity (yours truly unexcluded).
  • Jim 2009-04-16 15:42
    If America is such a sucky place, how come the lines at the U.S. Embassy H-1 visa window in [insert your non-American country here] are around the block? Whereas the line at the H-1 visa window in your Embassy here in bad old America is of exactly zero length?

    I've encountered managers who have this idea that they can 'package up some requirements' and toss them over the ocean to the lowest bidder and expect to get something other than drek in return. I wonder if they were going to remodel their own home would they approach the bid process the same way?

    Note: I've worked in two multinational companies involving developers from all over the world. In both cases the projects functioned smoothly, the teams worked well together, and no one country had a monopoly on talent. There's nothing wrong with having a multinational development team, the management is worthy of the name.
  • pink_fairy 2009-04-16 15:59
    Jim:
    If America is such a sucky place, how come the lines at the U.S. Embassy H-1 visa window in [insert your non-American country here] are around the block? Whereas the line at the H-1 visa window in your Embassy here in bad old America is of exactly zero length?
    Well, it might be because there is no H-1 visa window in Embassies there in goofy, lubble Merka. Even the English don't queue where there's no front line. I mean, we're pretty damn compulsive about these things, but still.

    Can I have my H-1 now? Pretty please? Seriously?

    Incidentally, do you want to guess who're the second-largest possessors of working visas in the UK? (I'm quoting from memory: it might be third or fourth, or it might even be first.)

    Merchant Bankers, dontcha love 'em. They're practically the only Americans who bother to acquire a passport, and renowned the world over for their special understanding of Culture and Good Breeding. Much good such Culture and Good Breeding has done the world recently.

    (No, dummy: "Merchant Bankers" is not the answer. It's not even a nationality, unless you count Dante's Seventh Circle. But it is a fairly obvious clue.)
  • pink_fairy 2009-04-16 16:01
    Code Dependent:
    pink_fairy:
    Well unsaid, sir; well unsaid. Of course, no one here has ever accused the grammar nazis of sanity (yours truly unexcluded).
    I think you need a comma there to clarify your meaning.

    I read it as "yours, truly unexcluded."

    Which, given my original comment, would be a very subtle compliment. Now I'm just confused.
  • Harry 2009-04-16 16:07
    Sadly, I recognise many of the 'features' quoted here in some software that's still under development by my own project team, including:

    * "helper" classes that do anything and everything, and contain only static methods
    * endless files full of mixed constants -- everything from named queries to navigation rules
    * monolithic page backing beans with a curious blend of data and actions
    * missing database indexes, foreign keys and constraints, with identifiers everywhere
    * no separation between UI and service-tier files; you need to deploy Hibernate to display most web app pages

    It happened on my watch. We failed to meet wildly optimistic deadlines, so management quadrupled the team using anyone who might be free. I failed miserably to maintain the code quality in the face of 6 developers pulling in different directions, and now large parts of the code-base are an unmaintainable mess.

    God help whoever inherits the project -- I'm really not proud of my first real failed development, but I'm damn well not going to stick around to try to add another chunk of functionality for next year.
  • Sanjay Kumar 2009-04-16 16:09
    pink_fairy:

    Be fair (assuming you're an Offie): You may work in an excellent off-shore company that produces good-value, superior designs, code and databases. 100% of your off-shore universe is therefore Good.


    I live and work in Canada. I'm originally from India.

    A client of mine, also a Canadian from India, gave a project for development to India. They did nary a thing for three months. He then gave a different project to me even though I charge three times what that Indian company charges per hour. I produced tremendous output in 10 days. Seeing this, the Indian company got alarmed and made incredible progress on the project they previously didn't have time for.

    So now both projects are running smoothly.

    I guess the moral of the story is that management needs to be as good as the managee.
  • justsomedude 2009-04-16 16:10
    Anonymous Coward:
    We won't, but certain configurations of Websence will.

    I, for one, welcome our spooneristic profanity uttering overlords.


    I second that.

    & i:=@ShakeFistAtWebsense
  • Magnus Persson 2009-04-16 16:24
    Care to explain how using standard-lib supplied container types is related to type checking?


    If you had used a traditional type or class (string, Account, Receipt, etc, whatever), it would be checked at compile time that inadequate objects will not be used; this is exactly what static type checking (what is used in most programming languages used to develop GUI applications) is.

    On the other hand, if you use a generic type (Object, or some collection of unspecified objects), the compiler accepts any input. Unfortunately, if you happen to send in the wrong type of input, you will either (most likely) get exceptions due to type incompatibilities, or (less likely but more effectful) your program will do something really unexpected...

    See http://en.wikipedia.org/wiki/Type_system for more info.
  • Paul 2009-04-16 16:35
    I've worked on both sides of the out-sourcing equation, and in every single project I worked on, the company paying for the out-sourcing owned the source code, reviewed the source code, and QA'ed and ran acceptance testing on the source code.

    Crappily written code was indeed accepted in every case, but it was usually barely acceptable crap and just how crap it was didn't come as a surprise.

    Unless I've managed to avoid meeting this only by some strange quirk of physics, Infotech deserves to go out of business if this is how it does things.
  • Code Dependent 2009-04-16 16:50
    Jim:
    Note: I've worked in two multinational companies involving developers from all over the world. In both cases the projects functioned smoothly, the teams worked well together, and no one country had a monopoly on talent. There's nothing wrong with having a multinational development team, the management is worthy of the name.
    Well, my teammates all work in Dallas and live in the general area, but we are certainly multinational. There are eight of us who have been American for generations: one is black, the rest white. For the others, either they or their parents were born elsewhere and emigrated here. Three of the team are female. The remaining nationalities break down as:

    Two from India
    One from Pakistan
    One from China
    One from Germany
    One from Korea
    One from Vietnam
    One from Cuba

    We get along very well together, everyone does his/her share, and we consistently produce professional, high-quality product.
  • pink_fairy 2009-04-16 17:04
    Magnus Persson:
    Care to explain how using standard-lib supplied container types is related to type checking?


    If you had used a traditional type or class (string, Account, Receipt, etc, whatever), it would be checked at compile time that inadequate objects will not be used; this is exactly what static type checking (what is used in most programming languages used to develop GUI applications) is.

    On the other hand, if you use a generic type (Object, or some collection of unspecified objects), the compiler accepts any input. Unfortunately, if you happen to send in the wrong type of input, you will either (most likely) get exceptions due to type incompatibilities, or (less likely but more effectful) your program will do something really unexpected...

    See http://en.wikipedia.org/wiki/Type_system for more info.
    Naaaah. We only deal in SQL and VB here. But thanks for the link -- it'll save me having to scarf down lactose-intolerant pizza while wasting my lunchbreak listening to some dipso Scandinavian explaining the bleedin obvious via Power Point slides.

    Does that link include Smalltalk? Perl? Python? (Shudder) Javascript? Standard container "types" are only loosely connected to "type checking." For more details, see the endless discussion on Java generics.

    Meanwhile, if you're going to decorate your post with ludicrously obvious links to Wikipedia, try this one. Ayn Rand, dontcha love her?
  • MetaMan 2009-04-16 17:06

    10 BANK ACCEPT LOWEST-BID CONTRACT
    20 CONTRACTOR ACCEPTS LOWEST-BID OFFSHORE OUTSOURCER
    30 OUTSOURCER FIRM MAKES CRAP
    40 CONTRACTOR DELIVERS CRAP TO BANK
    50 BANK USES CRAP AND GRIPES
    60 CONTRACTOR BRINGS SOFTWARE INHOUSE
    70 CONTRACTOR FIRM DELIVERS MORE CRAP TO BANK
    80 BANK USES MORE CRAP AND GRIPES
    90 CONTRACTOR DECIDES TO OUTSOURCE
    99 GOTO 20
  • JOhnny Mack 2009-04-16 17:13
    OMgosh no way dude that is WAY cool!

    RT
    www.privacy.pro.tc
  • arrrrgggggg! 2009-04-16 17:23
    Osno:
    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.


    I agree. The US developers I work with are rubbish, never listen, care more about politics than understanding the problem domain and focusing on their job: provide solutions to the business.

    Their arrogance is what gets me. 3 weeks ago I wrote a process in 6 hours, then some politics happened and basically they said what I had done was crap. I said, like, whatever, and they threw 5 developers at it. Yesterday they came to my end of process data and asked if they could source it as the base-line for their re-write. I tried to explain to them it was about the most arse-about-face thing I have ever come across and now I'm loosing the political battle because I'm not being a 'team player'.

    I know for a fact they will screw it up, they always do. I know they may come back in a years time (after the political dust has settled and they have rearranged their kingdoms) that they will come back and say - hey, that data you produce looks just the ticket - how long have you had this/can we knowledge share what you did blah blah (corporate speak)blah... If they don't it is a fairly safe bet that there will be 'know flaws' fixed with manual processes and 2 admin staff tasked with looking after it.

    Sure, I work for a large corporation and there are a LOT of muppets, by the US guys take the prize for largest muppet to competence ratio, and they simply cannot see how THEY are (more often than not) the problem, not everyone else.

    OK, rant over, and sorry to any decent US developers out there - I'd really really like to know where you're all hiding, because you sure aren't working at my company.
  • GrandmasterB 2009-04-16 17:45
    The question I have, which I know the answer to since this is one giant WTF, is if the US 'analysts' were fired when the outsourcing was stopped. You just DONT get a monstrosity like they got unless the 'analysts' were completely ignoring their jobs. Too much early work would have come back for their review with obvious problems.

    I've had to work with outsourced 'help', and they'll usually give you exactly what you ask for. Not what you need, not what you want, but what you ask for - even if parts of the typically under-specific 'spec' are contradictory. They wont think about how stupid your spec is, they'll just give you what you spec out and take your money. I'm not knocking them for that, as ultimately they may not even know what the program they are making does if they dont have the big picture.

  • Some American 2009-04-16 17:48
    arrrrgggggg!:
    sorry to any decent US developers out there - I'd really really like to know where you're all hiding, because you sure aren't working at my company.
    I'm working right here in the good ole USofA. Not sure if your are foriegn and working here too, in which case I know how to cure you of the problem of dealing with Americans. Or if you are workign outside the USA and are just ungrateful an American company hired yours and is paying you to do work for them. Right now, I for one, am very grateful to be working anywhere.


    arrrrgggggg!:
    The US developers I work with are rubbish, never listen, care more about politics than understanding the problem domain and focusing on their job: provide solutions to the business.
    Ah, seems you are stuck working with some of our "No child left behind" types. Do you know, teachers are now no longer allowed to fail students over here? We also no longer seperate out what used to be know as the "gifted and talented" instead we lump them in with everyone else and hold them back from their full potential. We are teaching to the lowest common denominator, you see. Can't make any kids feel bad they are stupid so we make them all stupid. Try working with some older American developers, they at least got an education.
  • kayakyakr 2009-04-16 18:03
    pink_fairy:
    OldCoder:
    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?
    Yeah, right.

    What do you think happened right at the end, after the ellipsis? Clue: go back to beginning and locate pattern match.

    Sheesh, Bowytz finally shows off his Mad Fine Writing Skillz, and all you guys can do is complain.


    I apologize. It was early in the morning and apparently I'm an American asshole.

    also my captcha is jumentum. I'm going to count it as a new vocabulary word: jumentum - what a jew (yo) possesses when he enters the "code zone"
  • Bob 2009-04-16 18:08
    Hey! I found the real WTF!

    "The developers complied, but nothing could have prepared Steve, the CEO, or anyone else for what they were about to inherit."

    So, they had a contract with another company where that company would produce executables - but hold on to the source code?

    Seriously?

    I don't care if you have the Indian CEO's retarded 10 year old nephew or a hand-picked team of the best of the best of the best westerners at a thousand dollars a minute - if you don't review their code, you're doing it wrong.

    If they had done it right, they'ld have reviewed the code weekly - and known well before the first release that the subcontrators were incompetent. And then they could have found different subcontractors.

    The problem with outsourcing isn't the lack of quality. Its the lack of quality control.
  • pink_fairy 2009-04-16 19:09
    kayakyakr:
    pink_fairy:
    kayakyakr:
    Is it just me or have the feature articles been ending just as the story seems like it's about to become interesting?
    Yeah, right.

    What do you think happened right at the end, after the ellipsis? Clue: go back to beginning and locate pattern match.

    Sheesh, Bowytz finally shows off his Mad Fine Writing Skillz, and all you guys can do is complain.


    I apologize. It was early in the morning and apparently I'm an American asshole.

    also my captcha is jumentum. I'm going to count it as a new vocabulary word: jumentum - what a jew (yo) possesses when he enters the "code zone"
    You are so, so, not going to tempt me into Ebonics, as in "yo, yo-yo yo boy..."

    An apology on this site is a yoyoyoyoyoyo (oops, stuck in obsessive-compulsive behaviour) absurdity. I hereby apologise double, which by co-incidence is half my name.

    It's nice to know that you've drunk enough coffee to spot that, for once in the last month or so, there's an actual elegance to the WTF. I mean, that ellipsis was pretty cool. No unicorns, no panning over endless Amazonian forest, no cutting a pissed-off Harrison Ford giving the speech of his life while he thinks he's just walking along the sea-front whilst fulfilling a Contractual Obligation. Just Art.

    I'm in love with that ellipsis. Three tiny dots, just leading to the future of TDWTF ...

    Which doesn't include friggin pod-casts, unless you live in a pod and/or have a limb in a cast. But that's Another Thread.

    ... so I can't accept your apology. But I'd be happy to buy you a cup of Yo next time we meet in the code zone.

    (For any real Nazis out there, that's a phonetic joke in extremely bad taste. The drink I'm actually proposing is squeezed from huge overhanging fronds by fairies in the early morning.)

    (And for any homophobes out there...

    Well, y'all are on the Pink List. We know where you park your pickups.)
  • antifud 2009-04-16 20:52
    In Communist Russia, INSANE LOW PRICES own you!
  • Beta 2009-04-16 21:47
    On a serious note, there is something to be said for trying to fix this mess piecemeal instead of starting from scratch, but it's a business reason, not a software reason.

    Yes, starting over is the most efficient way, it's the quickest, cheapest path to good code. But it's a path you can't use because it involves going bankrupt before reaching the goal. The clients are just about ready to wash their hands of you, they won't wait six months for the grand unveiling, your only hope is to keep the code running and show improvement starting now.

    I had a gruesome project a while ago under a couple of bosses (alarm phrase right there) who didn't understand this. As a hard deadline grew steadily closer they spent their time dreaming up ever-more-perfect architecture and ignoring all my warnings while I worked like a bee on meth. In the end they showed their true talent: being elsewhere when things hit the fan. The fact that such cretins can rise to managerial positions is a strong clue to the prevelance of WTF projects (and maybe the bad American reputation).
  • halcyon1234 2009-04-16 21:54
    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!>


    Gah! I'm working with the exact same thing-- except instead of str it's @sql, and the block is followed by EXEC(@sql)
  • billy 2009-04-16 23:38
    I don't know about that... I worked on a project for one of the VERY big U.S. banks and I told my manager daily that the "India Team" was delivering crap. He diligently passed the info up the chain and was regularly reminded that the company was saving a ton of money by outsourcing some of the work.

    After 2 years, and literally millions of dollars, the project was scrapped.

    You can't save people from their own stupidity.
  • Herman 2009-04-17 03:01
    Ah, the old one million responsibilities per class.
  • hikari 2009-04-17 04:11
    I was wondering that; the .NET framework even uses IDictionary for moving configuration options about in the Remoting namespace (the documented example is using a Hashtable).

    I find using a similar approach works well sometimes; otherwise you can end up having a configuration options class representing a hideous number of mutually exclusive options to cover different possible configuration scenarios.

    One case I had was configuring a connection, where the underlying connection type could either be old school FTP or shiny SFTP. There are options for SFTP that just aren't relevant to FTP; sometimes you just don't need to include a set of options, e.g. for configuring a proxy.

    You lose your strongly typed goodness and sometimes bugs can be hard to pick up (if your keys are case dependant strings, for example), but you make up for it by not having a huge ugly classes most of which might not be used and some of those problems can be designed away.
  • eNuff Already 2009-04-17 07:47
    Reminds me of an app that was outsourced by a company I used to work for. The lab that originally maintained the code was in the habit of adding small features and never updating the specs. If they thought the feature was needed, it was dropped in whenever the developer was 'in that area'.

    The entire lab was outsourced and sent overseas to a company with a relatively good reputation. They got the specs and the source code.

    The first thing they did: Reviewed the specs and removed every undocumented feature.

    It took months to get the specs (and program) updated to fix the dozens of problems that was caused by the cleanup.
  • bjolling 2009-04-17 08:13
    OldCoder:
    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?
    The whole ending?!
  • IByte 2009-04-17 08:14
    m0ffx:
    You shouldn't have two mutually dependent components. If they depend on each other, they should just be one component.
    Well, a listener without a speaker or a speaker without a listener is pretty pointless, unless you want to talk to yourself all day...
  • "Steve" 2009-04-17 08:31
    The original submission I wrote was *much* too long to include on the mainpage, but I've posted technical details about this application on StackOverflow:

    http://stackoverflow.com/questions/434414/what-is-the-most-evil-code-you-have-ever-seen-in-a-production-enterprise-environm/434562#434562

    Seriously, read that. The application was a beast from start to finish. It was written in C#, but it looked like it was written by a bunch of developers whose latest programming experience didn't go beyond VB5.

    To fill in some of the missing details: a few years ago my company wanted to produce a new product for our banks. The project management triangle states "you can have a product that's done well, cheap, and quick -- choose two". We went with fast and cheap at the expense of quality, so we offshored developed to the lowest bidder.

    Of course, that's not why this project spiraled out of control. We were an agile shop, so we didn't produce requirements on any kind of permanent medium. Requirements were community by whiteboards, notecards, email, and word of mouth. So, when we passed the project off to India, we didn't provide them with any requirements. Strike 1.

    Even without requirements, India's turnaround time was amazing. They were able to produce an executbale within days of us requesting a change, the turnaround time was amazing. However, India developed pretty much unsupervised, its not clear to me whether there were any code reviews. We never saw any of the code until it became a crisis. Strike 2.

    We started selling eTeller 1.0, with the minimal functionality it had, to our customers and they really enjoyed it. We expected bug reports, feature requests, and so on as part of the normal lifecycle of product development. India was quick to fix the bugs for the first few months, but after a while their turnaround time began to really slow down. The bug queue increased from a few dozen bugs to quadruple digits, and each new release of the application spawned an entirely new set of bugs.

    The application became so unstable that it was crashing 40-50 times a day. It got to the point where bank presidents were putting the president of my company on speed dial just to report bugs. We were on the verge of losing a number of customers.

    It got to a point where we said "alright India, if you can't hold up your end of the bargain, we'll do it ourselves". We decided to add some of our own manpower to the programming effort, essentially going through the code and fumigating bugs. When we saw the code for the first time, it became *immediately* obvious why India was unable to attack bugs: the code base was 130,000 LOC of spaghetti code, as described in the link to SO above. The entire application was written using the "just do what it takes" FAD methodology.


    We were reluctant to make any sweeping changes to the application because, in an effort to save time, India has skipped all form of documentation, QA, and above all else: no unit tests. Strike 3.

    We terminated our contract with India immediately and moved the project in-house. Since the application was already in production, my dev team had to work *very* carefully to untangle the code. Over the course of 12 months, and maybe a few WTF's committed by our own team (yours truly included), we were able to pare down the code base to a slim 36,000 LOC without losing any functionality (and more than that, we *added* a lot of functionality too!).

    I left the company in Oct 2008, just as the eTeller code was starting to become palatable. But, at the very least, this WTF has a happy ending: my team and I rescued the application from oblivion, saved the company potential lost customers (and lawsuits!), and the application now has the most solid code out of all of our products.
  • zedhex 2009-04-17 09:14
    Shaftoe:
    This is exactly why offshoring Dev work is a short sighted and stupid idea.


    I run an offshore software company in Thailand. I also spent 15 years working as a developer in the US, Switzerland and the UK. I also employ some highly skilled western trained developers. I don't employ half-trained monkeys. Our code is exactly the same high quality stuff I wrote while working onshore. Just because we write it in SE Asia doesn't make it crap.
  • my name is missing 2009-04-17 09:19
    Having seen Bank software in person, this is actually not far from the general case.
  • No one of importance 2009-04-17 09:20
    Perhaps "you don't get what you don't pay for" is more accurate because powerful, important customers (e.g., the UK, Canada) have paid millions to E*S or Acc*****e or <prestigious producer of egregious crap> and received garbage. There are few bargains but many swindles.
  • Jonathan 2009-04-17 11:09
  • Jonathan 2009-04-17 11:12
    Procedural:

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

    It's hot gay sex. http://en.wikipedia.org/wiki/Male
  • god here 2009-04-17 13:32
    m0ffx:
    You shouldn't have two mutually dependent components. If they depend on each other, they should just be one component.


    That all depends on other things like SLOC.
  • Procedural 2009-04-17 14:08
    Jonathan:
    Procedural:

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

    It's hot gay sex. http://en.wikipedia.org/wiki/Male


    I suppose it could also be, but then you could to do away with the clearly illustrated double-sided dildo. If the objects naturally came with base methods, why would Alex slip in this clearly superfluous interface ? I think he's a better architect than that !
  • Procedural 2009-04-17 14:24
    Procedural:
    Jonathan:
    Procedural:

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

    It's hot gay sex. http://en.wikipedia.org/wiki/Male


    I suppose it could also be, but then you could to do away with the clearly illustrated double-sided dildo. If the objects naturally came with base methods, why would Alex slip in this clearly superfluous interface ? I think he's a better architect than that !


    I want to clearly delineate my argumentative structure here, including its implicit requirements because, try as I might to be clear, sometimes people miss what is clearly spelled out in this limpid and straightforward argumentation.

    Either
    1. This is gay sex, and therefore Alex is a bad software architect (or at least one with limited experience of the specific problem domain) or
    2. This is lesbian sex and it confirms that Alex is indeed a good architect.

    I think it is about time that we clearly and definitely establish the basics here.

    (I am presuming here that Alex isn't a fan of agile development, but I could be wrong)
  • ogilmor 2009-04-17 16:19
    This is why I fully support offshoring....fixing their shite keeps competent developers in work for YEARS....LOL
  • anon 2009-04-17 16:49
    This is exactly my experience with offshore development.
  • bank contractor 2009-04-17 17:29
    Wipro and Tata are just the same. A tiny competent minority put up a prototype taster to suck in the customer then guys who bought their degrees at the local vegetable market do the rest.
  • pink_fairy 2009-04-18 09:55
    IByte:
    m0ffx:
    You shouldn't have two mutually dependent components. If they depend on each other, they should just be one component.
    Well, a listener without a speaker or a speaker without a listener is pretty pointless, unless you want to talk to yourself all day...
    *Sigh*.

    You might want to listen to Radio WTF all day, every day. And Radio WTF may narrowcast to you and only you, because after all you're clearly an idiot and will buy anything they advertise.

    Generally, this is not considered a sound business model. I believe the official term for it is "Tin Foil Hat syndrome."
  • Anonymous 2009-04-19 00:18
    I recognize the specific details of this story, and was on the same development team as Steve. The code we inherited was truly as bad as described, but I'd say our problems were greatly compounded by programmer overzealousness for making the code "beautiful", without putting in the necessary effort to make sure the new code didn't break stuff that was already working.

    Yeah, that takes time and a lot more effort to try to understand the old code. But by throwing out old code as "incomprehensible" instead of wading through it and trying to make sense of it first, a lot of stuff tended to break. Lots of details that had spent over a year being refined (and the code messier for it) tended to get lost in these rewrites. And several months later, finding out that some obscure feature that only a few customers used was broken because of that.

    There are definite long term advantages to making the code more maintainable, and the code base has come a really, really long way in that regard. But when paying customers are depending on software for their business, it's business suicide to ignore the short term "this has to be in a working state the next time we send it out, with all the functionality they depended on in the last version".
  • not that witty 2009-04-19 03:29
    blah:
    What the blimey do you all think you're doing? We should share an account and edit a single comment!


    so you're suggesting a Wiki?
  • fugia 2009-04-19 07:10
    Anonymous:
    So, we have incompetent offshore developers coupled with management who are all too ready to repeat their past mistakes.

    I wonder what would happen if you outsourced the management.
  • C 2009-04-19 15:19
    telluryde:
    "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).
    Ummm... Please try to think outside of the ASCII box... Nvarchar(255). ;-)
  • C 2009-04-19 15:25
    not that witty:
    blah:
    What the blimey do you all think you're doing? We should share an account and edit a single comment!


    so you're suggesting a Wiki?
    You should learn a witty thing or two yourself. One of them is called "search", and you can use it to see if your main point (in this case "wiki") was already mentioned or not...
  • Metal Lord 2009-04-20 09:16
    does this smell like a 90's comeback, or what?
  • Dewk 2009-04-20 14:28
    Osno:
    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.


    All I can say is that the assumption is proven in reality. While I see my opinion changing in the future as the US shifts away from its' core founding principals that made the country so great, I still don't see another country that I would rather live in (OK, maybe New Zealand). The country I think is better than all others was created by....Americans....The countries that I would never live in were created by.....not Americans.... Does the fact that a certain group of people created something like a country better than another group of people make them better, maybe not. But it should cause one to at least consider that maybe it does. There must be something that the US has been doing that other countries do not that has made it so successful.
  • Dewk 2009-04-20 14:37
    [quote user="Code Dependent"][quote user="Some American"]I'm thoroughly ashamed of what the Bush administration has done, and of the perception of Americans in general by the rest of the world as arrogant, isolated in their views and out of touch.[/quote]

    Maybe it is the rest of the world that is arrogant, isolated in their views and out of touch with reality? I know it's trendy for us all to blame the US for the world's problems. Even our president has hopped on the bandwagon.

    Hey, Europe, Africa and Asia. You have been screwing up the world since history began. The US has only been around for a couple hundred years and only been a major player in the international scene for less than a century. Don't blame the US because you have not been able to get your act together over many millennium while we have been able to do it in a fraction of the time. Get past your jealousy and start putting blame where it belongs....yourselves.
  • Andre 2009-04-20 15:14
    Me and my ex colleague got some serious flashbacks while reading this article, having to support a Delphi application of similar size, with all the code being kept in user interface forms.
    It is over a year ago now since we resigned and we keep thinking (its not unlike like Posttraumatic stress disorder, having the occasional nightmare on returning back to work), what could we have done to tame that beast?
    A month ago I came up with the idea of off-shoring it too India for refactoring...
    Now I understand that this would have made things only worse!
    So yes, the application was doomed - and resigning was the only good option.

    Sympathy to all those people suffering right now maintaining applications like this one!
    Our thoughts are with you...
  • DWalker59 2009-04-20 18:57
    Procedural:
    m0ffx:
    When you come to Europe, tell people you're Canadian.


    Please don't. Just clean up your image, you guys are off to a good start now.


    Right. Don't lie. Tell people you're an American, and then don't act like an ass. Maybe the rest of the world will start thinking that not all Americans are rude and ignorant!
  • DWalker59 2009-04-20 18:59
    Dewk:
    Osno:
    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.


    All I can say is that the assumption is proven in reality. While I see my opinion changing in the future as the US shifts away from its' core founding principals that made the country so great, I still don't see another country that I would rather live in (OK, maybe New Zealand). The country I think is better than all others was created by....Americans....The countries that I would never live in were created by.....not Americans.... Does the fact that a certain group of people created something like a country better than another group of people make them better, maybe not. But it should cause one to at least consider that maybe it does. There must be something that the US has been doing that other countries do not that has made it so successful.


    Not bad, only three grammar/spelling mistakes that I see.
  • Mitur Binesderti 2009-04-21 13:30
    DWalker59:
    Dewk:
    Osno:
    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.


    All I can say is that the assumption is proven in reality. While I see my opinion changing in the future as the US shifts away from its' core founding principals that made the country so great, I still don't see another country that I would rather live in (OK, maybe New Zealand). The country I think is better than all others was created by....Americans....The countries that I would never live in were created by.....not Americans.... Does the fact that a certain group of people created something like a country better than another group of people make them better, maybe not. But it should cause one to at least consider that maybe it does. There must be something that the US has been doing that other countries do not that has made it so successful.


    Not bad, only three grammar/spelling mistakes that I see.


    Are you counting the four dot elpises as one error? 'Cause there's four of 'em.
  • Jordan 2009-04-22 14:30
    Nothing inherently bad, however, it does depend on how you're passing it. A Class (Model) helps you organize related data and specifies how that data should be accessed. Throwing around data is a recipe for disaster. Whoops...too late!
  • SubSpace 2009-04-22 17:18
    telluryde:
    "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).
    That's just so 20th century. varchar(MAX) ftw!
  • rong1982 2009-04-23 11:57
  • rong1982 2009-04-23 11:57
    搬家搬家 搬家公司在職進修 婚紗 新娘秘書 汽車旅館 彩妝造型 新娘秘書 票貼 室內設計 室內設計 外遇 抓姦 應收帳款 徵信 徵信社 外遇 徵信 徵信社 外遇 植牙 牙齒矯正 坐月子 宜蘭民宿 婚禮佈置 宜蘭民宿推薦 催眠 派報 太陽能熱水器 Shade sail nike shoes 關鍵字廣告 租屋 搬家 搬家 買房子 花蓮民宿 花蓮民宿 花店 租房子 xo醬 房屋貸款 搬家公司 減肥 減重 床墊 創業加盟 團體服 學英文 英文 補習班 勞工體檢 資源回收 生日禮物 團體服 團體制服 班服 塑膠 日立家電 飾品批發 MBA 在职研究生 在职博士 电动隔膜泵 自吸泵 化工泵 离心泵 磁力泵 螺杆泵 水泵 隔膜泵 气动隔膜泵 婚禮佈置 婚禮佈置 婚禮佈置 酒店經紀 酒店經紀 班服配件 團體服配件 團體服 班服 團體服 班服 團體服 室內設計公司 室內設計公司 室內設計公司 金門高梁酒變頻洗衣機學英文
  • jackon 2009-05-20 01:02
    uggs, with a legendary brand, first to see the snow ugg boots ,Ugg people will not Ben Ben flu cartoon form, and is a boots, as a result of many European and American film star has adequate Gordon Street Ugg snow boots and a pretty popular in Europe and America look like the earth, Ugg blowing sustained winds of the popular Madden, in Japan, Taiwan has a lot of fans Ugg.
  • Lance Walton 2009-05-27 16:09
    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.


    First, you are not just moving data around. You are moving it around for a reason. That reason is usually better served with the assistance of abstraction barriers.

    Second, if you wrap the collection and then move all of the behaviour that is relevant into the wrapper, then you don't have a degenerate 'wrapper' but a very semantically rich class.

    Third, we don't define structures for their structure, we define them for the behaviour that is associated with that structure.
  • Brian Herman 2010-04-10 11:15
    Can you post the rest of your submission, your stack overflow was great, however I read that first.