More often than not, you have n > 1 implementation solutions possibles. The article said to factor the constraints into the choice of solutions, not the solution itself.
Like if it would take 6 months to implement a backend, but just 1 month with Firebase, and time is a more important than data ownership, you go with Firebase. Then you prepare a plan if you ever need to migrate off Firebase. If you don't have time to do a custom UI, you go with a components library. That also means knowing the range of possible solutions (aka mastery). If nothing else, you reduce scope.
There's a plethora of ways to respect time/monetary constraints without resorting to shoddy code and duck taping.
Like if it would take 6 months to implement a backend, but just 1 month with Firebase, and time is a more important than data ownership, you go with Firebase. Then you prepare a plan if you ever need to migrate off Firebase. If you don't have time to do a custom UI, you go with a components library. That also means knowing the range of possible solutions (aka mastery). If nothing else, you reduce scope.
There's a plethora of ways to respect time/monetary constraints without resorting to shoddy code and duck taping.