Do you ever look at your software systems and workflows holistically? Do you ever wonder what could be achieved through smarter designs and dedicated effort? When you design your applications, do you consider developer efficiency and satisfaction as much as end-user experience? Python offers the simplicity and flexibility to achieve both. In this talk, I will explore a journey from supporting disjointed components and addressing ad hoc business requests to developing a technical vision and creating an elegant solution that both serves business needs and offers developers a pleasant support experience. I will also highlight the design thinking approach, software architecture “-ilities” concepts, and the decision process that took place during this project.
As software developers, it is not uncommon having to address unexpected changes, be it emergency requests, changing requirements, or a newly discovered bug. Often, there will be a quick and straightforward solution that seems simple enough to warrant a quick change. The path of least resistance might be tempting, especially when we are pressed on time. But, is it always the best long-term solution? Will it result in duplicate code or introduce hidden hard-coded values? As we gain experience and domain knowledge, we may foresee similar situations arising repeatedly in the future. But, the shortcomings of such an approach are not hard to miss: a growing code base that must be supported, a newly-found bug that will have to be addressed everywhere, retesting and redeployment. The same goes for new enhancements that must be introduced everywhere, while maintaining the same overhead. And what about developer satisfaction and efficiency? How happy are we to maintain this code and how likely are we to introduce new bugs as the requirements grow and the code expands? As importantly, how long will it take us to accommodate a new requirement? At one point during the pandemic, I was faced with similar dilemmas. I work in the field of regulatory technologies. Screening for sanctions, financial violations, money laundering, etc., is one of the most critical activities in this domain. With the tightening regulatory space and expanding business, we knew we would time and time again need to add new screening actions. So, how did we address our users’ needs in a timely manner, while, at the same time, saving our own time and effort? This was a start of an exciting journey, which led me from these questions through the design process to the implementation of the system, which keeps proving itself as an efficient and extensible solution for the regulatory needs we face. After this talk, my audience will gain an understanding of design thinking principles, software “-ilities” and, hopefully, develop their own ideas for improving application design.
Speakers: Natalya Buga