Training

Software Development means having to understand your domain and how to leverage AI and all the necessary tools, patterns and practices effectively.
Mastering those can take a lot of time and a fair amount of (expensive) trial and error.
This is where I can help you, by providing training courses that will facilitate your understanding of the principles and practices of software architecture and design in a pragmatic way.
Courses
AI Best Practices for Software Engineers
Learn how to effectively integrate AI into your software engineering workflow, from understanding model behaviour to building reliable agentic systems.
- Understanding and Managing Context Window Usage
- From Prompt Engineering to Harness Engineering
- Creating a Pragmatic Agentic Workflow with Human in the Loop
- Multi-model Development
- Reusable Skills, Agents and MCP
Domain-Driven Design
Learn how you can use Domain-Driven Design in a practical way to help you design your software.
- Entities, Value Objects, Aggregates
- Repositories, Factories, Services
- Domain Events
- Bounded Contexts
- Anti-Corruption Layer
- Ubiquitous Language
- Context Mapping
Event Sourcing
Understand the principles of Event Sourcing and how it can be applied to build robust systems.
- Event Store
- Command Query Responsibility Segregation (CQRS)
- Snapshotting
- Event Replay
- Handling Eventual Consistency
DDD, CQRS and Hexagonal Architecture — the Good Parts
Often seen as the holy trinity of modern application development, these three patterns are easy to misapply. This workshop cuts through the complexity and focuses on the parts that deliver the most value, leaving you with a solid and practical foundation.
- DDD
- A view from 10,000 feet
- Unlocking the power of Value Objects
- No more anemic objects by using Entities
- Ubiquitous Language
- CQRS
- Expressing clear intent with Commands and Queries
- One or multiple persistences
- Hexagonal Architecture
- Primary drivers
- Application and inversion of control
- Core domain
- Secondary drivers
All courses are hands-on, mixing the necessary theory with practical situations and exercises aiming to provide you with the best experience possible.
Contact me to know more details and how I can help you to improve your software development skills.