This morning, my feed blew up due to my friends and family complaining about some new Instagram overhaul. Apparently, their feeds were scrolling horizontally instead of the usual vertically. It turns out that this was just one big Oops on the part of Instagram's engineering team, as tweeted by their Head of Engineering.
Adam Mosseri@mosseri@alexeheath Sorry about that, this was supposed to be a very small test but we went broader than we anticipated. 😬16:08 PM - 27 Dec 2018
When stuff like this happens, it's funny to see how quickly the reactions both for and against the change propagate across social media, but in another way, it makes me feel better about being a developer.
Stories like watching Instagram accidentally over-scale their testing of the new UI, or Amazon's Alexa crashing on Christmas due to the influx of new devices makes me realize that no matter how big or powerful these companies are, they are still run by humans, and humans miscalculate and make mistakes.
So if Instagram or Amazon can make these mistakes, why do I give myself so much trouble for writing buggy code sometimes? No one can see all the use cases and outcomes of running their software, and mistakes do happen.
You, me, Amazon or Instagram...we will never write perfect software or always get things right, because there is no right way or perfect software. Whatever works for you, your team, or your company at the time is good enough until you have to make modifications for new user/edge cases.
If we as developers kept programming until we thought our code was "perfect" then either it wouldn't really be perfect, or we'd never finish it! Design and plan ahead as best as possible, but don't beat yourself up for writing buggy code, because it's natural and just happens. If there wasn't any buggy code or systems to fix, a lot of engineers would be out of jobs 🙈
No matter how much we prepare, we will make mistakes, that's just a part of life. What matters is how we face those mistakes and issues, and the tenacity we bring to making software better. These ideas scale, whether we are just solo developers, or are the big companies like Instagram.
So what are your thoughts? How much fuss should we give companies this big when they make mistakes? What are your thoughts on writing code that walks the line between being good and being good enough? What are your thoughts on the balance between tech debt and time to release?
Single Responsibility Principle (or SRP) is one of the most important concepts in software development. The main idea of this concept is: all pieces of software must have only a single responsibility.