One May 2004 evening, Alex Papadimoulis felt quite fed up with the shoddily programmed system he had to work on. So fed up, in fact, he posted an example of such broken code on his personal blog. And another example the next day, and then two days after that. His readers, mostly fellow programmers and system analysts, promptly commented on his entries about the glaringly ineffectual pieces of code they had to work on, cracked some laughs, and jokingly encouraged Papadimoulis to shift the focus of his blog towards these programming disaster areas.
Each daily update is selected among the submissions sent by readers to the website. Those that make the cut usually strike a balance between outlandishness, believability, and poor quality (of the code or management that made it happen), and then listed under one of four major categories:
- CodeSOD/Code Snippet Of The Day: The format of submission that started everything. It focuses on a piece of code that is egregiously nonfunctional, unnecessarily obscure, implementing features that already come with the standard libraries, making suboptimal checks, leaking resources like mad, or otherwise blatantly flawed. Bonus points when the submitter finds out that the code is referenced (or god forbid, copypasted) across the entire application, or is the brainchild of some underqualified contractor or the CEO's cousin.
- Feature Article: A more free form category that catalogues short stories about the (mis)management of the IT firms where the submitters happen to work. While the focus is on the workplace environment, the entries often dip into code fragments that are the cause or the effect of such bad business practices.
- Error'd: A picture based entry that depicts unintentionally funny error messages found in unsuspecting places.
- Tales From The Interview: Exactly What It Says on the Tin. The writer attends a job interview where something is way off. Alternatively, the submitter, who is in charge of human resources, has to interview someone who is obviously unfit for the job opening without looking impolite. Hilarity Ensues.
The Daily WTF contains examples of:
- Accentuate the Negative: Some entries are at first glance actually well written code, fitting design patterns and naming conventions. It's just that one line that causes all hell to break loose.
- The Alleged Computer: A few stories are about these.
- Ascended Meme: Yes, No, FILE_NOT_FOUND, which is a Running Gag on the comment section, often finds its way into the body of the entries. Makes sense considering that most stories are submitted by these same people or "anonymized" by the same editing staff.
- Bowdlerise: The temporary denomination Worse Than Failure. The decision was greatly criticized for a while and eventually removed, leaving the ambiguous WTF. Worse Than Failure still sees some use, such as part of the full name of the OMGWTF competition (see below).
- Brand X: "Initech" is used as a generic company name.
- Brown Note: To the most knowledgeable readers.
- Crazy-Prepared: Some programmers are fond of making impossible and redundant checks, such as making sure that 1 is not equal to 0, or assigning a variable several times just to be sure.
- Department of Redundancy Department: It's good to have debug logs. But then it becomes necessary to make sure the debug log is working, so we set up a logger for the status of the logger. Then we just have to set up a logger for the logger's logger, and...
- The Dilbert Principle: Some of the bleakest entries. The Speed Of Code is a classic example.
- Idiot Programming
- Fun with Acronyms: Olympiad of Misguided Geeks at Worse Than Failure.
- Insane Troll Logic: It is a common occurrence that whoever writes code worthy of a CodeSOD has a very flawed and individual grasp on the programming language they are working on, and as thus will claim that such code is perfectly functional when confronted.
- Lets See You Do Better: Inverted in both senses; The Daily WTF hosts the OMGWTF coding challenges for trivial tasks (such as a hello world program). The objective is making the code as obscure, complicated and buggy as possible.
- No Plans, No Prototype, No Backup: Many problems occur due to lack of backups on company-critical functions. One company suffered a Death by Delete, having placed everything on a single server.
- Password Slot Machine: Once had one example of a password system coded like this.
- Pointy-Haired Boss: Ever-present and getting in the way of the solution.
- Revenge of the Sequel: "Payback's Payback" and "The Son of ITAPPMONROBOT".
- Self-Referential Humor: Many Error'd entries.''Error: insufficient memory for error message"
- Spiders Are Scary: When they infest a weighbridge.
- Temporary Name Change: See Bowdlerise above.
- Terrible Interviewees Montage: Reading a lot of Tales From The Interview will give this effect.
- Viewers Are Geniuses: Most of the readers are at least familiar with information technologies, so it's justified that the consequences of such bad code are left as a guess to the reader. In fact, a common pastime on the comments section is attempting to fix the broken code.
- What Were You Thinking?
Exception in thread "tvtropes": trop.pay.TropeIndexOutOfBoundsException