Talk

Distributing complexity in huge python projects.

LanguageEnglish
Audience levelIntermediate
Elevator pitch

An overcomplicated project increases development and maintenance time. If a complete redesign is not possible, we can try to distribute the complexity across the existing codebase. The AI assistants cannot help us with this task yet, and we should discuss manual methods and tools that can help us.

Abstract

The purpose of this talk is to define the necessary steps for startups after the initial growth explosion to support successful future adaptation.


Since it is impossible to avoid the grow of complexity in project, it is necessary to prepare for it in advance in order to minimize negative consequences and enhance positive impacts.

Preventive actions:

  • Implementing a Code Style Guide to unify parts of the code base.
  • Gather opinions on keeping legacy code or a complete refactoring. These will become future milestones on your project roadmap.
  • Documentation in the form of “What do I do if I die?”.

Spreading complexity through separating parts of a project into isolated blocks:

  • GPT tools, how they can help, and why they can’t help.
  • Manual tools and techniques for identifying and avoiding interfacing patterns in the project.
  • Looking at the structure of individual applications if microservices are not a good solution.
  • Packaging portions of code into separate libraries.
  • Separating settings.

For each topic, I will give examples of working with large projects that are at the “beginning of the second act”. Despite different goals, geographical and social contexts, these projects shows similar architectural mistakes, which will be discussed. The effectiveness of the proposed ideas will be demonstrated by applying them to large projects from different business areas.

TagsBest Practice, Code Analysis, Microservices
Participant

Maxim Danilov

I’m a DevRel, team leader and senior software developer with 12+ years of experience. I’ve led international teams, launched startups, spoken at technology conferences, written and reviewed hundreds of thousands of lines of code, and participated in open source projects. My current portfolio includes healthcare projects, two shipping tracking software, a high-loaded SaaS service for generating PDFs, and a significant collection of conference talks and media publications. I speak four languages and am recognized as a “Super Mentor in Engineering” on ADPList.org. I also participate in half marathon events and mountain ski professionally.