Is every piece of software doomed to become bloated?
One of the very few things I learnt in art class is what role Jackson Pollock played in his art. Because, we were asked, what is the role of the artist, if the only thing he does is let paint drop on a canvas?
His role is to decide when the work is complete.
This is something we most often overlook in computer science: there comes a time when a project, or a feature, is complete, and any more improvements, any more work put into it is likely to decrease its value and ruin all the good work. Too often we want progress in our applications, without realizing that it's actually destroying them. Sometimes it's just better to move on and work on something else. Even if a solution is 10 years old, it doesn't mean it has to be updated because progress requires it.
Let me present a couple examples.
The Gutenberg editor in WordPress
WordPress 5 introduced the new Gutenberg editor, a project that has been rated with 2 stars out of 5 with a total of around 2000 reviews at the time of writing. It's a product that is so buggy and un-usable that it is bewildering that it made it into Core, but whatever (in 10 minutes of usage, I found 7 crucial and unreported bugs just 4 months prior to release - see my review).
Let us pause and ponder why it was introduced. Any apology of Gutenberg will say that is because the classic editor felt old. It looked so much like Office 2003, and it's 2018, they say! You see, they say, 15 years in computer science is a huge deal!
But, you see, what is the main purpose of an editor? To write. And to that it must be apt. Gutenberg shifted the focus from writing content to designing a page, effectively forcing a progress in the wrong direction. Not much has changed in writing since Office 2003 came around: we still use bold, italic, headings, text alignment and little more. Anything else requires the careful crafting of a designer and writing of some HTML, as it should be. Nothing else is needed, really, when it comes to writing. But, they say, you cannot even create a table with the classic editor! And I say, that's right, it should be possible! But that doesn't require trashing a whole editor and building a cumbersome React-y thing just so that we can have tables, does it?
But, they say, this way you don't need a designer to design your pages anymore. Of course, people must be really stupid if they have been paying web-developers/designers to put up their websites for the last 25 years, of course! So stupid of us! There, instead of hiring a professional photographer to shoot at your weeding, just give a compact camera to your uncle, since technology and progress have enabled you to do so. Because it really is just the same. When I was a kid, websites designed with Dreamweaver were looked down on, and anybody who wanted a real site should have hired a professional. Not it looks like everybody can do everything - expect that, uhm, they can't.
Too often the right questions are not asked and carefully considered. Those are the most basic ones: do we really need this thing? How difficult is it to build it? Is it really worth it? What is the impact it will have on users/market? Does it add something really useful and needed without breaking anything else?
If some answers to these questions are not fully positive, then it's likely we are doing something just because it can be done. But the fact that it can be done doesn't mean that it should. We all know how bad Windows is getting by just feeling like they have to completely change their style every 4 years. (When not on Ubuntu,) I run Windows 7 and I don't feel any urge to jump forward, and I have got clients that ask me to install it on their brand new laptop, even if it's a 10 years old system. Maybe all that came after it was not needed?
Co-Authors Plus and guest authors
The Co-Authors Plus plugin allows WordPress posts to have more than one author. It's a useful feature. I have made significant contributions to that plugin during my internship at Automattic, so I have come to know the plugin very well.
This plugin is now almost 10 years old, and in its basic form, it allowed to add two WordPress users as authors to the same post. This is already a significantly difficult task from a technical point of view. But then, 3 years from its first release, plugin authors introduced the Guest authors feature, which allowed to create virtual user profiles for people who did not have an account on the site but had to be added as co-authors.
God, how bad that has been. Virtual user profile means that it's a not a WordPress user, so in order to add it as co-author, a bunch of horrible things need to be done. It introduced so many issues and possible bugs that even now, in 2018, we are still fixing them. At the end of the day, the database was littered with so many redundant records to make the whole thing work, and the logic of the software so more difficult, that it's doubtful that the feature was good (not to mention that there was no real uninstall routine, so all that garbage stayed there forever).
And now pause and ponder: why did we need that? What is the sense of creating virtual user profiles? Does it really add something important, given the issues and badness it gives rise to? Most importantly, what is the sense of creating a virtual user profile that is not a real user but can be added as co-author? Can't we just create a real user profile and give it the Subscriber role, aka the lowest set of permissions? What is wrong with this idea? Nothing - but you see, if we always took the right decision then we wouldn't need a fork of Co-Authors Plus that only retains the useful features, and it would be too easy.