WTF Relativity


  • Considered Harmful

    It seems to me that some things considered WTFs in the forums (though, for the most part, not the front page posts) are really a matter of personal preference.  In the I-Hate-Oracle club I noticed an on-going flame war about whether, in a database, a zero-length string should be distinct from a NULL value.  I thought, WTF, of course they're completely different.  Other people said WTF WTF, that's intended behavior.  Then we said WTF WTF WTF, a string doesn't need characters to be a string; and they responded with WTF WTF WTF WTF, if you're using both you're using bad practices.  It was an infinitely recursive WTF.  WTF(n) = 2WTF(n)

    Then it dawned on me.  Maybe no one's right, or we all are.  Maybe it's really just a matter of opinion.  Can't the VB-bashers and the Java-haters and the C#-denouncers all take hands with the embedded C programmers and the Perl scripters and the COBOL maintainers and be at peace?  The Real WTF is ourselves, pointing and laughing at each other.

    Now some things are clearly WTFs, when they cause damage or horrible performance or cost money or just don't make any sense; but if something works well enough to accomplish its given purpose effectively, then why slander it?  Grow up.  Maybe before we cry WTF, we should spend some time working in a WTF environment.  Whether a WTF is really a WTF depends a lot on context.  In a use-once, throw-away scenario performance is not very important.  In a system that's already broken throwing in a few more ugly hacks is just maintaining consistency.  It's all relative to what the code needs to accomplish, where the code is, how the code works, and why the code is there.  If you're going to post your own WTF, at least bother to give enough context to make its significance readily apparent (even if the reader specializes in a broadly different langage.)

    If you want a goldmine of language based WTFs try some esoteric languages like INTERCAL, brainfuck, or Malbolge.  Actually, I'd be impressed with someone who could write anything useful in these languages.



  • Your post is a wtf



  • Well, true, depending on context one have to commit WTFs (in two meanings of the word commit). But it doesn't get less WTFy because of that. And as soon as you sit back and think to yourself, well, it's ok, not really WTF, I was forced to do it by insane milestones, and my PHB deserves the abbreviation, and weather sucks -- you are stepping further down the slope. Forget to fix one window, and the whole building goes down rather fast.

    And this liberal "everybody is right" is wrong. In general, not to mention in more or less scientific filed of IT.

    PS, brainfuck (and the like) is intentionally WTF. That is by design. Should be clear from the name :).



  • @joe.edwards@imaginuity.com said:

    Then it dawned on me.  Maybe no one's right, or we all are.

    Dude, this is thedailywtf.com, where the stupid make fun of the ignorant (except at weekends, when the ignorant make fun of the stupid). Did you only just realise this? 



  • @joe.edwards@imaginuity.com said:

    In a use-once, throw-away scenario performance is not very important.  In a system that's already broken throwing in a few more ugly hacks is just maintaining consistency.  It's all relative to what the code needs to accomplish, where the code is, how the code works, and why the code is there. 

    You have to be really careful about use-once stuff, because often they become routine and you end up wasting a bunch of time each week/month going through a convoluted series of steps to get it done.  This is especially true with reports.  I've seen many a once and done reports being turned into automatic daily reports.  Different story if you're converting a custom app from Oracle to MsSQL - that should be a once and done ordeal. 

    Adding more hacks on top of other hacks is just wrong.  You either pay now or pay 10 times the original down the road.  Yeah, it might not be you who has to pay, but you'll still get the reputation as a hack none the less because you were the last associated with the project. 

     

     



  • I'd say real WTFs happen when :

    a) a great deal of human time or money has been wasted and the mistake was absolutely obvious from the very beginning

    b)  someone - maybe highly ranked - is overly confident about obvious mistakes. But because his confidence is more contagious than the manifest WTFness of his project, a) happens.

    The rest can be real funny - in part because it could lead to one of the previous situations. In general, overly confident people deserve to be made fun of, hence this website.




  • I agree Aikii.  The best WTFs are those which consist of a few solid principles:

    The VirtuDyne

        Start with a person who thinks they know more than they really do.  Put them in a position of power, being followed by those who believe our PHB knows more than he does.  Toss in one poor sap who sees through the bullshit, but nobody believes.  Allow the incompetent to snowball their efforts into a complete catastrophe.  Then finally, let them all blame the competent one.

    The PEBKAC / Forehead-slapper

        The "tech's worst nightmare" is always good too.  Incompetent (or unwilling) party seeking help with unknown problem (usually insinuating it's the tech's fault), tech spends countless hours trying all conventional methods of troubleshooting the problem, realizes in a stroke of dumb luck that the requester was the one to blame and was completely oblivious to his own involvement.
     

    The (Code) Monkey

        These are probably the least interesting.  Know-nothing programmer is responsible for a lot of code, churns it out quickly, gets commended by his supervisors, but is hated by his peers, because he writes horrible code which breaks everybody else's code, making them look bad.  Typically results in the monkey getting promoted to management (and thus starting the more interesting VirtuDyne story).

     

    Can anybody else think of more categories?  I think this just about sums them up.  Of course, it's 3AM and after drudging through some C# my monkey has passed out. 



  • I, for one, am tired of all of the "the real WTF is that he's using VB/C#/Java/Emacs/Windows/MacOS/any Microsoft product" posts around here.  Just because a project isn't done on Unix in embedded C with nothing but vi, that doesn't mean that it's doomed to fail, contrary to popular belief.  Access can be used for a few (very simple) tasks.  VB.NET is fine for a good number of things.  Unix isn't the only OS that a business app can be usable and reliable under.

    The one time I've said that was to steal the thunder of the people who really would've posted it and meant it.

    But, then again, some people are quick to latch onto the fact that a person isn't using their particular platform/language of choice (the horror!) and ignore the more glaring problems altogether.



  • The Real WTF is that the OP is using his email address for his username.



  • @RevEng said:

    Can anybody else think of more categories?

    The "logical"/"problem-solving" WTF: The kind of code WTFs whose WTF'iness could even be explained to non-techies because it's the problem solving approach that causes the code to make you wonder what they were thinking. (e.g. - I'm making this up just to make you get the idea - calling a web service to capitalize the first letter of a string).



  • @Saladin said:

    VB.NET is fine for a good number of things.

    VB.NET is C# with a syntax that  takes ages to type (and more difficult to understand) and choosing it for a new project is a WTF. The only purpose of VB.NET, just like J#, is porting pre-dotcom-era code to .NET framework 'cause the last versions of VB and J++ were released back in 1998.



  • Quite true about VB.NET.

    I did VB6 for 5+ years, and after seeing the changes with VB.NET I went straight to C#. My test scores for VB6 (recruiter test) were phenomenal, but I really think I'd rather break my fingers one by one with a ball pin hammer than have to work in VB.NET every day.

    I like this site, and I like chuckling at people's mistakes. I also like seeing what not to do, and I think that is useful.

    Still, I agree with the OP. Some of it is just semantic crap, and some of you are delusional with self-interest in aggrandizing your focus on the mundane and archaic where in the context of getting things done efficiently, it simply does not matter.



  • VB.NET is C# for those like me who find C syntax ugly. Of course, VB has features that aren't in C#, and vice versa, but mostly they're the same thing, and they both compile down to roughly the same IL. That's not to say that one is better or worse, just that they're pretty much the same thing - the same books, but one version in Spanish, the other in Russian.

     I just ignore language bigots, the same as I do any other kind of bigot. Most languages have some good features, and excel in certain areas, and even if they don't - who cares? Live and let live, and stop being a jerk.



  • @joe.edwards@imaginuity.com said:

    If you want a goldmine of language based WTFs try some esoteric languages like INTERCAL, brainfuck, or Malbolge.  Actually, I'd be impressed with someone who could write anything useful in these languages.

     http://jonripley.com/i-fiction/games/LostKingdomBF.html



  • This website is IMO very usefull because it shows bad practices in an entertaining style. Bad practices exist, and every programmer - beginner and expert alike - should be aware of them.

    There are books devoted to bad practices, like "Antipatterns", but IMO they are rather boring, without any sense of humor.

    And of course there are cases where we argue about whether or not a certain practice is a WTF or not... those threads are sometimes the most meaningfull and interesting reads, since they dig to the ground of the problem.



  • To be clear Ray, I'm not so much critical of VB.NET's validity as I am the practicality.

    Looking through documentation, everything is so much more verbose. I feel like they shot VB in the foot, the kneecaps, and then the groin. The readability has gone from something a layperson can make some sense out of to something almost as esoteric as C.



  • I guess we differ on that. I like the verbosity, it (to me at least) it easier to read that squiggles and braces. Using the VS IDE, it's not a lot of typing, either, and sometimes is quicker than C#. Not to say that there's nothing they could improve (die, DIM), but VB.NET just annoys me a lot less than C#. Maybe I'm just more used to it.

     

    Anyway, as long as nobody's getting religious, it's all good. :-) 



  • It's hard to believe that the verbosity of VB.net (compared to C#) means more typing. State-of-the-art editors have an auto-complete mode that automatically create the necessary keywords once the first keyword is written. VB.net 2005 does that, so where is the problem?

    Just type "if" and the IDE completes with

    Then

    End If


    So where is the problem? 



  • Not to mention you can setup your own Code Snippets for the stuff that's not there by default.  Makes it pretty trivial for most of the commonly used blocks - unless of course you're using notepad to write your code.

     


Log in to reply