I Don't Code For Old Browsers (And Neither Should You)
"Did you look at it in Internet Explorer?"
No, I didn't, and I won't. And neither should you.
Let me be honest with you. Nostalgia is great. It's comforting and warm and it makes sense. My favourite computer game growing up was Jazz Jackrabbit. I loved jumping around and shooting turtles and getting bigger guns as the levels progressed. Even the weird multi-player Jazz Jackrabbit 2 was fun, with the introduction of Tazz and the different coloured characters. It was fun, but it's an old game. Now I play it for the memories, not to spend my afternoon.
Some things don't get better with age, and the Internet is one of those. To be frank, older browser suck. They're ugly, they're clumsy, they're faulty, they're old, they're slow and they're trash. The companies that made them realize this and that's why they made new browsers. That's why they have auto updating systems, so that when the old browsers need to be replaced it's done without any inconvenience to the user. The only thing better than a brand-new car, is a surprise brand-new car.
Microsoft didn't do this, and as a result a lot of users were stuck with old version of Internet Explorer. When I first came into the web development scene, Internet Explorer 5 was still a thing, and we had to code for it. We had to use filters to make .png files look correct, and we had to use .htc files to round corners. It was a very rough time in the web development life. At the same time, we wanted to use CSS3, we had to support garbage like IE.
I celebrated when I had to stop supporting IE 5, and again with IE 6, and again with IE 7. Things got even better with IE 8 when Microsoft stepped up and informed all its users globally that they will no longer be supporting Windows XP, or IE 8. As an incentive to move forward, Windows offered free upgrades of Windows XP to Windows 8, then 8.1 and then 10. Windows XP, IE 8 and all that baggage was riddled with security flaws, bugs, quirks and issues and they knew this, and the fact users didn't upgrade was their fault.
But Some People Never Change
When somebody gives you a brand-new car, you take it... unless you like your old car. When talking about web development, "the people who like old cars" often work for government, funeral homes, schools or hospitals. It's "too expensive" to create new programs to run on modern computers so they continue using old computers. Then they wonder why there's leaks, hacks, data breaches and massive network blackouts. Microsoft didn't offer you a new car because they liked you. They offered you a new car because their product is flawed, and they don't want to be held accountable for any potential hacks.
Development for these older technologies is the same way. If Sony puts out a new game, they make it for the current console and you are lucky if they support the previous one. The consoles probably don't even support the old disks either. If this is how a multi-billion-dollar company works, why should you operate any differently? Why should you code something for a user-base that takes up a fraction of the web? They should be used to websites looking like crap. They should be used to warning messages on screens informing them to "upgrade their browser" or "this website isn't supported on your browser". If they are seeing those, then they should take a hint and upgrade.
Finding a Middle Ground
Governments will never use modern technology because the people running them can hardly use old technology. You can either tell government agencies you won't work with them because of this limitation, or you can find a middle ground by charging exponentially more. "If I have to code for IE, you're going to pay me extra to do it" is a common mantra.
But is this the right way? Is coding for older browsers the best option? Some people code only the basics for older browsers, so that users can still get content but not the "experience" that comes along with it. This is one alternative. Another is to put up warning messages and try to urge the user to upgrade their browser. This way when the come onto a modern website they know it looks like trash because of them, not you.
Where there's IE, there's Safari
IE is easy to code around. you can do if you need to. Coding around old Safari is harder. For the most part Safari updates when computers update, but Apple stopped supporting Windows computers at Safari 5.1 (and in turn, Windows stopped supporting Apple computers in Internet Explorer 5). If you're looking to code around older browsers, the best way is to use feature detection to see if you can use certain newer styles, like CSS variables. I recently had this issue. I built a whole website using CSS variables and it worked on 90% of the global market, which I thought was good enough.
But it wasn't.
One user, somewhere, was running some god-awful version of Safari from a decade ago that didn't support CSS variables. And they complained. And I got an email saying the website wasn't working on Safari. And it was my fault. Except it wasn't! It's the user's fault for using a garbage software that isn't supported anymore. I looked up what percentage of Safari users support CSS variables. 99.90% of all Safari users support it, but this happened to be that 0.09% that didn't. That zero decimal zero nine percent didn't support something, so I had to find a solution. Okay. Game on.
The developer I am, I took this in stride. "Let's find a polyfill that works makes these CSS variables work". Well, of the half dozen polyfills I found, none of them worked on old Safari, because all of them were sniffing and hacking and feature defecting for IE because nobody, literally nobody, uses old Safari. I ended up having to go through the whole stylesheet and adding the hex values as fallback colours. It took me over an hour to do it, plus the time to find that none of the polyfills work.
What's the point of using modern technologies if people refuse to embrace them? What's the point in HTML5 and CSS3 and ECMAScript 6 if users who use garbage software complain that their garbage doesn't look nice? The point is that we have a responsibility to move forward. We have a responsibility to push the boundaries of what's possible, of what's right and of what needs to be done. I left the CSS variables in because I want to thank the 99.90% of users who visit the website for using a modern browser. I want to reward them, even if they don't know the difference.
I don't code for old browsers, and neither should you, but as long as we code for new browsers, there will always be work to do.