Course Outline
Bridging Language Proficiency with Solution Design
- Advanced C# features and their impact on software design.
- Inferring design intent from legacy or existing 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 Applications
- Selecting appropriate creational, structural and behavioral patterns.
- Identifying patterns and anti-patterns within existing code.
Architectural Styles and Technical Decision-Making
- Comparing layered, hexagonal and clean architecture approaches.
- Maintaining architecture decision records and analyzing trade-offs.
Planning the Solution Structure
- Organizing solutions and projects for large-scale codebases.
- Evaluating modular monoliths versus service-oriented boundaries.
Modern C# for Sustainable Codebases
- Utilizing pattern matching, records and nullable reference types.
- Leveraging generics, LINQ and functional composition.
Exception Handling, Logging and Observability
- Establishing exception strategies and error contracts.
- Implementing structured logging, correlation tracking and health checks.
Reflection, Attributes and Metaprogramming
- Attribute-driven design and practical reflection use cases.
- Source generators and compile-time code generation techniques.
ASP.NET Core Essentials
- Understanding the hosting model, dependency injection and configuration management.
- Navigating the request pipeline, middleware and filters.
Designing RESTful APIs
- Modeling resources and adhering to HTTP semantics.
- Handling versioning, validation and standardized error responses.
- Defining API contracts using OpenAPI.
Securing .NET Applications
- Implementing authentication and authorization via OpenID Connect.
- Applying policy-based authorization and managing secrets.
Threat Modeling and Secure Design Practices
- Conducting STRIDE modeling and defining trust boundaries.
- Performing secure design reviews prior to implementation.
Data Access via Entity Framework Core
- Modeling entities and their relationships.
- Managing DbContext lifetimes and migration strategies.
Query Performance and Data Architecture
- Optimizing loading strategies and avoiding eager loading pitfalls.
- Handling transactions, concurrency tokens and bypassing EF when necessary.
Concurrency and Asynchronous Programming
- Working with Tasks, the TPL and addressing async/await complexities.
- Managing synchronization, cancellation and thread safety.
Performance Optimization Strategies
- Profiling and benchmarking using BenchmarkDotNet.
- Analyzing memory usage, allocations and garbage collection impact.
- Implementing caching strategies and conducting load tests.
Cross-Layer Testing Strategy
- Defining boundaries for unit, integration and end-to-end testing.
- Architecting for testability and utilizing test doubles.
Deployment and Operational Readiness
- Configuring containers, settings and CI/CD pipelines.
- Ensuring production diagnostics and release safety.
Capstone Project: Design Review and Implementation
- Conducting an architecture review of a case study application.
- Implementing and refactoring a specific feature slice.
Requirements
- Proficient programming experience in C#
- Practical understanding of object-oriented programming concepts
- Fundamental knowledge of SQL and relational database systems
Intended Audience
- .NET developers
- Software engineers and technical leads
- Developers transitioning into application architecture or 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.