How to Build Good Software | Civil Service College Singapore

Source: How to Build Good Software | Civil Service College Singapore, by Li Hongyi

How useful a piece of software can be is usually limited by its complexity rather than the amount of resources invested in building it. … Building good software involves alternating cycles of expanding and reducing complexity.

There is no such thing as platonically good engineering: it depends on your needs and the practical problems you encounter.

Software projects rarely fail because they are too small; they fail because they get too big.

A good engineer has a better grasp of existing software they can reuse, thus minimising the parts of the system they have to build from scratch. They have a better grasp of engineering tools, automating away most of the routine aspects of their own job. Automation also means freeing up humans to work on solving unexpected errors, which the best engineers are disproportionately better at. Good engineers themselves design systems that are more robust and easier to understand by others. This has a multiplier effect, letting their colleagues build upon their work much more quickly and reliably. Overall, good engineers are so much more effective not because they produce a lot more code, but because the decisions they make save you from work you did not know could be avoided.