Ed is a polyglot programmer with interests in software engineering, software architecture and modularizations, and socio-technical systems.
Previously he's worked in complex domains ranging from industrial robotics, to medical systems, but most recently has been a platform engineer at Quid, working on a mix of data engineering and microservices for NLP and ML applications.
Dependency Injection is a basic technique in other languages or frameworks, but less commonly seen in Python. For many developers, and especially those who have come to rely on patching, it is also un-intuitive. Superficially, it may be considered as simply "passing things in" via parameters, but this understanding is mistaken, and often falls apart when applied to realistic examples.
Understanding DI as a technique is a gateway to improving both your software design and testing, as well as clean architecture principles. This session will introduce fundamental DI concepts with basic examples, clear up some common misunderstandings, and draw a connection to clean design and testing. The content is aimed at a beginning to intermediate level.
Dependency Injection is a basic technique in many statically compiled and/or object oriented languages, but is less common in Python, most likely due to its dynamic nature, and the diversity in background of the Python community.
In lieu of DI techniques, Python developers often resort to more traditional "top-down" design, relying on global variables and singletons; and patching to test.
Though this style of development has the advantage of being straightforward at a small scale, it scales poorly for larger, more complex enterprise applications.
DI as a technique is often unintuitive and misunderstood by many developers when they first encounter it. This talk will demonstrate dependency injection by simple examples, describe some common misconceptions, and show its connection to other concepts like clean architecture.
The intended audience is beginner to intermediate. (For a 40 minute version, some content for advanced developers could be included).