Always use a NoSQL database so your app can scale.

NoSQL databases can be more scalable, but schema-on-read has other drawbacks. NoSQL databases are much less capable of transactional changes. Relationships are difficult or impossible. Designing schemas to be efficient is much harder, and requires more up-front knowledge about your problem. NoSQL databases are sometimes the right tool for the job, but they are not the right tool for every job.

Monoliths are bad. Build Microservices.

Microservices have advantages, but they are harder to build. They are harder to deploy. They require more tools, processes, and governance to keep them running and working together properly. If they aren’t carved up just right they can create cross-team dependencies and performance bottlenecks. All that being said, they are ane excellent tool for very large organizations to decouple and decompose development teams.

Never use reflection because it’s slow.

Reflection can be a heavy operation, but it can also give you extremely valuable information. If it does prove to be a performance problem, there are also other optimizations which can help, or at worst, you can try to restrict lookups to development and test environments. Stack traces in exceptions can be extremely helpful in finding bugs. Even if they do cost a bit to collect them, the developer time wasted figuring out bugs, and the unhappy customers waiting for fixes may cost you more.


I have heard these kinds of absolute statements many times in my career. To be fair: building software is hard and there is a lot to learn, and simple statements are a comfortable simplification. The problem is that few absolutes exist.

It doesn’t help that so much information in our industry is presented this way. Blogs that pronounce something bad get clicks. Vendors don’t like to tell you their drawbacks. Everyone wants you to agree with them.

This kind of blind adherence to arbitrary rules is bad engineering. We should work to understand the advantages and disadvantages of our technical choices, and understand when it is important to get them right.

Since I started with a quote, I’ll end with another:

When you believe in things that you don’t understand
Then you suffer
Superstition ain’t the way

– Superstition by Stevie Wonder