Course Outline
Bridging Language Proficiency and Solution Design
- Advanced C# features and their impact on design strategy.
- Inferring design intent from existing codebases.
Requirements Analysis and Domain Modelling
- Defining use cases, user stories, and acceptance criteria.
- Constructing domain models and establishing a ubiquitous language.
Core Principles of Software Design
- Applying SOLID principles to .NET solutions.
- Managing coupling, cohesion, and dependency direction.
Design Patterns for .NET Applications
- Selecting appropriate creational, structural, and behavioral patterns.
- Identifying patterns and anti-patterns within existing code.
Architectural Styles and Strategic Decision-Making
- Comparing layered, hexagonal, and clean architecture approaches.
- Documenting architecture decision records and conducting trade-off analyses.
Planning the Solution Structure
- Organizing solutions and projects for large-scale codebases.
- Evaluating modular monoliths versus service-oriented boundaries.
Modern C# for Sustainable Code
- Utilizing pattern matching, records, and nullable reference types.
- Leveraging generics, LINQ, and functional composition techniques.
Exception Handling, Logging, and Observability
- Establishing exception strategies and error contracts.
- Implementing structured logging, correlation tracking, and health checks.
Reflection, Attributes, and Metaprogramming
- Designing with attributes and exploring reflection use cases.
- Using source generators and compile-time code generation.
Foundations of ASP.NET Core
- Understanding the hosting model, dependency injection, and configuration.
- Navigating the request pipeline, middleware, and filters.
Designing RESTful APIs
- Modeling resources and applying HTTP semantics.
- Managing versioning, validation, and error responses.
- Defining API contracts using OpenAPI.
Securing .NET Applications
- Implementing authentication and authorization via OpenID Connect.
- Utilizing policy-based authorization and secrets management.
Threat Modelling and Secure Design
- Applying STRIDE modelling and defining trust boundaries.
- Conducting secure design reviews prior to implementation.
Data Access via Entity Framework Core
- Modelling entities and defining relationships.
- Managing DbContext lifecycles and migration strategies.
Query Performance and Data Architecture
- Optimizing loading strategies and avoiding eager loading pitfalls.
- Handling transactions, concurrency tokens, and bypassing EF where necessary.
Concurrency and Asynchronous Programming
- Mastering Tasks, the TPL, and avoiding async/await pitfalls.
- Ensuring synchronization, cancellation, and thread safety.
Performance Optimization
- Profiling and benchmarking using BenchmarkDotNet.
- Managing memory, allocations, and garbage collection.
- Implementing caching strategies and load testing.
Multi-Layer Testing Strategy
- Defining boundaries for unit, integration, and end-to-end testing.
- Designing testable architectures and utilizing test doubles.
Deployment and Operational Readiness
- Managing containers, configuration, and CI/CD pipelines.
- Conducting production diagnostics and ensuring release safety.
Capstone: Design Review and Implementation
- Performing an architecture review of a case study application.
- Implementing and refactoring a specific feature slice.
Requirements
- Proficiency in programming with C#
- A solid working understanding of object-oriented programming
- Fundamental knowledge of SQL and relational database structures
Intended Audience
- .NET Developers
- Software Engineers and Technical Leads
- Developers transitioning into roles focused on application design
Testimonials (4)
It was 1-on-1 so the training was specialized to my specific needs. Shane highlighted elements of WPF/C# that could potentially be beneficial to my development projects.
Warren Nolan - Northrop Grumman
Course - Programming in WPF
Trainer knowledge, involvement, and rapport
Adam Kuklewski - GE Medical Systems Polska
Course - Technical Architecture and Patterns
The explanations and interactivity of the trainer, he really brought the subject well; and even-though I was probably not experienced enough, I did learn a lot from it!
Pieter Bruynseels - Spot Buy Center BV
Course - Design Patterns
Nice and friendly. Very knowledgeable. Would recommend Shane to others.