Case File: Smart-Pointer Refactor of a Game-Engine Module
Overview
What this challenge is about.
Case File: Smart-Pointer Refactor of a Game-Engine Module. Intermediate challenge in code. Writing production code that solves real engineering problems, ear...
The Brief
What you'll do, and what you'll demonstrate.
Decide how to convert an 18,000-line C++ entity-component-system module from hand-managed raw pointers to C++17 smart pointers in disciplined phases, without breaking the four shipping games it powers, and prove the memory leaks measurably drop.
This is not a coding exercise. It is the work a software engineer does between a Jira ticket and a merged PR. That distinction matters to every hiring manager who has seen candidates solve LeetCode problems and none who have shipped production code under real constraints.
When you finish, you will have something most graduates do not: a real-world deliverable, verified by Ewance, that you can show to a hiring manager and say "I did this. Here is the proof."
Earning criteria — what you'll demonstrate
- Distinguish ownership intent (sole, shared, borrowed) at concrete pointer sites and map each to the correct C++17 smart-pointer type.
- Sequence a risky refactor into small, independently shippable phases that never break a dependent application binary interface.
- Wire static analysis (clang-tidy, cppcheck) into continuous integration so memory-safety regressions are caught before merge.
- Quantify a refactor's impact by measuring leak count and binary size before and after on an identical workload.
- Justify deliberate exceptions — when a raw, non-owning pointer is the correct and intentional choice.
Program Fit
Where this fits in your program.
Sharpens the same skills your degree expects you to demonstrate.
Aligned coursework coming soon.
Skills
Skills you'll demonstrate.
Each one shows up on your verified credential.
- Cpp Programming
Apply cpp programming to solve real industry problems and demonstrate production-level capability.
- Manual Memory Management
Apply manual memory management to solve real industry problems and demonstrate production-level capability.
- Pointers
Apply pointers to solve real industry problems and demonstrate production-level capability.
- Refactoring
Apply refactoring to solve real industry problems and demonstrate production-level capability.
- Static Analysis
Apply static analysis to solve real industry problems and demonstrate production-level capability.
- Performance Benchmarking
Apply performance benchmarking to solve real industry problems and demonstrate production-level capability.
Careers
Career paths this challenge builds toward
Completing this challenge demonstrates skills that transfer directly to these roles:
C++ Game Engine Engineer
Engine teams live in shared, performance-critical modules where memory ownership decides stability. This challenge rehearses exactly that: refactoring hand-managed memory to modern smart pointers without breaking dependent games, the daily work of an engine engineer.
This challenge sharpens
- cpp-programming
- manual-memory-management
- pointers
Systems Software Engineer
Systems roles demand safe, measured changes to low-level code under hard compatibility constraints. Sequencing a phased refactor and proving the memory improvement with tooling mirrors how systems engineers ship reliability work in production.
This challenge sharpens
- refactoring
- manual-memory-management
- performance-benchmarking
Build & Static-Analysis Engineer
Engineers who own code quality wire linters and analyzers into CI so regressions never merge. Adding clang-tidy and cppcheck gates to a real build, then keeping it green, is the core of that role.
This challenge sharpens
- static-analysis
- refactoring
- cpp-programming