• Gerrit (unregistered) in reply to Walleye
    Walleye:
    It's been a while since I used COBOL, so this is from memory. Define an 8-digit packed-decimal numeric field. Then redefine the storage as two four-digit packed decimal fields. Set the 8-digit field to a negative, with zeroes in the uppper four digits, then set the second of the four-digit fields to zero. The 8-digit field now has the value of -0.

    Packed decimal on an S/390 uses one decimal digit per nibble. The last nibble contains x'F' for unsigned numbers, and x'C' (positive) or x'D' (negative) for signed numbers. You can redefine a 7-digit packed number ((7+1)/2=4 bytes) as two 3-digit packed numbers (each (3+1)/2=2 bytes).

    Assigning zero to the 7-digit number (signed) would result in:

    x'0000000C'

    Assigning zeroes to both 3-digit nimbers would result in:

    x'000C000C'

    Assigning -1000 to the 7-digit number:

    x'0001000D'

    The second 3-digit number contains x'000D', negative zero. The first number is not a valid packed decimal value, but if I remember correctly it would still be interpreted as positive or negative zero by the hardware.

    I don't remember having trouble comparing positive and negative zeroes in COBOL. It's been more than 10 years since I last used it, but I think it would remember it as a mayor issue if -0 != +0. But when you redefine numbers in this way you loose all type safety and wierd things can happen.

  • (cs) in reply to APH

    Okay, when you said it I looked up and saw that. But I was playing zork just recently and I haven't grew up in that geek culture.

  • Rocketboy (unregistered)

    public static poopstrings { public static Poop = "I'm the poop."; public static Poop_Location = "Here.";

    }

  • methinks (unregistered) in reply to real_aardvark
    real_aardvark:
    methinks:
    Note that in most cases, for two instances of class Double, d1 and d2, the value of d1.equals(d2) is true if and only if

    d1.doubleValue() == d2.doubleValue()

    also has the value true. However, there are two exceptions:

    • If d1 and d2 both represent Double.NaN, then the equals method returns true, even though Double.NaN==Double.NaN has the value false.

    • If d1 represents +0.0 while d2 represents -0.0, or vice versa, the equal test has the value false, even though +0.0==-0.0 has the value true.

    This definition allows hash tables to operate properly."

    I have this plan: when I finally get around to dropping acid, I'm going to make sure I have a handy copy of the Java API docs (and whichever version of the "standards" applies at that particular moment) by my side. If I'm going to expand my mind, I really want to expand my mind.

    I don't even understand the point of the first exception, although I'm sure I would if I avoided the brown stuff.

    Even with the brown stuff, only 7 words: Each. key. exactly. once. in. hash. table.

    NaN is represented by one distinct bit pattern.

    +0 and -0 are, OTOH, different bit patterns, courtesy of the sign bit.

    See?

    The second exception is, however, bizarre. Does this mean that the standard Java hash table uses floating point values to represent keys?

    No. And no one implied anything like that. You can however use them if you see fit, and in that case, see above: Different bit patterns, therefore correctly considered as different keys.

    All wrappers do implement equals() and hashCode() in a consistent way in order to support their use in collections - yes, also as keys, and yes, all of them. Whether Doubles (or Floats, at that) are an apt choice for keys in hashing collections is in fact debatable, but it is certainly not an error per se as long as the contracts are fulfilled, which is precisely the reason for these two exceptions.

    We are having more than enough trouble with people using home-grown mutable (!) classes as keys in hash tables, with equals()/hashCode()-methods, which either are not implemented (i.e. overridden) in the first place or blatantly ignore the necessary contracts and/or are not implemented as a consistent pair. Afterwards the same people blame the collections for malfunctioning and abysmal performance.

    I prefer even Double/Float-instances used as keys over that at any given time, because it is at least correct, thank you very much.

    Or is there some even more mind-boggling reason for this completely counter-intuitive behaviour?

    Apart from the compelling reason given above, there are ways to yield -0 as result of mathematical operations (e.g. lim) or arithmetic underflows (if you care to call this mind-boggling), and you have to jump through some (mostly non-portable) hoops in most other languages to check for -0 in such cases. See e.g. http://en.wikipedia.org/wiki/Negative_zero

    Implementing a sensible algorithm allows hash tables to operate properly.

    Java.equals(_WTF);

    The way this wrapper is implemented is obviously a way to guarantee correct behaviour in case someone does (perhaps not very intelligently) use Doubles/Floats as keys in a hash table, without having to resort to any exceptional handling inside the collection itself. The algorithm is without doubt sensible, as it does never make any exceptions to the "each key exactly once in a hash table"-rule. The (not really very) exceptional behaviour for Doubles/Floats to guarantee this is IMHO in quite good hands inside these wrapper classes - Josh Bloch et al. are not stupid.

    Should some of the wrappers behave in a different way that would in fact break correct hash table behaviour, or - even worse - should the hash table handle this special cases itself it would really be a major WTF and I'm sure you'd sneer at that too, am I right? ;o) And you should, nota bene... I would gladly second that.

  • (cs) in reply to vt_mruhlin
    vt_mruhlin:
    APH:
    Am I the only one who caught the Zork reference? Seriously, isn't ANYBODY going to be eaten by a grue?

    No, you're just the only one who thought it was obscure enough to merit a "am I the only one who caught it" post?

    Not knowing that reference would be like not knowing where the term "Good Samaritan" comes from.

    Let me quote from Luke:

    "A man was going down from Jerusalem to Jericho, when he fell into the hands of robbers. They stripped him of his clothes, beat him and went away, leaving him half dead. A priest happened to be going down the same road, and when he saw the man, he passed by on the other side. So too, a Levite, when he came to the place and saw him, passed by on the other side. But a Samaritan, as he traveled, came where the man was; and when he saw him, he took pity on him.

    "It is pitch black," said the Samaritan. "You are likely to be eaten by a grue."

    "What is a grue?" sayeth the naked and beaten and half dead man, for no other reason than that the plot of the game requireth it.

    "The grue is a sinister, lurking presence in the dark places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light. No grue has ever been seen by the light of day, and few have survived its fearsome jaws to tell the tale."

    "OK," sayeth the man, "that all makes sense to me now. All that stuff about the Levite and the Pharisee was just filler, wasn't it?

    "Why didn't you just mention the grue in the first place?"

    "Because you have to ask," said Jesus. "That's how the Gospel works on the DEC PDP-10."

    ... the Gospel According to Aardvark, 9:22.

  • HB (unregistered) in reply to APH

    You're in a mess of public static Strings, all alike...

  • The Fake WTF (unregistered) in reply to APH
    APH:
    Am I the only one who caught the Zork reference? Seriously, isn't ANYBODY going to be eaten by a grue?

    Not me. I have a light!

  • (cs) in reply to Walleye
    Walleye:
    Zap Brannigan:
    A frustrated COBOL programmer acting out?

    It must be. COBOL is the only language that I know of where it's possible to have a negative zero. (And, yes, it does not equal zero!)

    public static String _AUTO_STTS_OIE = "-0";

    If you're running on a sign-magnitude architecture, assembly language has no trouble with negative zero.

  • Ash (unregistered)

    Alex,

    I think there is a bug in DailyWTF. When i try to close my eyes to visualise with you, I cannot see your blog anymore.

  • (cs) in reply to BK
    BK:
    "OK, now open your eyes. Which code file was it? If you're like me, then it was a preliminary collection of constants and enumerations based on the business requirements"

    I'm happy to report that I am not like you and I would never had started with such a file. Most likely I would have never introduced it to the project. If someone else would try doing so, I would actively fight the idea, because it introduces coupling between otherwise unrelated parts of the software.

    I am happy to report that I am more like BK than the original poster. However, BK is not nearly emphatic enough.

    I cannot think off-hand of a worse place to start a programming project than a constants file.

    Oh, wait. I got it. How about by creating your database before you've written a single line of code? That'd be brilliant. Or not; on second thought, that's not quite as bad as a 'constants' file: it's generally easier to rebuild a database when you've found out you need to than it is to break out of the mental trap that is having a 'constants' file.

    For what it's worth, when I'm fully in charge of the project, the first line of code goes in a file with a 't' extension, in a 't' directory. Otherwise, it's probably going to be whatever file will contain the language's equivalent to main() - but don't worry, I'll be in others before long.

  • (cs) in reply to Gruesome Grue
    Gruesome Grue:
    vman:
    APH:
    Am I the only one who caught the Zork reference? Seriously, isn't ANYBODY going to be eaten by a grue?
    Of course not, they're in a sunny meadow. Everyone knows that the grue only eats you if you enter a dark area without a light.
    I think the expression was "It is pitch black."

    A grue won't even eat you then. You can sit around in pitch black darkness for hours - days, even - without getting eaten by a grue.

    Grues only eat you if you move around after it's pitch black.

  • nano (unregistered)
    Eman: Last but not least, WTF is up with putting a number in the constant name like that? The constant name should describe the MEANING of the constant, not its contents. Like, what is 14? The number of days in two weeks? One more than a baker's dozen? That code is not even close to good practice.

    You're right! I'll take a crack at it...

    public static String _GREATER_THAN_OR_EQUAL_TO_ONE_MORE_THAN_A_BAKERS_DOZEN_AND_ALSO_COINCIDENTALLY_GREATER_THAN_OR_EQUAL_TWO_WEEKS = ">=14";
    
  • CoyneT (unregistered)

    Now it should have been entirely obvious to anyone that class _1269 is the first letter of the hurricane names for each season. The missing Q and U, and the fact it ends with W, totally give it away.

    ...Oh, wait, the "V" is missing, too. Hmmmm.....

    Okay, it's the hurricane list alright, but you're right: It's not finished.

  • Izzy (unregistered)

    We're lost in a twisted maze of little constants, all different.

  • Jan (unregistered)

    I once worked in a Cobol shop that had made a transition to Java. However, for some reason they decided to stick to the naming scheme of Cobol for naming their classes.

    The result: class names of exactly eight letters or digits, with all letters in uppercase. For example: CUAPT32V.

  • (cs) in reply to SpComb
    SpComb:
    * Closes eyes for a moment and turns text-to-speech on *
        tdwtf-csod-constantly-expanding.mp3
    
    

    Taste mild, 09:19 in length. Best served warm with a generous helping of WTF.

    Love the way the voice cracks on every 'static', captures the mood of this WTF very brillantly

  • dotslash (unregistered)

    Now THIS is an efficiently code, even people that does'nt understand codes could use it!

    I'm thinking of using similary code, but instead of variable names like "_A", i would use arrays that will cause serious confusion :)

  • mutax (unregistered)

    well, the real WTF is, that you cannot see the performance-gain that occures when you use the classes.

    I mean, this is Java, isn't it?

    In Java Strings are immutable, so predefining these Strings you keep them in Memory and don't waste time allocating Memory for new Strings - You even dont's have to rely on garbage collection to get new free memory for your Strings - You cannot run out of memory allocating a new String, because they all are already there!

    brilliant!

  • Ray (unregistered) in reply to akatherder

    I'm sorry, but are you serious?

  • (cs) in reply to Buddy
    Buddy:
    Back in my hobby days, I once wrote a game where I needed a constant that tied everything together. It had to do with size of int, extent of the game area, color depth of the screen, speed of the processor and user's angle of view. If memory serves me correct, the constant was in the high teens. Good times.

    Priceless: the Great Unifying Constant (GUC)

  • (cs) in reply to APH
    APH:
    Am I the only one who caught the Zork reference?

    Peaceful meadow .... check. Mailbox ........... check.

    Hang on... isn't there something missing?

    APH:
    Seriously, isn't ANYBODY going to be eaten by a grue?

    zOMG THEY ATE THE WHOLE GODDAM HOUSE!!! RUN!!!!!!1!!!

  • Vladimir (unregistered) in reply to akatherder
    akatherder:
    public static String _GREATER_THAN_OR_EQUAL14 = ">=14";

    This is just good practice. It completely removes the ambiguity of the magic number 14 in your code. _GREATER_THAN_OR_EQUAL14 is much shorter than typing out >=14 EVERY TIME you want to do a comparison to 14.

    Think a situation where the United Nations Commitee of Changing Numbers Againts Commons Sense, the UNCCNACS, decides to substitute the number 14 with some other value! It will be much easier to fix the code when every reference to 14 is in constants.

    Makes sense for me.

  • Da' Man (unregistered)

    Anybody already mentioned "String Pooling"? Yes, "String Pooling". It's cool! It saves a few bytes... oh, and Java does it automatically actually. No need to bother with string constants like these.

  • Thomas (unregistered)

    Looks like a new incarnation of the bible code...

  • Da' Man (unregistered) in reply to Walleye
    Walleye:
    It must be. COBOL is the only language that I know of where it's possible to have a negative zero. (And, yes, it does not equal zero!)

    public static String _AUTO_STTS_OIE = "-0";

    No, Java also has negative Zero.

  • Jasper (unregistered)

    This reminds me of an April Fool's joke that my colleagues and me played once. I'm sure isn't original, but it worked very well on one of the other developers there.

    We were programming in C, and one of the rules was that there should be no "magic numbers" or other constants in the code; these should all be #defined in a header file. So, we made a header file (generated with a small program) that looked like this:

    #define ZERO 0 #define ONE 1 #define TWO 2 #define THREE 3 /* snip */ #define NINEHUNDREDANDNINETYEIGHT 998 #define NINEHUNDREDANDNINETYNINE 999 #define THOUSAND 1000

    We presented this to our fellow developer and she freaked out. She: "You're not seriously going to do this, are you?!", we: "Yes, we've already implemented this though all the code!". It was funny.

  • Jasper (unregistered) in reply to Da' Man
    Da' Man:
    No, Java also has negative Zero.
    No, Java does not have a negative zero that is distinct from zero. Try this:
    public class JavaDoesNotHaveMultipleValuesForZero {
        public static void main(String[] args) {
            System.out.println(0 == -0);
            System.out.println(0.0 == -0.0);
        }
    }
  • (cs) in reply to I walked the dinosaur
    I walked the dinosaur:
    I think TopCod3r's awesome VB skills allow him to make OVER 9000 dollars a year!

    Around here (in Europe) VB skills are worth €500/day or some €120,000 (or, currently, some $180,000) per year (could be more, though, depending on the project).

    Now what??? Who is stupid, my Dear?

  • Pierre Tramo (unregistered) in reply to ClaudeSuck.de
    ClaudeSuck.de:
    I walked the dinosaur:
    I think TopCod3r's awesome VB skills allow him to make OVER 9000 dollars a year!
    Around here (in Europe) VB skills are worth €500/day or some €120,000 (or, currently, some $180,000) per year (could be more, though, depending on the project).

    Now what??? Who is stupid, my Dear?

    Alas, now I know why our european countries are considered as part of the Old Continent.
  • (cs) in reply to Pierre Tramo
    Pierre Tramo:
    ClaudeSuck.de:
    I walked the dinosaur:
    I think TopCod3r's awesome VB skills allow him to make OVER 9000 dollars a year!
    Around here (in Europe) VB skills are worth €500/day or some €120,000 (or, currently, some $180,000) per year (could be more, though, depending on the project).

    Now what??? Who is stupid, my Dear?

    Alas, now I know why our european countries are considered as part of the Old Continent.

    So, tell us the secret. Don't go too much into detail as there are three Old Continents. But who cares, anyway?

  • Paula Bean (unregistered) in reply to ClaudeSuck.de
    ClaudeSuck.de:
    I walked the dinosaur:
    I think TopCod3r's awesome VB skills allow him to make OVER 9000 dollars a year!

    Around here (in Europe) VB skills are worth €500/day or some €120,000 (or, currently, some $180,000) per year (could be more, though, depending on the project).

    Now what??? Who is stupid, my Dear?

    dont worry, after all TopCodr, or TC as we like to call him round here, actually can earn anything in the following range

    9001 <= TC <= Integer.MAXIMUM

    after all since its clear that no one would ever earn an annual salary with cents attached its a significant space improvement to store wages in an Integer field.

    Oh and thanks for the tip about the grue's last week i had the brilant idea to turn all the lights off to save on our energy bill, now ill issue each person with there own torch to keep the grues at bay.

  • AllUrBase (unregistered) in reply to akatherder
    akatherder:
    public static String _GREATER_THAN_OR_EQUAL14 = ">=14";

    This is just good practice. It completely removes the ambiguity of the magic number 14 in your code. _GREATER_THAN_OR_EQUAL14 is much shorter than typing out >=14 EVERY TIME you want to do a comparison to 14. This will also ensure that I don't punch the programmer in the ear when I find out who wrote it.

    Isn't the REAL POWER(tm) if this, that if you want to change the expression ">=14" to something like ">=17" that you can just do it in one place, the constants file. See that's just clever.

  • Al. (unregistered) in reply to TopCod3r
    TopCod3r:
    If you are a DBA, and not a developer, you might ask why do I store them as constants rather than in a database (and beleive me I have had to fight this fight), the answer is it takes less time to re-compile my application, than submit a database change request and wait for the DBA union to run my update script.

    You need a DBA to update some rows ?

  • (cs) in reply to Al.
    Al.:
    TopCod3r:
    If you are a DBA, and not a developer, you might ask why do I store them as constants rather than in a database (and beleive me I have had to fight this fight), the answer is it takes less time to re-compile my application, than submit a database change request and wait for the DBA union to run my update script.

    You need a DBA to update some rows ?

    Sometimes, yes. Financial and governmental (note the -mental) institutions may require it. I used to prepare INSERT/UPDATE statements when working for a bank, f.e., and emailed them to the DBAs.

  • xXx (unregistered)

    It's not a WTF.

    Clearly, he was paid per line of code.

    And, his progress was measured in lines of code produced per day.

    Go Enterprisey software model! Go, go go!

  • putate (unregistered)
    suffice it to say, if there's a string you need, it appears somewhere in one of the five hundred and fifty two classes.
    That allows you to compress the code using the file as an index. Moreover, you can even compress the programmers budget by replacing them with monkeys writing constant strings.
  • (cs) in reply to ClaudeSuck.de
    ClaudeSuck.de:
    Pierre Tramo:
    ClaudeSuck.de:
    I walked the dinosaur:
    I think TopCod3r's awesome VB skills allow him to make OVER 9000 dollars a year!
    Around here (in Europe) VB skills are worth ...
    Alas, now I know why our european countries are considered as part of the Old Continent.
    So, tell us the secret. Don't go too much into detail as there are three Old Continents. But who cares, anyway?
    I thought currenty theorists all agreed there was One Old Continent (pangaea?), from which the others broke off over time? My guess is that the Old Continent used VB6, and the break offs all wanted to migrate to .NET...
  • Fred (unregistered) in reply to APH

    Yes, yes, you are

  • Beska (unregistered) in reply to APH

    Nope, I was right there with you.

    You are in front of a small white house of cards. There is a mailbox here.

    OPEN MAILBOX

    The mailbox contains _GREATER_THAN14 bug reports, and a leaflet.

    TAKE LEAFLET

    Taken.

    READ LEAFLET

    "You are now the proud owner of a Horrible Mess!"

  • (cs) in reply to ClaudeSuck.de
    ClaudeSuck.de:
    Around here (in Europe) VB skills are worth €500/day or some €120,000 (or, currently, some $180,000) per year (could be more, though, depending on the project).

    Now what??? Who is stupid, my Dear?

    The people in Europe who are paying them that much for their outdated, useless skills? ;-)

  • Iguanasan (unregistered) in reply to APH

    Sorry, no, I also caught the Zork reference ;)

  • (cs) in reply to APH

    What, you don't read your morning RSS feeds with a lantern just in case it gets dark?

  • (cs) in reply to halcyon1234
    halcyon1234:
    Even this is only a interim solution. The real way to do it would be to define every PRIME number as a string, and then define every other number as the sum of those primes (casting them back to int, of course)

    public static String _TWO = "2" public static String _THREE = "3" public static String _FIVE = (String)((int)_TWO + (int)FIVE)

    Naaaaaaaaaaah.

    public static String _ONE = "1"; public static String _TWO = Integer.toString(Integer.parseInt(_ONE) + Integer.parseInt(_ONE));

    And so forth.

  • (cs) in reply to real_aardvark
    real_aardvark:
    vt_mruhlin:
    APH:
    Am I the only one who caught the Zork reference? Seriously, isn't ANYBODY going to be eaten by a grue?

    No, you're just the only one who thought it was obscure enough to merit a "am I the only one who caught it" post?

    Not knowing that reference would be like not knowing where the term "Good Samaritan" comes from.

    Let me quote from Luke:

    "A man was going down from Jerusalem to Jericho, when he fell into the hands of robbers. They stripped him of his clothes, beat him and went away, leaving him half dead. A priest happened to be going down the same road, and when he saw the man, he passed by on the other side. So too, a Levite, when he came to the place and saw him, passed by on the other side. But a Samaritan, as he traveled, came where the man was; and when he saw him, he took pity on him.

    "It is pitch black," said the Samaritan. "You are likely to be eaten by a grue."

    "What is a grue?" sayeth the naked and beaten and half dead man, for no other reason than that the plot of the game requireth it.

    "The grue is a sinister, lurking presence in the dark places of the earth. Its favorite diet is adventurers, but its insatiable appetite is tempered by its fear of light. No grue has ever been seen by the light of day, and few have survived its fearsome jaws to tell the tale."

    "OK," sayeth the man, "that all makes sense to me now. All that stuff about the Levite and the Pharisee was just filler, wasn't it?

    "Why didn't you just mention the grue in the first place?"

    "Because you have to ask," said Jesus. "That's how the Gospel works on the DEC PDP-10."

    ... the Gospel According to Aardvark, 9:22.

    This is all a pathetic waste of time, isn't it?

  • Access boy (unregistered) in reply to APH
    APH:
    Am I the only one who caught the Zork reference? Seriously, isn't ANYBODY going to be eaten by a grue?

    Seriously, am I the only one who caught the Colossal Cave /Adventure reference? I must be getting old...

  • (cs) in reply to Paula Bean
    Paula Bean:
    after all since its clear that no one would ever earn an annual salary with cents attached its a significant space improvement to store wages in an Integer field.

    Umm, around here you may have Cents attached. Salaries are "indexed" which means that they are adjusted every year according to inflation. Hence, the Cents.

  • SteveC (unregistered) in reply to jared

    What if we were playing with base 0 arrays where the 14th element in the array is actually index 13?

    It would be a piece of cake to change the constant GREATER_THAN_OR_EQUAL14 to the value ">=13" and keep it all kosher.

    <grins and ducks>
  • (cs) in reply to KenW
    KenW:
    ClaudeSuck.de:
    Around here (in Europe) VB skills are worth €500/day or some €120,000 (or, currently, some $180,000) per year (could be more, though, depending on the project).

    Now what??? Who is stupid, my Dear?

    The people in Europe who are paying them that much for their outdated, useless skills? ;-)

    These skills are actually so useless that most MS-programmers jumped on the .NET-train. Now there are so many VB6 (VB(5/4/3...) applications hanging around and the fewer and fewer programmers with "useless" skills" are on the market. COBOL was the fist language that had such a fate. One day .NET and Java will face the same situation (and all "up-to-date-to-the-newest-(read: most insane, crappiest)-programming-language programmers" will call those programmers "lame programmers with no technical kn0wl3d93/skillz". And then, why outdated? With .NET you cannot make more than what has been done before already (in fact, you can even less given the "security" features (try to write a sniffer in .NET). Only now, with .NET, you have to write 3 times more characters on one line (NOT code) to get the same thing done.

  • Pierre Tramo (unregistered) in reply to ClaudeSuck.de
    ClaudeSuck.de:
    These skills are actually so useless that most MS-programmers jumped on the .NET-train. Now there are so many VB6 (VB(5/4/3...) applications hanging around and the fewer and fewer programmers with "useless" skills" are on the market. COBOL was the fist language that had such a fate. One day .NET and Java will face the same situation (and all "up-to-date-to-the-newest-(read: most insane, crappiest)-programming-language programmers" will call those programmers "lame programmers with no technical kn0wl3d93/skillz". And then, why outdated? With .NET you cannot make more than what has been done before already (in fact, you can even less given the "security" features (try to write a sniffer in .NET). Only now, with .NET, you have to write 3 times more characters on one line (NOT code) to get the same thing done.
    You have to admit that the problem with VB6 (just as with Cobol, as you point it out) - and should I say, the bread and butter of most software contractors here in France - is the number of LoC written by people who did not have the slightest education in software engineering. You start with an Excel sheet, months later it becomes an Access mess and then a VB monstrosity. I have had my lot trying to reverse engineer poorly designed "applications" with no written requirements and whose initial "developer" had left silently. Granted, it also happens with "new technologies" as they call it, but VB was designed to be "accessible" to non-programmers and IMHO, it has been abused because of that.
  • (cs) in reply to Pierre Tramo
    Pierre Tramo:
    You have to admit that the problem with VB6 (just as with Cobol, as you point it out) - and should I say, the bread and butter of most software contractors here in France - is the number of LoC written by people who did not have the slightest education in software engineering. You start with an Excel sheet, months later it becomes an Access mess and then a VB monstrosity. I have had my lot trying to reverse engineer poorly designed "applications" with no written requirements and whose initial "developer" had left silently. Granted, it also happens with "new technologies" as they call it, but VB was designed to be "accessible" to non-programmers and IMHO, it has been abused because of that.

    You are absolutely right. These wannabee-programmers created an enormous mess in over 10 years of "programming (?)" that this does not only give enormous headaches maintaining these "products" but it also assures that even in 10 more years the mess will still not be cleaned out (especially because I do not see one single company actually cleaning/correcting/redesigning their so-called applications). Hence, it's not butter and bread but Champagne and Caviar we get out of it. But yet, OTOH, my head still hurts from watching/reverse engineering/analysing/improving teh codez. As you say in France: Ye can't have the butter AND the money [the price] AND a smile from the [butter/cream] sales woman.

Leave a comment on “Constantly Expanding”

Log In or post as a guest

Replying to comment #:

« Return to Article