What are the most feared antipatterns in web development?
Comment: Web developers do a lot of good but also sometimes solve problems with very bad solutions.
Ever since Tim Berners-Lee wrote the first web page in 1991, web developers have brought seemingly endless innovation. Most of these innovations are excellent, but not always.
Begin co-founder Brian LeRoux asked an innocent question on Twitter: “What is the most dreaded web development antipattern?” An anti-pattern is a “commonly reinvented but bad solution to a problem”. In other words, it’s the developers who apply patches that are worse than the problems.
What does it mean? Well, let’s take a look at some web development examples.
TO SEE: The best programming languages to learn and the worst (TechRepublic Premium)
We come in peace
Take for example, these sites that hijack the shortcut CTRL+F (search in the page) to replace it with their own custom site search. You can press CTRL+F twice to get around this, but it’s an annoying case of developers thinking they’re doing a favor to site visitors with a personalized search, while slowing down a significant percentage of their users. It’s also not just on vanilla web pages, like some pointed out: “Stash/Bitbucket also does that. They recently removed it from the PR diff view but still do it in the source view.
Or consider feature flags, a “popular” pet peeve of many developers. A feature flag should be useful, right? A feature flag allows a developer to enable/disable the feature at runtime, allowing you to provide users with a personalized experience. While some developers swear by them, others swear by them. You don’t have to dig too deep to see potential issues with feature flags: Permissive access to flags can lead to unintended impacts on users (if someone flips the “off” switch when customers s ‘waiting for the feature to be “on”), or inadvertently reusing an old flag can result in nearly half a billion in losses (and Wikipedia praising).
TO SEE: Developer Code Reviews: 4 Mistakes to Avoid (Free PDF) (TechRepublic)
And then there is the disconnection between URIs and output, as Corey Ward called it. Refreshing a webpage should keep you where you were (composing a tweet, reading a tweet, etc.), but instead forces you to scroll through tweets to get back to where you were. The problem, as he explained, is that the URL has very little state; is “almost entirely client-side and ephemeral”. Apparently this is a way for the developers to keep things “fresh”, but it mostly succeeds in confusing the user. (Related for that? “AJAX the page content and don’t change the URL text box, even with an anchor link! So on a reload, you [lose] your browsing status. “)
But wait! There is more.
What would you say CAPTCHAs so hard to decipher (due to bad fonts, etc.) that they confuse people more than they fool machines? Or what about web developers who just want to help you stick with their site… by edit your browsing history so that hitting “back” keeps you where you were? And shorten URLs to make them easier for users to viewand thus losing the human readability of a URL so that it becomes more difficult to type?
etc But back to where I started: Developers are amazing, and web developers create the things we use every day, all day in our browsers. For all that, though, these antipatterns happen way too often, sometimes because developers are focused on their own business needs, and sometimes because they don’t listen to their users through A/B testing or other means. Any developer who wants a reminder on what not to do can bookmark Leroux’s tweet thread (which thankfully won’t disappear when you click refresh).
Disclosure: I work for AWS, but the opinions expressed here are my own.