Lately I’ve pondered the following question: what are the things that I believe in as a software developer? I mean notions, ideas, concepts, or even principles that you lean on when making decisions and trade-offs. This time I am concentrating on professional beliefs even if I think moral and political beliefs are important also in a professional context.
I think these kind of principles must be such that one can have reasonable arguments about perhaps with solid data. For instance I don’t count “I believe in quality software”. Nobody would be on the other side of that argument and it boils down to have no meaning. A good principle would be something like: “I think monoliths are better than micro-services”. One can sit on either side of that argument and good software is written on both sides of that divide and yet most people have an opinion about which one to choose if the choice is available.
Ideas that one believes in don’t need to be big, abstract thoughts. One can have an opinion on tabs vs. spaces or perhaps that one should always, always use semicolons in Javascript. You can write successful software whatever your opinion is on those matters but usually you do have an opinion.
I think I have an initial list in mind but it needs some fine-tuning as the abstraction level on my list varies from quite small to pretty abstract. What is on your list of software design principles?