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

Very good, thanks to adjusting the difficulty level to the group, but at least a basic knowledge of Spring (or just Java) is rather necessary. Working with the repository is very helpful, as you can refer back to it after the training.
In the course, the biggest advantage for me was the openness to the needs and questions of the participants, and the smooth change in the way the training was conducted depending on what the participants wanted.
The greatest advantage of the course was the openness to the needs and questions of the participants, and the smooth adaptation of the training approach based on what the participants wanted.
A big advantage was the User-Centric Approach. Sometimes, when we were hesitant to admit that we didn't know something, the instructor could sense it.
The trainer was open to questions, had a very broad knowledge, and adjusted the content to the needs of the participants.
Very extensive knowledge in the training topic, but also in Java and software development in general. It is evident that they have a lot of experience in teaching others, as they anticipate uncertainties and provide plenty of examples to work on independently.
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

TRAINING Program

  1. What is domain
  2. DDD approach
  3. When use DDD
  4. When not use DDD
  1. Knowledge Crunching
  2. Event Storming
  3. Example Mapping
  4. BDD/TDD in DDD
  5. Deep Model
  6. Breakthrough
  1. Ubiquitous Language as a tool for business and developers
  2. Modeling session example
  1. Entities
  2. Value objects
  3. Services
  4. Modules
  5. Aggregates
  6. Factory
  7. Repository
    1. Types of domain
      • Core
      • Supporting
      • Generic
    2. Bounded Context
    3. Bounded Context vs module vs microservice
    4. Bounded Contexts integration
    5. Context Map
    6. Communication between teams working on different bounded contexts
    7. Wardley mapping
    8. Core domain charts
    9. Business model canvas
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

TRAINING Program

1. Theoretical introduction to TDD
  • Three rules of TDD by Uncle Bob
  • Unit testing vs automated testing vs TDD – where are the differences?
  • When (not) to apply TDD
2. TDD katas
  • 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
3. Business case – a real-world application
    • 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

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

TRAINING Program

to be determined

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

TRAINING Program

  1. Introduction to a sample domain
  2. Knowledge crunching
    • Product vision
    • Big Picture
    • Discovery of critical processes
    • Example mapping
  3. Domain code modeling using TDD in the mob programming formula – Code Storming
  4. Architecture selection rules
  5. An example of using the Ports & Adapters architecture
  6. Integration tests
  7. Preparation of the application as a modular monolith
    • Selection of architecture for the module
    • Communication patterns between modules
  8. Introduction to the Spring Framework as an implementation detail of selected modules
  9. Organization of modules based on the Spring Framework
  1. Container
    • Let’s make your own container (optional)
    • Configuration
    • Container implementations
    • Hierarchy
    • Principle of operation – Inversion of Control (in particular Dependency Injection)
  2. 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
  3. AoP
  4. Spring Data
    • JPA
    • MongoDb
    • JDBC
  5. Creating a real RESTful API according to the Richardson Maturity Model
  6. Spring Security
  7. Support for asynchronous programming
  8. Support for event-driven programming
  9. Spring Boot
  10. 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:

  1. Minimizing the language gap by building and grooming the shared business language (aka Ubiquitous Language)
  2. How to distill the essence of your business and set up priorities
  3. 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

TRAINING Program

  1. How to talk about software
  2. Engineers as Technical Business Partners
  3. Ubiquitous Language
  4. Maintaining healthy feedback loops
  5. Meeting management techniques
  6. Adopting the remote-first culture (optional)
  7. 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
  1. Why projects are not delivered on time and not meeting the true customers’ needs
  2. 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
  3. 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
  4. Understanding priorities
    • Wardley Mapping
    • Core Domain charts
  5. Understanding the bigger picture – introducing blazingly fast and effective workshop techniques
    • Event Storming big picture
    • Finding key processes
    • User story mapping
  6. Finding contextual boundaries to build precise language and effectively manage growing dependencies between teams
    • Bounded Context heuristics
    • Context Maps
    • Bounded Context canvas
  1. Improving the flow of domain knowledge
  2. Example mapping as a way to clarify the requirements
  3. Prototypes vs Domain Experiments
  4. Techniques to improve users feedback loop

Get in Touch

Let’s do something awesome together! I’d be happy to help you. Just drop me a line.


demo-attachment-1663-send

Mail Me :

mike@wojtyna.pl