Course Outline
Bridging Language Proficiency with Solution Design
- Exploring advanced C# capabilities and their impact on design choices.
- Reverse-engineering design intent from legacy or existing codebases.
Analyzing Requirements and Modeling Domains
- Defining use cases, user stories, and acceptance criteria.
- Establishing domain models and a shared ubiquitous language.
Core Software Design Principles
- Applying SOLID principles to .NET-based solutions.
- Managing coupling, cohesion, and dependency flow.
Applying Design Patterns in .NET
- Selecting appropriate creational, structural, and behavioral patterns.
- Identifying common patterns and anti-patterns in existing code.
Architectural Styles and Strategic Decision-Making
- Comparing layered, hexagonal, and clean architecture approaches.
- Utilizing Architecture Decision Records (ADRs) and trade-off analysis.
Structuring Large-Scale Solutions
- Organizing solutions and projects for complex codebases.
- Evaluating modular monoliths versus service-oriented boundaries.
Modern C# for Long-Term Maintainability
- Leveraging pattern matching, records, and nullable reference types.
- Utilizing generics, LINQ, and functional composition techniques.
Robust Exception Handling, 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 utilizing reflection effectively.
- Employing source generators and compile-time code generation.
Core ASP.NET Core Concepts
- Understanding the hosting model, dependency injection, and configuration.
- Navigating the request pipeline, middleware, and filters.
Crafting RESTful APIs
- Modeling resources and adhering to HTTP semantics.
- Implementing versioning, validation, and standardized error responses.
- Defining API contracts using OpenAPI specifications.
Enhancing .NET Application Security
- Implementing authentication and authorization via OpenID Connect.
- Managing policy-based access controls and secret management.
Threat Modeling and Secure Architecture
- Applying STRIDE modeling and defining trust boundaries.
- Conducting secure design reviews prior to coding.
Mastering Data Access with Entity Framework Core
- Modeling entities and their relationships.
- Managing DbContext lifecycles and migration strategies.
Optimizing Query Performance and Data Architecture
- Selecting loading strategies and avoiding eager loading issues.
- Handling transactions, concurrency tokens, and raw SQL integration.
Concurrency and Asynchronous Patterns
- Mastering Tasks, the TPL, and avoiding async/await pitfalls.
- Managing synchronization, cancellation, and thread safety.
Advanced Performance Tuning
- Conducting profiling and benchmarking using BenchmarkDotNet.
- Optimizing memory usage, allocations, and garbage collection.
- 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 Excellence
- Managing containers, configuration, and CI/CD pipelines.
- Performing production diagnostics and ensuring release safety.
Capstone Project: Design Review and Execution
- Conducting an architectural review of a representative case study.
- Implementing and refactoring a specific feature set.
Requirements
- Prior experience with C# development
- Proficient understanding of object-oriented programming concepts
- Foundational knowledge of SQL and relational database systems
Target Audience
- .NET Developers
- Software Engineers and Technical Leaders
- 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.