Alex Papadimoulis originally invited me to be a guest editor at The Daily WTF nearly six months ago. I was honored and accepted immediately. Since then, The Daily WTF has been rechristened Worse Than Failure.
I'm a big fan of Alex and WTF; his blog is fantastic, and WTF went from being a brilliant, hilarious germ of an idea to a staple of many developer's daily reading lists.
It's ironic, then, that what I wrote ended up being a direct criticism of The Daily WTF. It's almost like I've fallen into the Spolsky rut; invite me to speak at your big important Java conference, and I'll create a session that tells you why you're all idiots for using Java. Or, perhaps I was channeling Groucho Marx. One of his most famous jokes goes something like this: I sent the club a wire stating, please accept my resignation. I don't want to belong to any club that will accept me as a member.
I give Alex tremendous credit for finally posting my entry, even though it never quite fit the WTF format. I hope it doesn't feel too much like a public service announcement, but it's something I absolutely had to get off my chest. It's a topic Dennis Forbes has struggled with as well:
This is a repeating theme: On the one side are the great programmers, and on the other are the people endlessly bound to give TheDailyWTF source material.Do people really think such a schism exists? Is the impression that great developers are infallible, never creating any bad code at all, ever? Are bad programmers just stumbling from one WTF to another?
Of course not.
I fear the output of any developer who claimed that they've never written bad code. I would fear them because they're either bald-faced liars -- believing that simply saying it repeatedly will somehow convince others into this fiction -- or they're completely blind to their own weaknesses.
Every developer in the real world has had bad days, brain faults, or bad interpretations of new languages, environments or libraries. It's simply a given of the profession.
I have no problem at all with the entertainment value of WTF. Laughing at Rube Goldberg code is therapeutic, even educational. But whether the code in question is catastrophically stupid or just plain ill-advised, we have to do something about it. Until we do, we are implicitly perpetuating the painful, costly cycle of bad coders writing bad code, ad infinitum. And that hurts all of us.
Reprogramming WTF code isn't enough. We need to reprogram the developers producing the WTF code. With my guest article, I was trying to inspire readers to take on the burden of reprogramming bad developers, rather than passively waiting for the bad developers to come to their senses on their own. That strategy never works.
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. Individually, personally, we have to do more to reach out to these developers: mentoring, apprenticeship, user groups, peer pressure, code reviews, etcetera. Do whatever you can, whatever makes sense to you, but do something. Pitch in so the next poor sap won't have to deal with WTF code, or at the very least, can benefit from slightly less crazy WTF code in the future.
I know it's asking a lot. It's tempting to get your daily fix of drive-by amusement and move on. But I believe it's our collective duty to leave the profession of software engineering better than we found it. There's so much we can do, and WTF is merely a starting point.
One side:
We should start rejecting bad software. Return it to the store. Start challenging contractors and suppliers legally for slipping deadlines and mediocre execution or incompliance with the specification.
Thus, we need quality guidelines for software, a bill of rights for the software customer, so to say.
The same applies for frameworks or components. And here, a quality metric should be "How easy can I screw up as a developer using it?"
Take Microsoft's .NET 2.0 Tracing framework for instance. There are endless ways to implement and configure it wrong. And probably only one or two, to have the config and trace sources and listeners and switches align perfectly, so you can get the trace you want. Inacceptably useless.
You are amongst those who are constantly repeating the good developers/bad developers meme. That way, you are making managers believe that it's enough effort to hire the top 2 percent of developers to get high-quality software.
And that's just not true. It's not Mort generating bad software. It's managers and customers accepting it.
Henry Boehlert on March 26, 2007 3:32 AMI think its a pity that the Daily WTF doesn't post a follow up article showing you how to do it right, which I might learn somthing from,
rather than the endless comments along the likes of "first" and "my eyes bleed". As your FizzBuzz article showed, its not that easy.
Reminds me of a blog-entry I wrote way back in 2003:
Jeroen
Jeroen on March 26, 2007 3:45 AM tcliu: That's a little silly. Even if a project is on time and
under budget and meets the spec (if there even was a spec, which
there usually isn't these days), it's not a successful project if
it's completely unmaintainable and doesn't last in production for
more than a few months (unless it was intended as a one-off).
I disagree on one condition: That the WTF parts are identified and cleaned up later.
My experience is that you get a couple of WTFs in every project as the project hits (impacts) the deadline. Often you can go back, fix the WTFs and re-deploy as part of the first bug-fix update.
The end user never notices the WTFs, and leaving them in made the project hit the release date, which in turn made the political battle for resources for maintenance easier to win.
Consider the alternative: Project deadline slips. Boss is angry. Other in-house projects get more resources as they "don't f**k up". Project finally struggles across the finish line. The inevitable bugs crop up. No resources for fixing bugs because "you f****d up the last release pretty bad, why should I waste resources on you now?". Which means bugs go unfixed and so on... And then you're really in WTF-land.
Leaving the WTFs in maybe makes maintenance 50% harder for a while, but the political and economical victory means I'll have 200% more time 500% more resources and 1000% more political power to fix them.
There is a difference between good code and bad code, and it's
not measured solely by the first product release.
It is also not measured by the code itself, but the code in its business context. Consider Linux vs HURD. Linux is old skool. Originally it had very little cutting-edge stuff. HURD had a microkernel and all sorts of "good code".
Linux got something working released quickly. HURD didn't.
Anybody running HURD? Will HURD ever catch up? How many coders does HURD have compared to the number of coders on Linux?
tcliu on March 26, 2007 3:46 AMI would love to "mentor" the crap outta those 3rd party professionals:
http://worsethanfailure.com/Articles/Real_Consultants_Don_0x27_t_Use_Loops.aspx
Jarrod on March 26, 2007 4:16 AMI've been following the Daily WTF for some time now, and I've recently started reading this blog (~5 weeks now), so I was very happy to see my feeder tell me you're posting on WorseThanFailure, and could not wait to see your contribution. I enjoyed it, but as you said, it was a little off topic.
I and many others follow the WTFs to vent off our own little encounters with coding horrors. We enjoy being able to make fun of an otherwise bad situation. We also enjoy the reassurance that we're not alone.
That's what WorseThanFailure is; what it isn't is trying to change the world, or attempt to educate the WTF-ers. I find many comments very educational, but that is not the point.
To sum up, I agree with your point of view there, but maybe you'll try and post a WTF next time ;)
c.danea on March 26, 2007 4:17 AMJeff,
Great blog post, as usual. It makes me wonder if anyone has ever considered a Developer's Confessional, where we all get to confess our own sins--things that we've done, and known were wrong. Eating crow from time to time *is* great therapy. It helps us laugh at ourselves, and remember that we're NOT Superman.
I've done things in code, and gone back to them the next day and thought "What in the FRACK was I thinking?!" I've then scrambled to fix them before anyone else noticed. I typically do these types of things when I'm tired, stressed, in a hurry, or distracted. They're stupid mistakes that I *know* I shouldn't be making, but I still make them. I've got 20 years or more in software development, and I still make stupid mistakes.
For instance, in Visual Basic .NET, in a Select Case structure that uses the TypeOf operator to compare types, I recently inserted a Case statement at the START to check if the argument was of type Object. This was in code that had been working for a year. The body inside the code told the Case statement to bail out of the Select statement and ignore all the other Cases.
Well, of course, as anyone knows, every intrinsic data type in .NET can be an object. So it's no suprise that every data type started getting skipped. What in the HELL was I thinking? Twenty years in software development, and a lot of that spent in Java, C++, C#, and VB.NET, and I still make blunders like I just started yesterday.
Yeah. I think we need a confessional. :)
Jeroen:
Read your blog, great post. One little caveat, though: you use the term "gamers" and "game development" pretty loosely. These days, "gamers" and "game development" tends to encompass MMORPGS--and you can bet that there is a ton of maintenance programming going on in those games. Further, a lot of MMORPG developers get their start at small gaming companies. Either way, the development practices can and should be the same.
Your article was great. You may want to consider an update to it. I always enjoy reading articles about code quality, so keep up the good work.
Mike
Mike Hofer on March 26, 2007 4:40 AMWe need a professional organisation / association with a specific focus on computer and software engineering. Developers should have to study a body of work to be even entitled to apply to join. Electrical and Electronic Engineers have IEEE, Accountants have ACCA, Architects etc....
Damian on March 26, 2007 4:55 AM*Knowing* the material doesn't necessarily mean that you'll *use* the material.
However, I've often thought that Software Professionals Union was a sorely needed thing. On the other hand, I've worked with some folks who were elitist snobs without the benefit of a membership card. I'd hate to run into them with one to rub into my face.
Mike Hofer on March 26, 2007 5:11 AMHenry Boehlert wrote: It's not Mort generating bad software. It's managers and customers accepting it.
I think the term bad software should extend way beyond problems that your customers might notice (and accept). A bug free code might still be bad. As for the managers - they are more likely the cause then victims of bad code. Most managers tend to view code and the development process as a means to get to the product. I think the development environment / process / code should be viewed as the real product of an development oriented company.
Goran on March 26, 2007 5:13 AM"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..."
To some extent colleges need to do a better job at getting CS majors to understand what they need to do once they are a real, live programmer. But this obviously doesn't capture all (or even the majority) of professional programmers.
I'm curious if this idea could be pulled off at some workplaces - would management spring for purchasing a few copies of some book (i.e. Code Complete) and then allow the developers to have a "book club" on company time? You could probably cover something like Code Complete over 6 months or so. Less time for books like Pragmattic Programmer. Once the canon is covered, move on to more controversial books that will at least get people thinking, like Extreme Programming Explained. Don't be dogmatic about any of the material, but get people involved in discussing the books.
It may be hard to get management to buy into this, but I suspect the benefits would be tremendous over time.
coderprof on March 26, 2007 5:21 AMI've been reading WTF for several months now, and Coding Horror for a couple of weeks, and I've found that its usually therapeutic seeing the oh-so common mistakes some devs make.
Admittedly, far too often, I've looked at an entry on WTF and thought "hang on, I've got something similar to that somewhere..."
I'm using the site as a learning tool - partly learning from the stoopid mistakes that others make so that i try not to do anything as asinine myself, but mostly because I'm thinking "what the smeg was I thinking when i wrote that garbage?".
Mike Hofer is right: a confessional is a good idea. People should start submitting their own WTFs to Worse Than Failure.
"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."
Absolutely true, in my experience. The really mediocre developers that I've worked with had no desire to improve their craft. If they need to learn something specific, they pick up "Learn Something Specific in 21 Days", but they never read Code Complete or The Pragmatic Programmer. They never bother to learn any new language. If they can apply their single, blunt instrument to a problem, that's what they do. Of course, some also go on to complain about how boring their work is.
And no, they don't read blogs about programming. They probably do read Slashdot, but not this, or joel's blog, or WTF...
coderprof on March 26, 2007 6:48 AMWell done, totally right.
Boudewijn on March 26, 2007 6:56 AMThe nastiness you got from thedailywtf community was wrong. I'm thinking of either writing an open letter to the dailywtf community or a satirical open letter to Jeff Atwood from the dailywtf community. Anybody want in?
I like to think I'm a good programmer. Not infallable, but good. I think things through, I do my best not to repeat myself, I write clean, concise, maintainable code as best as I can.
I work with people who write code that qualifies as WTFery on a daily basis. A special breed:
$line =~ /(.{1})(.{15})(.{1})(.{3})(.{1})(.{2})(.{2})(.{8})(.*)/;
my ($v1,$v2,$v3,$v4,$v5,$v6,$v7,$v8,$v9) = ($1,$2,$3,$4,$5,$6,$7,$8, $9);
As well as 30-40 line recreations of language-provided subroutines.
I'd like to take them under my wing, teach them what I know, and have them learn from me as I did when I began programming, and as I continue to do when I visit my local programmer group meetings and learn from programmers smarter than I, but I run into one horrible, horrible obstacle: the programmers I work with are of the "infallable" variety. They genuinely believe they're smarter, and better programmers than I am, and that I just do things "differently" than them.
dnm on March 26, 2007 7:18 AM"Individually, personally, we have to do more to reach out to these developers: mentoring, apprenticeship, user groups, peer pressure, code reviews, etcetera."
I have come to the conclusion that there is a significant number of developers who just don't care -- people who are not conscientious about their craft and aren't motivated to do anything beyond the bare minimum.
They want to clock in, clock out, and collect their generous paychecks.
If it "works", so much the better. If it doesn't? Well, they'll worry about that when a bug is assigned to them.
So, what then?
Joe Grossberg on March 26, 2007 7:41 AMJeff, thank you for this comment: http://listics.com/20070208903#comment-22188
engtech on March 26, 2007 7:47 AMDamian,
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!
Phil on March 26, 2007 8:08 AM"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.
Joe Grossberg:
"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.
tcliu on March 26, 2007 8:12 AMI 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.
Jae on March 26, 2007 8:16 AMPhil: 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.
dnm on March 26, 2007 8:17 AMI 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.
tcliu on March 26, 2007 8:20 AM[quote]
Mike Hofer is right: a confessional is a good idea. People should start submitting their own WTFs to Worse Than Failure.
[/quote]
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... )
Therac-25 on March 26, 2007 8:23 AMI 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.
Craig M. Rosenblum on March 26, 2007 8:45 AMMy 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.
Freiheit on March 26, 2007 8:49 AMEveryone'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.
Karthik on March 26, 2007 8:59 AMI 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?
Allen on March 26, 2007 9:03 AMEveryone 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.
Jae on March 26, 2007 9:14 AMThe 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.
Anonymous Cowherd on March 26, 2007 9:32 AM"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...
DudeNumber4 on March 26, 2007 9:36 AMJeff, 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
John K on March 26, 2007 9:47 AMdnm: "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.
jonLl on March 26, 2007 10:01 AMSometimes 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.
http://www.codinghorror.com/blog/archives/000072.html
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.
mike on March 26, 2007 10:38 AMIt'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.
Mike Anderson on March 26, 2007 11:17 AM"If anything, there should be a website where you could marvel at the truly unique code -- the stuff that doesn't suck."
A start? http://redhanded.hobix.com/
Or perhaps this book needs a blog: http://pyre.third-bit.com/blog/archives/863.html
L on March 26, 2007 12:49 PMI like reading wtf, but I don't like the elitism (if that is even a real word). Maybe because I'm a relatively new codered, but I don't always see what is wrong with the code that is posted. My point is this. I agree that the correct way to write code should be posted along with the bad code. But I'm sure that someone would say that it was wrong and should have been done another way.
Tom on March 26, 2007 1:00 PM Sometimes it works, sometimes it doesn't. [..] You can also be a
bad programmer that refuses to learn.
Agreed, but we have to try.
Of course. You are good unless proven bad. You can also be a good programmer in one domain and a horrible programmer in another. For example, someone who has spent the last five years writing content management systems may not be so hot when having to implement a cipher.
What I was getting at was that there are some coders who simply refuse to learn. And by some I really mean some. Most are not this way. I think your goal - to help people better themselves - is very noble and good and right, but unless augmented with the realism that some people can't be helped it will remain unattainable and sometimes downright damaging. For example, if you have one of the refuse-to-learn coders on your team, how much of the time that you should spend with the inexperienced-but-learning coders on your team do you waste on the bad one?
In the best of all worlds you could spend infinite time on the bad one, trying one approach after another until he finally opens up. But in this deadline-ridden world of scarce resources, you'd be irresponsible to do such a thing.
So - I'm with you, but with a small correction.
tcliu on March 26, 2007 1:04 PM Maybe because I'm a relatively new codered, but I don't always see
what is wrong with the code that is posted.
Well, if the end product was delivered on time and on spec and on budget - not really anything, I'd say, save for some cosmetics.
Many "WTF"s are nothing but a programmer who asks himself "well, I can do this the proper way or I can get a working product out the door", and opting for the latter.
I find it hard to argue with that reasoning, and impossible to argue that the coder in question is somehow "inferior".
tcliu on March 26, 2007 1:11 PMHere's what we do with the crowd who would never read a site such as WTF: [1] detect them, and [2] don't hire them, fire them, or reassign them to "special" projects. Caring cannot be trained into a person any more than a pig can be trained to sing.
kokorozashi on March 26, 2007 1:27 PMEvery time somebody starts a sentence like "did you see the dailyWTF" I always butt in with a worried "none of us were actually _NAMED_ though were we"...
JosephCooney on March 27, 2007 9:38 AMI'm not teaching programmers anymore. Screw them. They do not want to learn what I have to say, and I'm tired of people calling me a horrible bitch because I pointed out their mistakes. When somebody points out your mistakes, they are going above the call of duty and doing you a favor.
People just don't want to learn. They want to be coddled and encouraged. This is a problem emanating from the public school system, where kids are never corrected when they screw up, they're encouraged to press on. Kids are being told that if they just work at something hard enough, they can accomplish whatever they want. This is simply not true... some people are incapable of doing certain things, and people who are capable of being good programmers are pretty rare. We have a huge number of people out there who are writing code, but they don't have an aptitude for it. So they try really hard and they screw up, but rather than realizing that they are in the wrong job, they get encouragement and help, and nobody ever says "hey, you suck at this, why don't you try something else?"
They end up hating their jobs because they don't enjoy it and they find it difficult, and people who hate their jobs are not going to do quality work, no matter what field they are in.
Jasmine on April 6, 2007 3:39 AMIf you want to have more quality software then you should also
pay more money for it !!
Also no crap free software for slackers who do not want to pay money for the effort of others !!
What's wrong with laughing at your faults? Who hasn't failed at something? And have you cared really deeply about every mistake you made?
Laugh and learn. We're all fallible and there's no blame to cast about. Take responsibility and better yourself.
If you think something "sucks", check yourself (or rather your attitude.)
For those who hate to fix other people's mistakes, no one ever said you can escape all of humanity inside code. Get over that.
JETimms on April 20, 2007 1:45 PMThe comment about our educational system struck a note with me, leading to this response. The premise of our (USA) constitution is that all men are created equal, which is beaten to death in our educational system. What is unstated in that premise is that all men are created equal in the eyes of the law . This is true of all fields of endevor, especially the more complicated professions - medicine, physics, etc. This includes software development. You can attend all of the CS and coding courses in the world, but if you don't have what it takes to be a good developer, you ain't gonna be one (with or without the degree). The only thing that a guild or union would do is perpetuate the incompetence, not improve the quality, as has happened to all of the "organized labor" positions in this country. If you have the necessary makeup to be a good developer, you will become one - with or without formal schooling. The creative "drive" or "mindset" or whatever you want to call it cannot be taught to you, only the tools. The rest is entirely dependant on the individual. Everyone can throw a ball, but only a few have what it takes to become a major league pitcher. It still amazes me that we can accept that, but still insist that anyone with the proper "education" can become a good developer. All men are not created equal - when we accept that, then we can begin to make progress toward good software development. There are a lot of degreed (and non-degreed) developers who should not be in the field. They probably got there because "it sounded like a cool job" or "that's the way to make big bucks". Whatever the reason, I an reminded of something a wise man once told me - "A college education has ruined a lot of good ditch diggers". If and when you can admit to yourself that you should be a "ditch digger" instead of a developer, you, and everyone else, will be a lot happier.
Lorcan on December 9, 2007 12:55 PMI consider myself a pretty good programmer. I left my job to start freelancing about a year ago and it's been alright. But I'm really scared one of the guys where I used to work (great people) is going to paste some of my previous code on TheDailyWTF.
I swear I was young and didn't know any better!! They made me write it in ASP!!!
Well, that's what I'll say anyway.
Gavin on December 16, 2007 9:34 AMNo, TDWTF is NOT for teaching how not to make stupid errors. It's for laughing at those who made an incredibly idiotic error. Nobody goes there to learn anything... There are many good sites, like your stackoverflow.com to learn something good. Man, you need to chill out some. It's purely for fun.
Mentoring? on October 21, 2008 5:07 AMI don't think TDWTF is completely useless.
I wrote a terrible piece of code at work not too long ago. And, thanks to TDWTF, I recognized it, and I changed it.
TDWTF is a collection of examples of bad design, so once in a while I'll:
* Recognize them in my own code, or
* I'll see something on the site, and realize that I might have done the very same thing in that situation.
I find that educational.
Chris on October 21, 2008 8:47 AMInteresting post.
I once had a very good Architect Lead (at a couple of past .coms I worked at) and he refused to share his genius with the rest of the team...only being an ass when you did not write perfect code or asked what he thought was a simple question and every question ended up being a simple question no matter wtf you were asking. I say those types of pricks need to get a nice firing. His excuse was I have no time and you should figure that out on your own or already know this type of attitude.
That attitude gets you nowhere and is a naive and stupid response. It assumes all developers below him are either stupid, or do not make an effort. Now if someone is leaching off you and you are a Sr. developer fine, but if they simply are trying to learn some of the stuff you have mastered and need a bit of a nudge on more advanced code, then you shouldn't have to be a prick about it.
Dave Schinkel on October 22, 2008 9:17 AMJeff, if you've read some of the recent comments on the daily WTF, you must no doubt be aware that the reason several of its readers don't do anything about it is because they're no better (or perhaps just marginally better) themselves. It should be no surprise that some of these people didn't appreciate your input.
You might think that by virtue of reading your blog and other tech blogs, most of us are already Good Developers™ (that's open to debate), but the same definitely does not hold true for WTF/TDWTF. There's a smorgasbord of people on that site, all the way from professional military developers to the lowest of IT grunts hired to reset passwords and replace toner cartridges. It's like fark or YTMND with much better content.
I'd love to reprogram some developers at other companies we do business with, but I don't think they'd take it too well.
Aaron G on February 6, 2010 10:03 PMI actually like the new name for The Daily WTF and the reasoning behind it.
I can't be the only person who's walked in to work on a system held together by snot and duct tape or where users were forced to perform all manner of gesticulation and chicken sacrifice to get the software to do what it's supposed to and wonder "how did it get like this?" and then come to the sad realization that the people who botched this up didn't get any sort of reprimand whatsoever and have either been promoted or have gone on to make the same mistakes over again.
Failing to acknowledge or learn from your own mistakes is a very special breed of failure, the kind that won't be purged of its own accord.
tcliu: That's a little silly. Even if a project is on time and under budget and meets the spec (if there even was a spec, which there usually isn't these days), it's not a successful project if it's completely unmaintainable and doesn't last in production for more than a few months (unless it was intended as a one-off).
Even if there's no scope creep, which there always is, projects often have to be updated for scalability reasons. The more cruft that's in the original code, the more painful it's going to be to do that.
I can even see the difference in my own code. Same project, modules written about 2-3 years apart. The new code is lucid, almost reference quality in some places, but some of the old code is like a minefield. I'm finally getting to phase out most of those ancient bits, and it's a tad scary. If I can see the difference in my own code which I already have extensive knowledge of, surely I can see it in other people's code that I know nothing about.
There is a difference between good code and bad code, and it's not measured solely by the first product release.
Aaron G on February 6, 2010 10:03 PMLinux got something working released quickly. HURD didn't.
And you've stumbled on an aphorism that's messily entangled with the original sentiment - sometimes worse is better (Google "worse is better" for the paper and assorted articles on the matter).
Development often feels like one large terrible balancing act.
"Daily WTF" renamed to "Worse Than Failure" is a WTF in and of itself.
i loved theDailyWTF.com in the past; the article is ridiculously funny, and the accompanying comments that played with the tune of the humour made it hiliarious.
Over time, what I see are pompous self-important folks viewing things so seriously and conducting arguments just about as mature as the cultured population of forums.worldofwarcraft.com. I do not understand why people like/need to drag in their ego, assert forcefully their opinions (on a joke site), and displace others in the process.
Nowadays it is a needle-in-haystack search to read a funny comment.
Aaron Seet on February 6, 2010 10:03 PMThe comments to this entry are closed.
|
|
Traffic Stats |