How Software Gets Built: Methodologies, Version Control, and CI/CD
The previous course made your code correct. This course is about making the process that produces the code an engineering discipline — because at any real scale, the biggest deter…
Software Engineering Practices covers: How Software Gets Built, The Testing Pyramid, TDD, and BDD, Design Patterns, SOLID and Clean Architecture, Domain-Driven Design, Technical Debt, and Documentation. Year 3, Quarter 11. Includes 13 exercises and 1 projects.
This course unlocks once you've finished its prerequisite. Open prerequisite →
The previous course made your code correct. This course is about making the process that produces the code an engineering discipline — because at any real scale, the biggest deter…
Course 11.1 taught you how to test well — partition the input space, hit the boundaries, choose the right doubles. This lesson is about the strategy and workflow around testing: h…
Design patterns get taught as a catalog to memorize — twenty-three named recipes with UML diagrams — and taught that way, they're both boring and misleading. The truth is more use…
SOLID is the most-cited and most-misunderstood acronym in software design. Everyone can name the five principles; almost no one states them correctly (the Single Responsibility Pr…
This lesson closes Software Engineering Practices with the three things that determine whether a codebase stays comprehensible as it grows: how you model the business (Domain-Driv…
- [ ] Implement Strategy pattern in Ruby — Payment processing with different strategies (credit card, PayPal, crypto) - [ ] Implement Observer pattern in Ruby — Use ActiveSupport:…
- [ ] Implement Factory pattern in Ruby — Abstract factory for creating database adapters (Postgres, MySQL, SQLite) - [ ] Implement Builder pattern in Ruby — Fluent interface for …
- [ ] Implement Clean Architecture in Ruby — Entities, Use Cases, Interface Adapters, Frameworks; dependency rule enforced - [ ] DDD exercise — Model an e-commerce domain: define …
- [ ] Build a plugin system in Ruby — Core app with plugin interface, plugins loaded dynamically from gems, hooks for before/after processing, configuration DSL; demonstrate with …
Implement 8 design patterns (Strategy, Observer, Decorator, Factory, Builder, Command, State, Template Method) as working Ruby examples. Each pattern gets: a 50-line implementatio…
- [ ] Explain the SOLID principles. Give a Ruby example for each. - [ ] What is the Strategy pattern? How do Ruby blocks/procs implement it naturally? - [ ] What is the Observer p…
11 lessons. Read in order; spiral back when you need to. By the end you'll have used the core ideas twice — once on the abstract, once on something you'll meet at work next week.