Skip to content

#61 - Evolving a Clean, Pragmatic Architecture - A Software Craftman's Guide

Photo of Olimpiu Pop
Hosted By
Olimpiu P. and Gabriel P.
#61  - Evolving a Clean, Pragmatic Architecture - A Software Craftman's Guide

Details

Meeting #61 - Evolving a Clean, Pragmatic Architecture - A Software Craftman's Guide

Speaker: Victor Rentea
Sponsor: IBM
Language: Romanian
Organized in partnership with Voxxed Days CJ

Agenda:
18.00 - 18.30: Reception
18.30 - 19.30: Talk - Evolving a Clean, Pragmatic Architecture (programming language-agnostic)
19.30 - 20.00: Break + Food
20.00 - 21.30: Extracts you select from 1-2 training topics in Victor's curricula, live-coding in Java.

Who's the speaker?
Victor is one of the most appreciated technical trainers in Bucharest, well-known for the passion he puts in every minute of his classes. His training experience is impressive: over the past 5 years he trained 1K+ developers over 150 days of in-house sessions held at 18 companies.

Part 1: The talk.
Evolving a Clean, Pragmatic Architecture - A Software Craftsman’s Guide

The purpose of this meetup is to help developers design well-crafted code. Meaning expressive, concise design that remains flexible and testable.

The talk is an intense brainstorm, walking through the major decisions usually taken in an enterprise application architecture. The hidden intention is to challenge the participants to rethink critically their own architecture, and find ways to simplify it or restructuring it following the hexagonal (aka "Clean") architecture.

The idea of this presentation came from trying to balance pragmatism with maintainability. Without continuous refactoring, a simple design will quickly break underneath new features. On the other hand very highly-factored code can burden the take-off of the development and then end up freezing the mindset in some rigid 'a-priori' decisions.

"Architecture is the art of postponing decisions", said Uncle Bob. This talk takes this idea further and explains what Victor believes to be the ideal mindset about designing an enterprise application: Evolving a Pragmatic, Clean Evolutionary Architecture.

  • Pragmatic = Keep It Short & Simple
  • Clean = The Hexagonal Architecture (Dependency Inversion Principle)
  • Evolutionary = Continuously Redesign, to accommodate growing features
  • Architecture = A way to ensure Developer Comfort
  • Testable = To grant Developer Safety

This talk is basically a summary of the design principles that Victor distilled as over the past 4 years as IBM Lead Architect, designing and developing 8 enterprise applications for a client in the banking sector (the largest client of IBM Romania). Victor also taught this philosophy to many other companies as part of his trainings, and many developers stated that it "opened their eyes".

Some things you will hear:

  1. Intro: KISS, Domain-Driven Design vs Transaction Script
  2. Modeling Data
    The Fit Entity, that you carefully craft to help you
    Value Objects and immutability
    Data Transfer Objects, under the influence of the enemy
  3. Extracting Logic
    Mappers, that encapsulate conversion
    Facades, the birthplace of logic
    Extracting Domain Services for KISS or DRY
    Logic Extraction Patterns
  4. The Clean Architecture
    Dependency Inversion Principle, allowing a 'pure' domain
    Repositories, what should they contain?
    External Services, how to call them cleanly?
  5. Testing
    Design Feedback
    Each bug should be found Once!
    A new style of TDD?: Extract and Split

Requirements:
The only requirement for attending this presentation is a lot of passion.
The talk is language-agnostic, you need just OOP understanding( Java, C#, PHP, Ruby, Scala)

The talk is on a conceptual level, but there will be some code examples to support the arguments, easily understandable by non-Java too.

Part 2: Your selection.
During the break, the participants will vote what they want us to discuss during the second part of the meetup, as much as will fit in the remaining time. The options will be extracts of the most interesting snippets from Victor's training curricula (http://www.victorrentea.ro/#training), composed of slides and live-coding in Java. The options will include: jdk8, Mocking, TDD kata, Spring @Transactional.

Photo of Transylvania Java User Group group
Transylvania Java User Group
See more events
hotel Opera Plaza - sala Cristal
Strada General Traian Moșoiu · Cluj-Napoca