The D in SOLID is for dependency INVERSION not injection.
Most dependency injection that I see in the wild completely misses this distinction. Inversion can promote good engineering practices, injection can be used to help with the inversion, but you don’t need to use it.
Agreed, and I conflated the two since I've been describing SOLID in ways other devs in my team would understand for years.
Liskov substitution for example is an overkill way of saying don't create an implementation that throws an UnsupportedOperationException, instead break the interfaces up (Interface Segregation "I" in SOLID) and use the interface you need.
Quoting the theory to junior devs instead just makes their eyes roll :D
Honestly inversion kinda sucks because everybody does it wrong. Inversion only makes sense if you also create adapters, and it only makes sense to create adapters if you want to abstract away some code you don’t own. If you own all the code (ie layered code), dependency inversion is nonsensical. Dependency injection is great in this case but not inversion.
Very compelling and would be fun to learn something new. Need to research if the 3 month launch constraint can be accommodated or better to outsource. However the act of coding and learning again is very attractive. Thanks.
In my experience this is a superb way to rapidly create bad integrations with AWS.
Some of the simple things will be easy, everything else will be hard.
Also instead of supplying an SDK, Amplify will provide components that can seriously constrain lots of your UI architecture decisions.
For Javascript the old mobile SDK was much more usable.
Almost all of the AWS services have a sensible JSON API, I wish that AWS would just generate sensible SDK bindings for Swift, Javascript and Dart and stop all development on Amplify.
The most influential technical book I have read over the past 10 years for sure.
The author guides the reader though the process of managing complexity with some intriguing concepts such as "Define errors out of existence" and "Deep modules".
I definitely recommend it.
Most dependency injection that I see in the wild completely misses this distinction. Inversion can promote good engineering practices, injection can be used to help with the inversion, but you don’t need to use it.