--- title: Zero cost optimizations date: 2021-04-03 description: Some optimizations come at virtually no cost. This can be in any area of life, not just in programming. Even if their benefit is limited, the cost is practically zero. So why not do them? --- Some optimizations come at virtually no cost. This can be in any area of life, not just in programming. Even if their benefit is limited, the cost is practically zero. So why not do them? In this post I want to share some thoughts about the structure of this kind of optimization. ## Examples That sounds very abstract, so what do I mean by this? One example would be accessibility. As a frontend developer you should know how to create accessible websites. I am not talking about the full-on-works-better-with-a-screenreader kind but just something that avoids the most common pitfalls. If you already know how to do it, why not do it all the time? It may not be a hard requirement in every project, but it sure is better than not doing it. Another example is code styling. If there are agreed upon norms for writing code in a specific language, why not just use them? One example from another area of life would be veganism. For the largest part it is healthier, kinder, and more sustainable than eating meat. There is no extra effort involved. I see no reason against it. ## Counter arguments Obviously not all people value accessibility, code styling and veganism. I want to look at some common counter arguments: ### You ain't gonna need it [YAGNI](http://c2.com/xp/YouArentGonnaNeedIt.html) is a reminder against feature creep. Even if you think you will need a feature, don't implement it until you *actually* need it. I think this is valuable advice in many situations. However, all examples I mentioned were about doing a thing *differently* rather than adding something new on top. So I don't think it applies. ### Effective altruism [Effective altruism](https://www.jefftk.com/p/effective-altruism-and-everyday-decisions) is a movement focussing on the optimizations with the highest impact. Their position is that you should not waste time and energy on low-impact optimizations if there are more effective things you could do instead. This, again, is a very good point. The examples I mentioned all have high efficiency (high impact/cost ratio) but low effectiveness (low total impact). Still, I see no reason not to do them. I would rephrase this critizism as: "Don't spend time arguing about it, just do it". (I am aware of the irony of me writing a blog post about this topic. We all have our faults.) ### Virtue signalling [Virtue signalling](https://www.urbandictionary.com/define.php?term=Virtue%20Signalling) is the allegation that people do zero cost optimizations not for their benefits but to show off. This argument can be reversed easily: People who do *not* do these little optimizations obviously just do it to show that they do not care. If you talk to someone about climate change and they order a steak, that is a statement. Sure, I guess all these are signals. But that is mostly because ["one cannot not communicate"](https://en.wikipedia.org/wiki/Paul_Watzlawick). I would argue that this form of communication is even useful in most cases. It is good to know whether the person I talk to actually knows and cares about the topic. ## Habits and teams When I say these optimizations come at zero cost, that is only true for the long term. When you are just starting you may need to change your habits, and changing habits is hard. If you work with others you usually need to align your habits and expectations to a certain degree. If you only eat vegan food you will force this on anyone who invites you to dinner. The same is true if you insist on a specific code style during code review. As you usually communicate with different people, you need to have some degree of flexibility in your habits. If you over-optimize, you will have a hard time fitting in. ## Conclusion Zero cost optimizations, also called "virtue signalling", are efficient but ineffective actions based on habits. Arguing about them is not worth the time. But doing them totally is.