When doing a little bit of managing I told the developers that if there's a standard, use that standard, but I was wrong, they basically ended up hammering in a a round peg in a square hole.
What's wrong with standards?
As an inexperienced manager, standards sounds very nice. What can go wrong if you use the standard?
Standards take into account many use cases, but they likely do not suit your use case. It's like designing for the average person,
which ends up in not suiting anyone.
The more use cases and combinations of parameters you have the more complicated the system becomes. It's much faster and easier to write a program that is good for only one thing, then a program that does everything.
And a program specifically made to only solve problem X probably does a better job and is more simple to use then a program that does many things and also solve problem X.
Another pitfall is to think that software can be reused. Taking a software designed for to example dogs, it's not a good idea to use it as a base for building a program for cats. As a manager it's easy to think that you can just replace the dog parts with cat parts, and save a ton of work, but it will instead end up causing a ton of extra work.
I almost dare not to mention frameworks as they are seemingly worshiped, and as a manager it seems very nice to be able to use a common base that everyone is familiar with, but they are not, there are as many frameworks as there are developers. Frameworks usually work as road bumps in order to slow down development, only use them if your developers need training wheels. The rule is that you always want to own the main function, eg the first function that runs in a program. The exceptions are frameworks that has such a strong abstraction layer that they become their own programming language and ecosystem.
When should I use standards?
Standards are good if you want interchangeability, for example if you want the front-end or the back-end to be exchangeable, or want two different services to communicate (an communication standard is called a protocol).
For example if you are making an operating system (OS), it could be nice if the programs written for another OS would also work on your new OS, or if you are making a music player, it would be nice if it could play different formats like mp3, wav, flac (a file standard is called format)
Software libraries and modules
When software can be reused it's called a library or module. For example very common tasks like reading a file from the hard drive disk (HDD), or downloading a file using the HTTPS protocol, it could be abstracted into a library or module and reused in other software projects.
Think of libraries/modules as code that you copy into your project, so rather then writing everything from scratch, you reuse very common code between programs.
So to summarize, don't use standards, and avoid software that claim it's suitable for many use cases unless it's a programming language and or library.
Written by Johan Zetterberg 16 Maj 2023.