Skip to content

AHGesports/training

Repository files navigation

Software Design Training Lab

C# TypeScript Testing Focus

A public learning portfolio for practicing senior-level software engineering fundamentals in C# and TypeScript: testability, SOLID, refactoring, design patterns, architecture trade-offs, reliability, and technical communication.

This repository is intentionally not a single polished product. It is a structured engineering lab that shows how I practice diagnosing code smells, improving design under constraints, and documenting trade-offs.

What This Demonstrates

Area Evidence in this repo
Testable design Injected dependencies, test doubles, characterization tests, and focused unit tests
SOLID and OOP DIP, SRP, encapsulation, interfaces, polymorphism, and composition exercises
Refactoring discipline Small behavior-preserving changes using established refactoring katas
Architecture thinking API boundaries, DDD basics, reliability topics, and ADR-style decision notes
Technical communication Roadmap, checklist, coverage matrix, and session notes that explain decisions

Highlights

  • Refactored Tire Pressure Monitoring examples in C# and TypeScript to depend on abstractions instead of concrete sensors.
  • Practiced constructor injection, test doubles, and behavior-focused tests.
  • Refactored HTML text conversion code toward clearer responsibility boundaries.
  • Built a 4-week roadmap that maps 119 engineering concepts to hands-on practice, mini-labs, clinics, and real-system review prompts.
  • Vendored well-known kata repositories so the training material is reproducible from this repo.

Repository Map

Path Purpose
roadmap.md 4-week curriculum, session prompts, progress tracker, and coverage matrix
checklist.md 119-concept self-assessment checklist
coverage.md One-to-one mapping from concepts to exercises
Training.Exercises/ Small C# exercises and original practice code
phases/02-solid/ SOLID and OOP refactoring katas
phases/03-refactoring-katas/ Legacy refactoring katas including Gilded Rose and Theatrical Players
phases/notes/ Learning notes and standalone TypeScript exercises

Current Progress

Session Status Evidence
W1.S1 Testing Baseline And Test Doubles Partial TirePressure C# and TypeScript work completed
W1.S2 Encapsulation, Invariants, And Fail Fast Partial WeatherApp value-object exercise completed
W1.S3 Responsibilities And Boundaries Partial HtmlTextConverter responsibility split practiced
W1.S4 Abstractions And Dependency Wiring Partial DIP, interfaces, constructor injection, and structural typing practiced
W1.S5 Data Structures And Complexity Not Started Next untouched Week 1 topic

Skills Practiced So Far

Skill Evidence
Dependency Inversion ISensor, injected dependencies, Weather API abstractions
Test doubles Stubbed sensors and behavior-focused unit tests
Encapsulation Value objects with constructor validation
Fail fast validation Guard clauses and invalid-state prevention
SRP / separation of concerns HTML conversion separated from file/text source responsibilities
C# and TypeScript comparison Same design ideas practiced in nominal and structural type systems

Run Locally

Main C# Exercise Project

dotnet build Training.sln
dotnet run --project Training.Exercises

Racing-Car Katas - C#

cd phases/02-solid/Racing-Car-Katas/CSharp
dotnet test TDDMicroExercises.sln --filter "TirePressureMonitoringSystem"

Racing-Car Katas - TypeScript

cd phases/02-solid/Racing-Car-Katas/TypeScript
npm install
npm test

Why This Repo Exists

I use this repository to make engineering growth visible. The goal is not to memorize acronyms, but to practice the judgment behind them:

  • when to introduce an abstraction and when to keep code simple;
  • how to make code easier to test without over-engineering it;
  • how to refactor legacy code safely;
  • how to explain trade-offs clearly enough for a team to act on them.

Attribution

This repo includes public refactoring kata material from well-known open-source training repositories, vendored under phases/ for convenience. Original licenses and README files are preserved inside those kata folders.

About

Self-paced C# and TypeScript training for software design principles, refactoring, testing, architecture, and reliability.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors