Software Design Simplified

by Alex Tucker

design architecture

Software design is a tricky to get right, even for experienced developers. There is simply too much choice and too much information to consider. How do we slow the incidental complexity of our systems with every new feature we add? Learn how simpler patterns and more constraints can actually lead to more reliable results.


Using Singleton Services arranged in layers and passing Value objects in between is a predictable way of getting the aspects of design that developers desire. It promotes expressive interface building instead of pure decoupling (unlike Observables / callbacks promoted by frameworks), separation of concerns by responsibility and by type, and keeps code in isolation for easy testing.

Many developers find their code becomes less maintainable overtime even when they follow the industry trends and/or the tools provided by their framework of choice. This talk is intended to demonstrate that code can be simpler (but perhaps unfamiliar at first) and still play nice with their framework of choice. I will start with teaching Singleton Services and Value Objects. I will then demonstrate by layering your Services with dependency injection you can make reasoning about separation of concerns even simpler.

I also want to provide an anchor point to less experienced developers who are over complicating their code with fancy patterns because they have not tried the simpler ones yet.


About the Author

Alex is a Staff Engineer at Wave where he mentor’s new technical leaders and helps shape Wave’s technical direction. He is particularly interested in helping make complex topics easier to understand and making long term sustainable technology decisions. Alex is also the Organizer of the Python Toronto Meetup.

Author website: http://twitter.com/_AlexTucker