NICOLÁS BOTTARINI

Courses

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

Introduction to TDD

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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