This violates KISS and YAGNI and potentially leads to overengineering code and excessive abstraction
This violates KISS and YAGNI and potentially leads to overengineering code and excessive abstraction
That's the gotcha though. Everything applied with due care and cognizance works. This is not what is being discussed here. What the author suggests does lead to overengineering though. Think of stereotypical enterprise Java code if you need examples
Even though the business currently doesn't have a need to e.g. support any other currency than USD and EUR, an experienced developer will clearly see that it is unlikely to stay that way for long, so doing some preliminary preparation for generalizing currencies may well worth the time.
Your regular business requirements are way more complex than just a currency list. This is like trying to justify your point using an oversimplified example imo.