Modern art of simplifying python projects by distributing complexity.
10-17, 14:00–14:30 (Europe/Lisbon), Auditorium

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. The effectiveness of the proposed ideas will be demonstrated by applying them to large projects from different business areas.


The purpose of this talk is to define the necessary steps for matured project to support successful adaptation for futured tasks.

Let’s imagine a successful startup. Brilliant ideas require quick realization. Customers are happy, investors ask to add more functionality. With time, the project consume an initial wave of hype and stabilize own grow. The team scales up with the project. Some programmers leave, new ones come in. Parts of the project are rewritten due to lack of documentation or technology not meeting business needs. But suddenly the productivity of the developers collapses, this is the so-called “after wave of hype life” with the following symptoms:

Exponential growth of required tools and technologies
Low incomes from additional features vs. high development costs
Enormous growth in the number of people involved
Since it is impossible to avoid this step, 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 this stage. Despite different business types, geographical and social contexts, these projects shows similar architectural mistakes, which will be discussed.


Audience Level

Intermediate

What are the main topics of your talk?

Refactoring in big projects.

Python/Django Software Engineer, Solution Architect, DevRel and Tech Speaker.

I start my career as a programmer specializing in embedded solutions in 1997, and grow to the role of Chief Technology Officer in 2023. Through many successful projects, I gained a robust understanding of various software development paradigms. In last 10 years as a code mentor, I 've got three times the Award 'Super Mentor in Engineering'

This speaker also appears in: