
Courses
Courses and workshops on agile development, software design, and quality practices.

Introduction to TDD
Learn the fundamentals of Test-Driven Development (TDD) and how to apply it to write better software, with short feedback loops and evolutionary design practices

Introduction to OOP
Explore the fundamentals of Object-Oriented Programming (OOP), its history, philosophy, and how to apply its principles to design more flexible and sustainable software

Introduction to technical excellence practices
Technical excellence practices help build better software, reduce risks, improve quality, and increase teams' ability to adapt

Fundamental principles of software design
A practical journey through the essential principles that support clear, maintainable, and robust software design. We cover concepts like Clean Code, SOLID, YAGNI, DRY, coupling, cohesion, and techniques to build simpler, more understandable, and sustainable systems.

Introduction to Agile
A practical introduction to agile principles, values, and practices. Learn how to build more adaptable teams, foster collaboration, improve value delivery, and create a culture of learning and continuous improvement

Agile economics
How Agile principles impact costs, risks, and business value. Understand the real cost of delay, the impact of inventory in software, and how to manage risks and maximize value through smarter technical and strategic decisions

Lean Software Development
Applying Lean principles to software development to maximize value, minimize waste, and optimize workflow. Learn how to build quality in, empower teams, manage flow, and make decisions based on continuous learning

Software Craftsmanship
A journey through the values, principles, and practices of Software Craftsmanship. We explore how technical excellence, continuous learning, collaboration, and professionalism build a strong career and a culture of quality in software development

Strategic Domain-Driven Design
Learn to analyze domains, define Bounded Contexts, and design integrations that boost clarity, autonomy, and scalability in complex systems.

Tactical Domain-Driven Design
We explore the tactical patterns of Domain-Driven Design to model business-aligned software. Learn to design entities, value objects, aggregates, domain services, and repositories, applying strategies that enhance consistency, scalability, and maintainability.

Advanced TDD
We explore advanced TDD techniques, test design patterns, types of test doubles, and strategies to build robust, expressive, and sustainable test suites

Clean Architecture
Learn to design applications with the domain and use cases at the center, using Clean Architecture and ports and adapters, so the database, the web and frameworks become replaceable details and the logic can be tested fast, without infrastructure

Modern web programming with React
Solid foundations of modern web programming, covering networks, protocols, and professional development of applications with React, TypeScript, robust testing, and architectural best practices

Game development 101
A practical journey through the fundamentals of game development. We cover game design, architecture, 2D and 3D graphics, physics, animations, data-driven engines, and key techniques for building solid interactive experiences

Introduction to React Native programming
Practical fundamentals of mobile app development with React Native. We explore its architecture, core components, navigation, animations, styling, native integration, Expo, and best practices for cross-platform development

Introduction to native Android programming
Practical fundamentals of native Android programming. We explore architecture, lifecycle, layouts, core components, navigation, persistence, notifications, reactive programming, and modern foundations like Jetpack.

Introduction to native iOS programming
A practical journey through the fundamentals of native iOS programming. We cover system architecture, system layers, layouts, UIKit, SwiftUI, navigation, assets, notifications, App Store distribution, and modern development best practices

Introduction to Docker
Docker fundamentals for application development and deployment. We cover architecture, image creation, container management, storage, networking, Compose, Swarm, and best practices for local and production environments

Introduction to SQL
Fundamentals of SQL and relational databases. Learn about logical and physical models, referential integrity, DDL, DML, DQL, query optimization, views, stored procedures, and best practices for database design and efficient data access

Introduction to Neo4j
Fundamentals of graph databases and Neo4j usage. We cover the graph model, Cypher querying, creating and managing nodes, relationships, indexes, constraints, data import, and practical analysis of real-world graphs

Introduction to ReactiveX
Foundations of reactive programming with ReactiveX. We explore Observables, transformation, combination, and filtering operators, error handling, concurrency control, backpressure, and building robust reactive data streams

Design patterns
We explore classic and modern software design patterns. We cover creational, structural, and behavioral patterns, Martin Fowler's enterprise patterns, and critically assess the use of patterns, their benefits, and risks

Introduction to Kotlin
Fundamentals of programming with Kotlin. We cover basic syntax, control structures, functions, object-oriented programming, collections, null safety, and advanced concepts like lambdas, generics, and operator overloading

Advanced Kotlin
We explore advanced aspects of Kotlin: scope functions, delegates, sealed classes, DSLs, reflection, advanced collections, functional programming, and modern design techniques in Kotlin