A Philosophy of Software Design
Rate it:
Read between January 11 - February 26, 2021
13%
Flag icon
In the tactical approach, your main focus is to get something working, such as a new feature or a bug fix.
13%
Flag icon
The first step towards becoming a good software designer is to realize that working code isn’t enough. It’s not acceptable to introduce unnecessary complexities in order to finish your current task faster. The most important thing is the long-term structure of the system.
14%
Flag icon
Another thing to consider is that one of the most important factors for success of a company is the quality of its engineers. The best way to lower development costs is to hire great engineers: they don’t cost much more than mediocre engineers but have tremendously higher productivity.
33%
Flag icon
Another way of expressing this idea is that it is more important for a module to have a simple interface than a simple implementation.
35%
Flag icon
When developing a module, look for opportunities to take a little bit of extra suffering upon yourself in order to reduce the suffering of your users.
46%
Flag icon
Overall, the best way to reduce bugs is to make software simpler.
52%
Flag icon
Finally, the process of writing comments, if done correctly, will actually improve a system’s design.
52%
Flag icon
“Good code is self-documenting.” “I don’t have time to write comments.” “Comments get out of date and become misleading.” “The comments I have seen are all worthless; why bother?”
70%
Flag icon
up. However, I consider any unsolved bug to be an intolerable personal insult, so I decided to track it down.
73%
Flag icon
If it’s hard to find a simple name for a variable or method that creates a clear image of the underlying object, that’s a hint that the underlying object may not have a clean design.
81%
Flag icon
Don’t change existing conventions. Resist the urge to “improve” on existing conventions. Having a “better idea” is not a sufficient excuse to introduce inconsistencies.
86%
Flag icon
This example illustrates a general rule: software should be designed for ease of reading, not ease of writing.
88%
Flag icon
programming. Agile development tends to focus developers on features, not abstractions, and it encourages developers to put off design decisions in order to produce working software as soon as possible.