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.
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?