Releasing software as open source — where everyone is free to view and tinker with the code — is both scary and liberating. However, more than that I have to be open about how I write the code, and avoid sprezzatura.
Software is hard to create because it is hidden from all your senses. There is only some static code that represents dynamic software, and matching one to the other is far from trivial. This makes mistakes easy to create and hard to find. Faults are frequently found with GroupServer, the mailing-list management software that underlies OnlineGroups.net. One way to deal with this problem is to release the software as open source, and we do just that with GroupServer. This allows others to look at the code and find (and fix) faults. However, this makes it easy to judge the writer (usually me) by the quality code.
To combat the fear that others will find fault with me because they find fault in my code I try and be open and honest about the difficulties of creating software. This takes conscious effort. The natural tendency is to use the code to present an air of sprezzatura, or
studied careless: the code should look like you just quickly dashed it off but be efficient, elegant, and easy to understand. I see sprezzatura when people use phrases such as
ready for production is not the same as ready for GitHub (which is attributed to Carl Quinn). Techniques such as squashing commits are used to provide the illusion of sprezzatura.
However, I think sprezzatura in software to be dishonest. I prefer to record my mistakes, warts and all. It helps remind people, including myself, that I have had difficulty in the past, that mistakes will happen, and this is ok.
Once I accepted that achieving sprezzatura honestly was an impossibility I was liberated from the burden of trying to achieve perfection. (As Voltaire wrote, le mieux est l’ennemi du bien: perfect is the enemy of good.) This then frees me up to write better code, because I am no longer worried about writing perfect code.