After two-decades of doing system development and implementing solutions in companies, one of the big things that I've learned is: there is no perfect system.
Everything comes with pros and cons.
Another way of saying that is everything has trade-offs.
When we identify a problem in a business and decide to get some kind of technology system, it's easy to say: I want this feature, that feature, and so on and so on.
We have to ask ourselves though, how realistic are we being?
The biggest trade-off that we often have to consider is money.
How much do we want to pay for X-feature?
Look at companies like Google and the other big tech companies.
They literally have tens of thousands of employees.
They have hundreds of thousands of man hours a day tapping away at keyboards.
They have a different business model (they make money off ads), but for a traditional software provider, those man hours need to be paid for.
The point here is, we need to be realistic about how much we want to pay for a solution or what balance of trade-off we are willing to accept.
If we want something fancy, we need to be willing to pay.
You also need to remember that salespeople have an incentive to sell their product.
They often inflate what is possible.
We need to think for ourselves about what is realistic and what isn't.
As I've suggested in many posts and other media, keep it simple.
This is one of the biggest things that I've learned in two-decades of development: keep it simple!