Legacy Code Architecture Training
Level
IntermediateDuration
24h / 3 daysDate
Individually arrangedPrice
Individually arrangedLegacy Code Architecture Training
This training combines theory with practice, providing tools for daily work on code and architecture quality. Whether you’re working on monolithic applications or microservices, this course will help you better understand the challenges associated with legacy code and find optimal solutions. Through practical examples and proven techniques, you’ll gain the knowledge needed to maintain and develop even the most complex legacy systems.
Who is this training for?
Developers who want to enhance their skills in managing code quality—learn how to avoid pitfalls related to technical debt and improve code transparency.
Team leaders and tech leads aiming to streamline team processes and manage technical decisions in projects.
Software architects seeking to design application architectures more effectively and maintain their consistency over the long term.
Individuals working with legacy code who want to implement changes effectively without destabilizing existing solutions.
What You Will Learn
- Effective management of code and architecture quality—understand concepts like SOLID, KISS, DRY, and YAGNI to design better solutions.
- Effective strategies for managing legacy code—learn when to choose refactoring, the Strangler Pattern, or rewriting to reduce technical debt.
- Practical refactoring techniques—identify issues in code and apply refactoring at the method, class, module, and architecture levels.
- Optimizing team collaboration—discover ways to minimize conflicts when introducing changes and making key decisions.
Training Program
- Introduction
- Software Quality vs. Code Quality
- Legacy Code vs. Technical Debt
- Why does code quality decline?
-
Strategies for Managing Legacy Architecture
- Continuing the current approach
- Continuous Refactoring
- Strangler Pattern
- Rewrite
- How to make decisions?
-
Prevention
- Overview of techniques
- Cost vs. benefit
- How to handle challenges
- Conflicts vs. decision-making
-
Software Development vs. Code Quality
- Composition Over Inheritance
- Data Model vs. Domain Model
- Domain Model vs. Anemic Domain Model
- SOLID
- KISS
- YAGNI
- DRY
-
Overview of Selected Programming Patterns
- Creational Patterns
- Behavioral Patterns
- Structural Patterns
- Being Pattern Happy
-
Software Development vs. Architecture Quality
- Architecture Decision Record
- Architecture Testing
- Low Coupling
- High Cohesion
- How to choose the right architecture?
-
Refactoring
- What is refactoring?
- When (not) to refactor?
-
Preparing for Refactoring
- Edit and Pray
- Cover and Modify
- Implementation-Oriented Tests
- Testing modified code
- Testing vs. compromises in code
-
Code Refactoring
- How to identify the problem?
- Refactoring methods
- Refactoring classes and dependencies
- Refactoring modules
- Summary