Course Outline
Transitioning from Language Proficiency to Solution Architecture
- Exploring advanced C# features and their impact on design decisions.
- Inferring design intent from legacy or existing codebases.
Requirements Analysis and Domain Modeling
- Defining use cases, user stories, and acceptance criteria.
- Establishing domain models and a shared ubiquitous language.
Core Software Design Principles
- Applying SOLID principles within .NET solution contexts.
- Managing coupling, cohesion, and the direction of dependencies.
Design Patterns Tailored for .NET
- Selecting appropriate creational, structural, and behavioral patterns.
- Identifying patterns and anti-patterns in current code structures.
Architecture Styles and Strategic Decision-Making
- Comparing layered, hexagonal, and clean architecture approaches.
- Drafting architecture decision records and conducting trade-off analyses.
Structuring the Solution Blueprint
- Organizing solutions and projects for scalable codebases.
- Evaluating modular monoliths against service-oriented boundaries.
Leveraging Modern C# for Maintainability
- Utilizing pattern matching, records, and nullable reference types.
- Incorporating generics, LINQ, and functional composition techniques.
Exception Handling, Logging, and Observability
- Formulating exception strategies and defining error contracts.
- Implementing structured logging, correlation tracking, and health checks.
Reflection, Attributes, and Metaprogramming
- Exploring attribute-driven designs and practical reflection scenarios.
- Using source generators and compile-time code generation methods.
ASP.NET Core Core Competencies
- Understanding the hosting model, dependency injection, and configuration.
- Navigating the request pipeline, middleware, and filters.
Architecting REST APIs
- Modeling resources and adhering to HTTP semantics.
- Managing versioning, input validation, and error responses.
- Defining API contracts using OpenAPI.
Hardening .NET Applications
- Implementing authentication and authorization via OpenID Connect.
- Configuring policy-based access control and secrets management.
Threat Modeling and Secure Design Practices
- Applying STRIDE modeling and identifying trust boundaries.
- Conducting secure design reviews prior to development.
Data Access via Entity Framework Core
- Modeling entity relationships and structures.
- Managing DbContext lifecycles and migration strategies.
Query Optimization and Data Architecture
- Selecting loading strategies and avoiding eager loading pitfalls.
- Handling transactions, concurrency tokens, and direct database access when necessary.
Concurrency and Asynchronous Programming
- Mastering Tasks, the TPL, and common async/await challenges.
- Ensuring synchronization, cancellation handling, and thread safety.
Performance Tuning
- Profiling and benchmarking using BenchmarkDotNet.
- Analyzing memory usage, allocations, and garbage collection.
- Implementing caching strategies and conducting load tests.
Multi-Layer Testing Strategies
- Defining boundaries for unit, integration, and end-to-end testing.
- Designing testable architectures and utilizing test doubles.
Deployment and Operational Preparedness
- Managing containers, configuration, and CI/CD pipelines.
- Ensuring production diagnostics and release safety protocols.
Capstone: Design Review and Practical Implementation
- Reviewing the architecture of a comprehensive case study application.
- Implementing and refactoring a specific feature slice.
Requirements
- Practical experience with C# programming
- Proficient understanding of object-oriented programming concepts
- Fundamental knowledge of SQL and relational database systems
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.