It’s easy to take for granted just how rewarding a career in software development can be. There can’t be too many jobs where you have such a vast choice of things to learn about. That doesn’t just apply to programming languages either - within each language there are different approaches and different tools or packages to help or hinder. There’s also a lot to learn around developing software - which methodology suits a project and why.
I’ve spoken before about how a typical career might start. Sometimes you don’t realise how far you’ve come, what you’ve learnt and what you take for granted every day. For example, I recently had the privilege to work alongside an undergraduate - it genuinely was a privilege as it was great to work with someone who I could share knowledge with, and who had an unquenchable thirst to learn what they could from me.
One of the techniques that I realised I do take for granted is Dependency Injection. It’s at the heart of a lot of the commercial software I’m involved with. It’s reliant on other techniques such as unit testing and interface extraction that developers at the dawn of their careers might not be familiar or comfortable with. I took the opportunity to run through a small exercise with my colleague showing how a program can be constructed using DI - but more importantly WHY we use DI and the techniques around it.
The exercise consists of six stages, where a new concept was introduced to the code base in each one, and an explanation of how and why it is done. You can find it in this Github repo. Hopefully someone will find it useful!