Recently I’ve enjoyed reading blog posts by Nikita. You can find the blog here. One blog post I see quoted often is this one (you can read it in 6 languages - that says something). It’s about the disastrous state of current software development.
The author brings a lot of good points. The message is that no one puts effort into making software performant. We solve problems by adding complexity, never actually solving the root cause. This comes at a cost. It’s all a slow, bloated and complicated mess. Hard to disagree.
Personally I feel the results of those poor design choices often. I’ve started my adventure with 3D graphics by learning Autodesk’s 3dsMax. With each and every update it became more sluggish. It improved it’s tools by iterating, mostly adding conveniences. At some point I decided to move on to Modo… which fell victim to the same process of adding new things that never actually changed anything in a significant way. Fortunately I gave Blender a try. It’s a free, around 150MB download and I feel it gives a better experience than paid alternatives. Is it safe from the empty updates which mostly degrade the performance? Probably not but it has a good track record.
Another example are smartphones. Nowadays we change our phone every other year. There wouldn’t be anything inherently wrong in that if we weren’t forced to do so. You can buy a new Android phone and it will be useless after few years even if you don’t install any new apps. The updates themselves will render your device useless. It will become sluggish and unresponsive, and you won’t get anything for that. Did the hardware itself degraded? Your screen might be scratched or the case might be banged up but the processor computes as well as it did day one.
Well people don’t complain, do they? They buy the next model and life goes on. It’s bad if you look at it from sustainability perspective… but lets not go there. Lets focus on the choice itself. Personally, as a consumer, I often feel forced to make some decisions. Do I really need a new phone? No, I can use the old one and suffer horrible user experience. At some point my frustration will reach a point at which I will break and impulse buy a new phone. In situations like these I don’t feel I have a choice. I feel forced into buying something I don’t really want to buy. As an engineer I understand it not because technology gets old. It’s because consumer should consume.
All of this makes me think about our responsibility. Responsibility of the designer, engineer, creator. Typical user has to live in a world where rules are made by big companies. Those companies hire engineers like me to create consumables, be it a smartwatch, smartphone, piece of software or a car. It’s easy to say the companies themselves are responsible for creating a sustainable products. What about the hands that create those?
Are we responsible for the result if the management imposes strict time limits? I believe we are. We shouldn’t take shortcuts, and always consider the future. We can’t adopt the mentality of pushing the responsibility on the next guy. Don’t solve problems that are not there yet but make sure the solution for the problem at hand won’t fall apart mere days after release. Just stop patching things up with another layers of abstraction… first of all understand the problem and the context.