4 ms·
Buggy technology is indistinguishable from malware
- amw-zero 6y agoThis is a personal obsession of mine. I don’t subscribe at all to the philosophy of “just build and ship it and let the users give feedback on any bugs.” I think that’s totally a misunderstanding of agile - agile assumes that your code was working before shipping. This idea that code can never actually fully work and bugs are fine is frustratingly cavalier. How can we sell products that don’t do what they claim to? Beyond the philosophical, software correctness is a deeply interesting problem with many different angles of attack. The most recent ray of hope for me has been learning TLA+. It answers so many questions about the complexity of software, and has such a relentlessly elegant design that simplifies so many aspects of understanding software. Software behavior is a sequence of states - nothing more. When we write code, we’re attempting to encode all possible state sequences, the number of which can be astronomical, as this article references. But it’s quantifiably large - we can know the exact size of the state space. Software is not some metaphysical phenomenon that is beyond mastery. It can be built to work correctly, it just requires a desire to move beyond the current tools that we have which are focused on easy construction. We’ve focused all of our energy on just enabling the construction of any software in the past 60 years - we need to now move on to enabling correct software.