Learn by breaking

27 concepts you can walk into, take apart and put back together. Built for students heading into interviews.

Start exploring Dependency Injection
Pattern Parkdesign patterns5Dependency Injection · weld an engine in, then cut a socketDIFactory Method · grow a switch until it breaks, then cut a holeFactoryStrategy · drown a method in flags, then hand the algorithm inStrategyObserver · wire every listener by name, then let them subscribeObserverSingleton · one instance, a thread race, and poisoned testsSingleton Memory Harbourwhere objects live5Stack and Heap · two names, one object, and what the collector takesStackGarbage Collection · drop a reference, then find out nothing was freedGCBoxing · a number becomes an object, a million timesBoxingPointers and Null · point at nothing, crash, then fix it in the typeNullCaching · fast answers, stale answers, and the stampedeCache SOLID Quarterthe five principles5Single Responsibility · four departments, one file, and the crack down the middleSRPOpen/Closed · stop editing the engine to add a promotionOCPLiskov Substitution · a square that makes a correct test failLSPInterface Segregation · a printer forced to promise it can faxISPDependency Inversion · flip the arrow between your rules and your databaseDIP Network Highwaygetting there4DNS · a name becomes an address, and a TTL decides your outageDNSTCP · pay for a handshake, then lose one packetTCPHTTP · verbs that promise things and codes that mean thingsHTTPTLS · your password on the wire, then the padlockTLS Database Vaultstoring it safely4Indexes · read a million rows, then read fourIndexesJoins · which rows survive, and the accidental 101 queriesJoinsTransactions · crash halfway and lose £100, then do notTxIsolation Levels · two sessions, four anomalies, one lost saleIsolation Concurrency Crossingtwo things at once4Threads · two threads, one counter, a different answer every runThreadsLocks · correctness, bought with a queueLocksDeadlocks · both waiting, both polite, foreverDeadlockAsync / Await · waiting without holding a thread hostageAsync
finished in progress not started select any marker to open it 0 of 27 explored
Browse every playroom as a list

Pattern Park 5 playrooms

Memory Harbour 5 playrooms

SOLID Quarter 5 playrooms

Network Highway 4 playrooms

Database Vault 4 playrooms

Concurrency Crossing 4 playrooms

Every playroom runs the same loop: see it working, break it yourself, fix it, read the same code in C#, Java or TypeScript, then take the interview check.