Victor Rentea

Java Champion, ex Lead Architect @IBM
Victor (@VictorRentea) is a Java Champion, and one of the top Technical Trainers, having trained a few thousand developers in dozens of companies worldwide.
Victor’s talks are regularly top-rated at the largest international conferences in Europe: his live-coding sessions are lightning-fast but well crafted, full of enthusiasm, deep insights and take-away tips. His passion is Simple Design, Refactoring, and Unit Testing, about which he regularly talks at top conferences. His personal commitment is to seed passion for writing clean, professional code.

Workshop topic:
Design Patterns and Principles

Time & Date:
October 24th & 25th | 9am-5pm CEST

About workshop

You have to master Design Patterns to identify and reason about design alternatives, but also to understand existing code and communicate easier with your colleagues. This workshop introduces each pattern by reasoning on a large series of code samples. However, the focus is kept on the evergreen design principles and values, and alternative ways to follow those principles. In the agenda, you’ll find simple patterns like Singleton, Factory Method, or Strategy, but don’t expect to hear a dogmatic, boring definition of them. Instead, we’ll discover together pitfalls, variations, tradeoffs, and alternative designs that will fill your toolbox for writing better, simpler code in your current project.

At the other end, we’ll explore patterns (like Proxy) that underly mainstream framework today, as well as inter-system collaboration patterns, like commands and events, choreography, and orchestration. However, one of the most important takeaways will probably be the Clean Architecture (aka Onion), implemented with a pragmatic, code-first mindset.

Agenda

  • Design Principles (covered along the way) - 1 hour
      » Coupling: code-, fan-in/fan-out, temporal-, (other types)
      » Cohesion, Single Responsibility Principle (SRP)
      » Don't Repeat Yourself (DRY)
      » Keep It Short and Simple (KISS & YAGNI)
      » Rules of Simple Design, by Kent Beck
      » Encapsulate what varies
      » Program to Abstractions and Separation by Layers of Abstraction
      » Favor composition over Inheritance
  • SOLID Principles by Uncle Bob – 1 hour
  • Creating Objects – 2 hours
      » Singleton and Dependency Injection
      » Abstract Factory (briefly)
      » Factory Method – 7 reasons
      » Builder Pattern – 5 styles + why are they bad
  • Aspect-Oriented Programming – 1 hour
      » Decorator, Proxy
      » Usage in Spring Framework
  • System Architecture – 2 hours
      » Adapter Pattern and Dependency Inversion Principle
      » Facade Pattern, Layered Architecture, and Evolutionary Architectures
      » Onion Architecture (aka Hexagonal-, Ports-and-adapters, Clean-)
  • Propagating Change - 3 hours
      » Observer Pattern: Spring Events, Message Integration, Event-driven Architectures
      » Command Pattern: Thread pool executors with JDK and Spring
      » Integration Paradigms: shared DB, File transfer, RPC (+reactive), queues; comparison
      » Orchestration vs Choreography for Microservice integration
      » [optional] The Saga Pattern, compensations and reservations; application: Food Delivery Application
  • Object-Oriented Patterns – 3 hours
      » Visitor Pattern
      » State Pattern
      » Strategy and Chain of Responsibility (aka Filters)
      » Template Method and Passing a Block (functional programming)
  • Wrap-up – 1 hour
      » Anti-Patterns + typical workarounds
      » Recap
      » Classifying Patterns
      » Practical Usage of Patterns
      » Final Test + awards.

You can download the full program for this workshop at the following LINK.

* If you're interested in this program, please contact us at info@itkonekt.com to find out more about availability and prices.