Contribute Media
A thank you to everyone who makes this possible: Read More

Moving Towards Best Practices in Legacy Code Bases


When a company is young, getting the product out the door is the most important thing. Time to market and lopsided hiring of inexperienced developers often ends up delivering a product that works, but is riddled with Python anti-patterns. How to move towards best practices while maintaining development velocity and product stability?


Real life is messy. Real companies doubly so. While, of course, the decision to use Python is a good one, often developers are hired who are either inexperienced or are new to Python. Following best practices, or even learning what they are, or even avoiding replicating Java/C++ in Python, are treated as luxuries reserved for bigger companies.

After enough pain-- in the form of production outages-- is experienced, it is often possible to convince companies that efforts need to be made to bring their code up to date. What is the best way to achieve that?

We will talk about practices to update to the newest version of Python, and the newest versions of libraries, while avoiding (most) risk. We will cover techniques to introduce static analysis, and better unit testing, to reduce the chance of customer-facing problems. We will also cover how to refactor large mono-repos into manageable pieces using pip, pants and pex. Finally, we will cover how to introduce a microservice architecture gradually, in order to isolate faults.


Moshe is a core Twisted contributor, and has contributed to core Python. He has building and deploying web applications since 2001.

Kurt B. Rose has been developing in Python since 2008 in the areas of web, networking, and security at Samsung, PayPal, and several startups.


Improve this page