My training programs are designed to help your team gain a deep understanding of business needs and create innovative solutions.
Training
My training programs are designed to help your team gain a deep understanding of business needs and create innovative solutions that meet both technical and business requirements. With a focus on business awareness, cutting-edge technologies and industry best practices, my training can help your team deliver high-quality, scalable software that drives your business forward.
With my guidance and expertise, your team can become proficient in the latest technologies and best practices, and be better equipped to deliver outstanding results for your clients.
Invest in the future of your team and your business with my training programs. Contact me today to learn more about how I can help your team stay ahead of the curve and achieve their full potential.
My training programs are designed to help your team gain a deep understanding of business needs and create innovative solutions.
Training
My training programs are designed to help your team gain a deep understanding of business needs and create innovative solutions that meet both technical and business requirements. With a focus on business awareness, cutting-edge technologies and industry best practices, my training can help your team deliver high-quality, scalable software that drives your business forward.
With my guidance and expertise, your team can become proficient in the latest technologies and best practices, and be better equipped to deliver outstanding results for your clients.
Invest in the future of your team and your business with my training programs. Contact me today to learn more about how I can help your team stay ahead of the curve and achieve their full potential.
Learn new skills
Check out my online courses
Testimonials
Participants' opinion
Training
Domain-driven design
A 3-day workshop-based introduction to Domain-driven design. During this workshop attendees learn how to understand real business requirements, discover a domain, design a business model and finally implement a working solution based on an example business domain.
Example project will be implemented in Java and Spring Framework.
Requirements
5+ years of experience in Java development (or other OOP language), good understanding of OOP design
duration
3 days
Target group
CTOs, Architects, Senior software engineers (5+ years), Project managers
FORMAT
Workshop
OUTCOMES
- Strategic DDD
- Tactical modeling
- Knowledge crunching techniques
- Understanding the bigger picture
TRAINING Program
- What is domain
- DDD approach
- When use DDD
- When not use DDD
- Knowledge Crunching
- Event Storming
- Example Mapping
- BDD/TDD in DDD
- Deep Model
- Breakthrough
- Ubiquitous Language as a tool for business and developers
- Modeling session example
- Entities
- Value objects
- Services
- Modules
- Aggregates
- Factory
- Repository
- Types of domain
- Core
- Supporting
- Generic
- Bounded Context
- Bounded Context vs module vs microservice
- Bounded Contexts integration
- Context Map
- Communication between teams working on different bounded contexts
- Wardley mapping
- Core domain charts
- Business model canvas
- Types of domain
Training
Pragmatic TDD
A pragmatic introduction to Test-driven development. During this workshop, we focus solely on the process of designing software guided by tests. We assume participants are already familiar with automated tests and the Java ecosystem. The workshop is dedicated to experienced Java developers, who want to learn how to apply TDD in a practical way to produce possibly the best software.
Requirements
5+ years of experience in Java development (or other OOP language), good understanding of OOP design
duration
2 days
Target group
Software engineers (2+ years)
FORMAT
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
OUTCOMES
- Understanding how to apply TDD to create software in line with business requirements
- Code examples created during the workshop
TRAINING Program
- Three rules of TDD by Uncle Bob
- Unit testing vs automated testing vs TDD – where are the differences?
- When (not) to apply TDD
- A practical introduction to TDD based on popular TDD kata
- Pair programming exercises: the first programmer writes test specification, then the other one writes implementation to pass the specification, then switch the roles
-
- Discuss popular business application to find essential requirements
- Practice implementing core business features following a TDD approach
- Show software design’s impact on its testability
- TDD feedback loop – how to understand true business requirements through specification by example and red-green-refactor lifecycle
1. Limitations of TDD
- Why following TDD for infrastructure code doesn’t work
- Samples of untestable code
- Improving testability through Hexagonal Architecture
- Working with legacy systems
2. Complex exercises
- Learning when to (not) follow TDD in a hard way – based on real-world examples
- Refactoring code to achieve a better testability
- Finding the right compromise between strict TDD and development costs
- Adding new complex business features to the example application from day 1
Training
Software Design Principles & Patterns
A hands-on workshop. During these two days, we are going to build a backend system in Java. We’ll start with the naive approach and will keep applying new design patterns and principles as needed.
Requirements
5+ years in software development
duration
2 days
Target group
mid & senior engineers, architects
FORMAT
Workshop
OUTCOMES
- Strategic DDD
- Tactical modeling
- Knowledge crunching techniques
- Understanding the bigger picture
Agenda
1. We’ll start with an Introduction to the example application. We will start with a simplified version of the Big Picture Event Storming session to uncover the requirements.
2. Next, we will run Example Mapping to work on concrete examples. Then, we are going to translate these examples into tests. We’ll discuss two flavors of TDD: London School and Chicago School.
3. At the same time of writing tests, we’ll be also writing production code. We’ll start the naive way (without using any special design patterns).
4. During the refactor step we will address design issues of the naive implementation. That’s the moment when I’m going to introduce some theory behind design patterns. I’ll also present a selection of the most useful design patterns.
5. Next, I’ll present a detailed overview of best practices regarding using design patterns. I’ll try to give the best answer to the following questions:
- When should we use design patterns?
- How should we use design patterns?
6.Now I’ll show how to identify anti-patterns and isolate them from the rest of the system.
7. We’re going to see how we can use Ports and Adapters (AKA Hexagonal) architecture to build application and infrastructure layers around the core domain.
8. I’ll show some practices of integration testing.
9. After that, we’ll cover the basics of reactive systems. We’ll try to adapt our application to the reactive requirements.
10. We’ll continue with the development of the application.
Training
Domain-driven architecture
duration
to be determined
TARGET GROUP
to te determined
FORMAT
to be determined
OUTCOMES
- TBD
Training
Modeling modern systems in the context of the Spring Framework
Take a step towards becoming a Technical Partner for Business and learn how to use the power of the most popular Java framework in the context of creating applications of the highest quality.
Workshop training during which you and your trainer will build a well-designed application using DDD, TDD and Clean Architecture practices. The heart of the application will be integrated with the Spring Framework only in the necessary places, thus maintaining the purity of the architecture and domain modules.
This training is not intended to cover all Spring Framework mechanisms and modules. Instead, you’ll get hands-on guidance and practice techniques to build top-notch, easy-to-modify apps. Note: Spring will only appear when we deem it necessary.
Requirements
5+ years of experience in Java development (or other OOP language), good understanding of OOP design
duration
3 days
Target group
Java software engineers
FORMAT
Workshop
OUTCOMES
- In-depth understanding of Spring Framework internals
- Basic modeling skills
- How to isolate infrastructure from domain
TRAINING Program
- Introduction to a sample domain
- Knowledge crunching
- Product vision
- Big Picture
- Discovery of critical processes
- Example mapping
- Domain code modeling using TDD in the mob programming formula – Code Storming
- Architecture selection rules
- An example of using the Ports & Adapters architecture
- Integration tests
- Preparation of the application as a modular monolith
- Selection of architecture for the module
- Communication patterns between modules
- Introduction to the Spring Framework as an implementation detail of selected modules
- Organization of modules based on the Spring Framework
- Container
- Let’s make your own container (optional)
- Configuration
- Container implementations
- Hierarchy
- Principle of operation – Inversion of Control (in particular Dependency Injection)
- Components
- Declaration – Java config and annotations
- Life cycle
- Dependence
- Component range
- Scoped Proxy traps
- Injecting shorter-lived components into longer-lived ones
- Pitfalls of annotations (e.g. @Transactional)
- Pre/post processors
- AoP
- Spring Data
- JPA
- MongoDb
- JDBC
- Creating a real RESTful API according to the Richardson Maturity Model
- Spring Security
- Support for asynchronous programming
- Support for event-driven programming
- Spring Boot
- Introduction to Spring Cloud
Training
DDD for business
Maximizing the potential of your IT department and minimizing the gap between engineers and business can give you the critical edge over your competition. Thanks to the honed analytical skills and logical thinking, the IT people can help you not only to produce great code, but also to solve real business problems. As you will find out after this training, a software project consists of thousands of tiny puzzle pieces. A single, seemingly unimportant misunderstanding might have disastrous consequences. Let us show you how to see the bigger picture, make your engineers business partners who speak the same language as you and set up the right course to your success.
We offer you a three-day business-oriented workshop during which you will understand the strategic aspect of famous Domain-driven design. No coding involved, no modeling. Instead, we’ll equip you with the tools to distill the essence of your business. The training is divided into three sections:
- Minimizing the language gap by building and grooming the shared business language (aka Ubiquitous Language)
- How to distill the essence of your business and set up priorities
- Making it work: how to change the way we produce software
Requirements
None
duration
3 days
Target group
Business owners
FORMAT
Business-oriented workshop
OUTCOMES
- Minimizing the language gap by building and grooming the shared business language (aka Ubiquitous Language)
- How to distill the essence of your business and set up priorities
- Making it work: how to change the way we produce software
TRAINING Program
- How to talk about software
- Engineers as Technical Business Partners
- Ubiquitous Language
- Maintaining healthy feedback loops
- Meeting management techniques
- Adopting the remote-first culture (optional)
- Understanding the context of critical business decisions:
- Understanding context of the decision by adopting Architecture Decision Records
- Using metaphors to drive the development and share the same vision with engineers and business
- Sharing workshop artifacts
- Why projects are not delivered on time and not meeting the true customers’ needs
- Extracting the essence of your business
- Product vision board
- Cost effective verification of hypotheses, assumptions and theories
- Adopting the experimental mindset
- The elephant in the room – identifying critical, but often ignored problems
- Finding autonomous business Domains: applying divide and conquer strategy to define and understand business complexity
- Core domains – focusing on the competitive advantage
- Supporting domains – finding non critical business areas
- Generic domains – finding reusable, out of the box business areas
- Emerging domains – being sensitive for innovation
- Understanding priorities
- Wardley Mapping
- Core Domain charts
- Understanding the bigger picture – introducing blazingly fast and effective workshop techniques
- Event Storming big picture
- Finding key processes
- User story mapping
- Finding contextual boundaries to build precise language and effectively manage growing dependencies between teams
- Bounded Context heuristics
- Context Maps
- Bounded Context canvas
- Improving the flow of domain knowledge
- Example mapping as a way to clarify the requirements
- Prototypes vs Domain Experiments
- Techniques to improve users feedback loop