Why I write software

There are few media as satisfying to the creator as software. Perhaps writing or composing music comes close. As in most creative forms, software is at its best when it combines both technique and insight. The success of executing these two elements is the result of the maker’s taste, which comes from experience.

Experience cannot be measured in years. It must instead be the depths of the paths traveled. A sailor who sails only in calm seas cannot claim to be experienced. Hence, the path of the experienced engineer is filled with suffering.

The experienced engineer is also aware that only suffering with purpose is acceptable. He has spent many hours fixing the most obscure bugs and is immensely satisfied when the results fit his vision. He is therefore angry, even furious, when he uses slow, buggy, or poorly-designed software. Because he knows that the developers traded their own suffering at the cost of the users’ suffering. It is injustice.

Hence, the just software developer will take on excessive amounts of pain to ease the suffering of the software’s users. Taking on such a burden for the sake of others is, in my mind, the most noble thing someone can do.