What's Wrong With The Daily WTF

Damian,

Not sure if you were being sarcastic or not. But for those that don’t know, there are IEEE publications and organizations for Software Engineers. Also, don’t forget about the Association for Computing Machenary (ACM)!

http://standards.ieee.org/software/
http://www.acm.org

I stopped reading WTF when Alex changed the name of the site from “WTF” to “Worse Than Failure” That was one of the biggest WTFs the site has ever published!

“Individually, personally, we have to do more to reach out to these developers: mentoring, apprenticeship, user groups, peer pressure, code reviews, etcetera.”

Sometimes it works, sometimes it doesn’t.

You can be a good programmer.

You can be a bad programmer that eagerly learns the “right” way of doing things. Thereby turning yourself into a good programmer. Every good programmer has been through this stage.

You can also be a bad programmer that refuses to learn. Sadly, these used to be the good programmers of yesterday who thought they had reached the absolute pinnacle of programmerdom and stopped learning. At least, you’re not taking any advice from people who you perceive to be beneath you (junior, lower salary, etc.), no matter how right it is.

In the first case, no help is needed - good programmers are voracious learners. In the second case help is desired. In the third case, help is wasted.

If it doesn’t? Well, they’ll worry about that when a bug is assigned to them.

Types one and two will worry. Type three will blame everyone else, the tools, the relative position of Jupiter’s moons and so on, and not fix the bug. After two weeks of this, a programmer of type one or type two will fix it in a minute or less. The type three programmer will then either be fired or do the same thing all over again.

I stills say that if there were some sort of union, or even a guild of some sort for programmers that required a minimum skill level completion to enter, it would start towards getting everyone on the same page. Of course, along with that come the headaches of guild structure and the inevitable demise of a good group in favor of all for one, and the guild for all -or else.

Sometimes, it just seems like programmers are always going to be cut-throating each other. It’s ultimately down to the individual programmer to a) recognize there’s ALWAYS room for improvement, no matter how “golden” you think you are and b) have a desire to attain something other than mediocrity. You may never, but at least you’ve made the attempt.

Phil: I’d suggest that not reading a site because of a lame name change by its owner so as not to upset his grandmother would be more of a wtf than the name change itself.

I stopped reading “Worse Than Failure” when I realized that they kept recycling the same four examples over and over again:

  1. the stupid boss
  2. the novice mistake
  3. the overcomplicated system
  4. the idiot co-worker

There, that’s “Worse Than Failure” summed up.

Oh yeah, “Error’d” and “Code Snippet of the Day”:

Error
The operation completed successfully

10 PRINT "HELLO"
20 GOTO 20

That’s them. I almost forgot.

And the comments - condensed: “Brillant Paula Bean has “Orange” as Captcha which is not a WTF” is the real WTF.

Agreed. I could submit numerous examples to this, going through my own old code.

Another good article regarding this was the recent one regarding your perception of your own intelligence*:

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=345337reply_id=2921073

( * The overarching WTF these days is remembering what URL quoting syntax applies on which blog… )

I stopped reading The Daily WTF when they changed it to such a lame name. We all know what WTF really stands for and it accurately summed up my reaction to some of the things people have done in the name of programming.

“Worse Than Failure” just doesn’t cut the mustard and sounds to me like pandering to the Politically Correct brigade who just can’t cope with that naughty “F” word.

As politically correct wusses are a particular pet hate of mine, I’ve voted with my electronic feet and taken that site off my list of daily visits.

Add to that, the multitude of lame responses to every article from guys who may be able to write better code but can’t see what insufferable jerks they are and I decided I wasn’t amongst peers.

In the end, like all of you, i want to learn to improve myself, I want to learn from my mistakes, and the mistakes of others…

And that should be the focus of our craft.

In my specific niche, it is very hard to identify bad/good code, unless you see it, (web applications/coldfusion) so there’s no real way to know who’s doing good code/bad code, unless you get a chance to see it.

I think there are multiple needs here that could be resolved.

  1. Programmers need a way to portfolio that they are good in their profession, but too often that code is proprietry, and so have very hard times proving they’re knowledgeable or experienced.

    So to solve that, we need a code sharing, and code solving site, where we share coding problems, and then we can compete as to how the best way to solve them. A different approach then how experts-exchange.com does it, our goal is to learn and share.

  2. Evaluation by Peers - To evaluate what level of programmer you are in your specific field. Not to humiliate each other, or to crow who’s best, but to create levels like the old craftsmanships: apprentice, journeyman, master, teacher, grandmaster etc.

    Then get specific as to what to learn or master.

  3. Peer to Peer Education System - I’ve been involved in user groups, but I am kind of burned out, because if they don’t teach what your interested in, they’re of no value. So I think we need web-based solution, to help share, educate each other…

Anyways i don’t have all the answers or ideas, but i want to do my 5cents to make it a better world for programmers.

My team is actually doing this on our current project.

I set up a wiki page on our project site where we could post notes about our ‘wierd’ code. The project is being pushed ahead to get a reasonable alpha/demo version out and we need to know what to fix for the beta version.

So far its a lot of entries like “This area is slow, this is why. Not sure how to correct it.” or “This is the best standard library class from .NET that seemed to work for this purpose, its a pain in the ass to use and we shouldn’t keep in in production.”

Everything in that section will get a change ticket and a thourough code review in a few weeks.

My boss has also made sure to hold us to our complaints. When we bitch about something someone elses software does poorly he expects us to make sure to point out a similar flaw in our own code. Its all friendly encouragement and we’re getting a better codebase because of it.

Glad to see that other developers at least support the idea of good code even if the pressures of deadlines mean we can’t go back and fix it.

Everyone’s written WTF quality code at some point in their lives. And if you haven’t, you just haven’t written code in enough languages. Take an expert C# developer and have him write some Ruby, PHP, or Python code and you can guarantee it will be WTF quality until he gets the hang of the new language. And that might take a few release cycles.

I think its a big problem with our industry in general that we tend to bitch about people’s mistakes but we rarely follow up with approaches to avoid these exact type of mistakes. The fix is considered obvious and not worth mentioning in the context of the blog post/article. It doesn’t matter if its a managerial mistake or a technical one, if the solution seems obvious to the person pointing out the WTF, it’s rarely mentioned.

I liked the article - the WTF site (which I like the name change: failure means you re-do it. Succeeding in a bad way means that you’re stuck with it - it works, don’t it? - which is often worse than failure) is often a challenge - the code works, but how? Why? What is this guy trying to do?

Everyone makes stupid mistakes (heck, even I forget the semi-colon), but it’s not only the ability to recognize the mistake that makes you a good programmer, but the willingness to fix them until it’s right that separates you from the bad programmers. Yes, optimizing code is absolutely wonderful, but that doesn’t make you a good programmer. Sometimes, easier to read and maintain code is going to be more important to a project than tight stream-lined code. We’re not dealing with horribly throttled systems as much as we used to, anymore, so while code optimization should never be abandoned, it should be figured as a possibility, not a given.

Good programmers are open to critique, open to growing and change, open to completely dumping all their preconceptions about any given thing and start anew every single day.

Bad programmers are exactly the opposite.

The Blog Formerly Known as TheDailyWTF is a favorite of mine, although not for the snippets of horrifying code. What they do surprisingly well is expose the human factors behind bad software. Thus far, the “Virtudyne Saga” is probably the best article of this sort, but someone with a little experience and a perverse sense of humor can usually figure out what sort of horrible environments produced the ghastly code that gets pilloried there.

My main worry is that TBFKATDWTF encourages the crowd who can’t read code but insist not only on writing code, but imposing their limited understanding of the subject matter on others.

“I can absolutely guarantee that the kinds of developers who could benefit most from reading WTF simply do not-- and never will-- read the WTF website.”

Doesn’t this quote indicate that there really isn’t anything that can be done? You notice bad programmer, advise same to start reading blogs (like wtf), programmer will never do so. Thus, wtf lives forever…

In any field, there are 3 types of folks:

  • Those who suck and don’t mind sucking.
  • Those who suck but are determined to stop sucking.
  • Those who don’t suck.

The wtf’s come mainly from the first group (unrepentant suckers). There could be a wtf site for every known occupation…

Jeff, I know you don’t need my support - but I’ve turned this whole thing into satire.

http://themicrobusinessexperiment.blogspot.com/2007/03/open-letter-to-jeff-atwood.html

John

dnm: “As well as 30-40 line recreations of language-provided subroutines.”

This is one of the biggest compaints I continue to hear. And, while I understand the aggravation, it’s also aggravating that the “seasoned” developers only seem to be ready to whine and laugh rather than to actually advise the coder of the “language-provided subroutines.”

Of course, there’s situations where you can no longer contact the original coder. But, as dnm said himself:
"I work with people who write code that qualifies as WTFery on a daily basis."
I don’t think his situation counts as an exclusion…

Anyways…I’m, by no means, able to be considered “seasoned;” I’m only an intern at this point. But, just considering the number of built-in functions in any given language…it’s inevitable that everyone is going to forget or not even know of some functions and will try (if not succeed) to rebuild a few of them.

So, if it’s actually possible to contact me, I’d only hope that the “discoverer,” of my re-write, would have the courage and decency to contact me with the built-in rather than just whine about or laugh at it. After informing me, I could care less what he/she does with the snippet.

Sometimes it works, sometimes it doesn’t. […] You can also be a bad programmer that refuses to learn.

Agreed, but we have to try.

Rule #5 of the 10 Commandments of Egoless Programming: “Treat people who know less than you with respect, deference, and patience.”

At least until they’ve demonstrated whether they are simply inexperienced, or whether they’re fundamentally unwilling or incapable of learning. I do agree that there are programmers who you simply can’t reach.

There was also a good comment on Dennis Forbes’ blog from Andrea Ross that summed this up nicely:

It is really nice when one can pick a mistake in someone else’s code and realise that they themselves have made that same mistake, as it is to have someone point out a mistake of one’s own and offer their advice in a positive and constructive manner, rather than having some self-proclaimed guru tell how shocking an error it is, that an “expert” would never do like that, and imply how bad a coder one really is. Of course such people are often just covering for their own inadequacies, and too often do so behind a storm of vitriol and bluster!

I don’t know… I read WTF for a while, but pretty soon the arrogance and immaturity of programmers who think they are better than they are started really shining through and I started reading it less often, it became of an occasional thing… racist undertones finally sealed the deal, and I rarely read it now.

It’s easy finding fault in others. It’s much more difficult to find fault in our own work. I’ve heard “perfect programmers” brag about their code only later finding it is quite flawed.

There are no perfect programmers. Accept this and life becomes a lot easier. Anyone more willing to condemn than to help isn’t worth talking to anyways. The wisest leaders lead by example, not by force.

If anything, the code reflects the state of the organization. If the team and management are weak, then the code will be even weaker. It doesn’t matter how many smart programmers you hire if your company is just plain sick.

Look within. Change yourself. Help those who want it. Don’t expect the world to change tomorrow and you might find yourself smiling just a bit more than yesterday.

Whatever you do, don’t drink the Kool-aid. Make up your own mind about the state of things and if you really want to make a positive difference, do so from a positive angle.

I think we’re experiencing the first stages of TDWTF death. The site’s contents has lost in quality, and the last year the quality of the users/comments has degenerated beyond belief, which is one reason why several of the most insightful and eloquent participants has made official goodbyes and never returned. The place is much worse for their absence. I myself seldom read the articles and never the comments any more, instead I’m active in the forum, which is still a relatively stimulating place. But the name change was just a very conspicuous example of the looming demise of the site. RIP TDWTF, it was good knowing you, but I’m searching for a place to move on to.