Course Outline
Transitioning from Language Proficiency to Solution Design
- Exploring advanced C# features and their impact on design.
- Interpreting design intent from legacy codebases.
Requirements Analysis and Domain Modeling
- Defining use cases, user stories, and acceptance criteria.
- Constructing domain models and establishing a ubiquitous language.
Core Software Design Principles
- Applying SOLID principles within .NET solutions.
- Managing coupling, cohesion, and dependency direction.
Design Patterns for .NET Ecosystems
- Selecting appropriate creational, structural, and behavioral patterns.
- Identifying patterns and anti-patterns in existing code.
Architectural Styles and Decision-Making
- Comparing layered, hexagonal, and clean architecture approaches.
- Maintaining architecture decision records and analyzing trade-offs.
Structuring the Solution
- Organizing solutions and projects for large-scale codebases.
- Evaluating modular monoliths versus service-oriented boundaries.
Modern C# for Sustainable Code
- Leveraging pattern matching, records, and nullable reference types.
- Utilizing generics, LINQ, and functional composition techniques.
Exception Management, Logging, and Observability
- Defining exception strategies and error contracts.
- Implementing structured logging, correlation tracking, and health checks.
Reflection, Attributes, and Metaprogramming
- Designing with attributes and applying reflection techniques.
- Using source generators for compile-time code creation.
ASP.NET Core Essentials
- Understanding the hosting model, dependency injection, and configuration.
- Working with the request pipeline, middleware, and filters.
Architecting REST APIs
- Modeling resources and applying HTTP semantics.
- Implementing versioning, validation, and standardized error responses.
- Defining API contracts using OpenAPI.
Security in .NET Applications
- Configuring authentication and authorization via OpenID Connect.
- Applying policy-based authorization and managing secrets securely.
Threat Modeling and Secure Architecture
- Conducting STRIDE modeling and defining trust boundaries.
- Performing secure design reviews prior to coding.
Data Access via Entity Framework Core
- Mapping entities and relationships effectively.
- Managing DbContext lifecycle and migration strategies.
Query Efficiency and Data Structure
- Optimizing loading strategies and avoiding eager loading issues.
- Handling transactions, concurrency tokens, and raw database bypasses.
Concurrency and Asynchronous Development
- Navigating Tasks, TPL, and common async/await challenges.
- Implementing synchronization, cancellation, and thread safety measures.
Performance Tuning
- Using BenchmarkDotNet for profiling and benchmarking.
- Analyzing memory usage, allocations, and garbage collection impacts.
- Implementing caching strategies and conducting load tests.
Comprehensive Testing Strategy
- Defining boundaries for unit, integration, and end-to-end tests.
- Designing testable architectures and utilizing test doubles.
Deployment and Operational Preparedness
- Managing containers, configuration, and CI/CD workflows.
- Ensuring production diagnostics and release stability.
Capstone: Design Assessment and Execution
- Reviewing the architecture of a sample application.
- Building and refactoring a specific feature set.
Requirements
- Proficiency in C# programming
- Practical understanding of object-oriented principles
- Fundamental knowledge of SQL and relational databases
Target Audience
- .NET Developers
- Software Engineers and Technical Leads
- Developers transitioning into application design roles
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.