Att bygga bra mjukvara innebär en obeveklig jakt på att slipa bort hårda kanter