Refactoring
Improving code's structure without changing what it does.
Backend Engineer track
Junior
Write correct code, ship small changes safely, ask good questions.
Core: start here
- RefactoringChanging code's structure without changing its behavior.
4 more junior concepts
- Extract FunctionPulling a block of code into a well-named function.
- IDE Refactoring ToolsLetting the IDE perform renames and extractions safely.
- Inline Function / VariableReplacing an unnecessary indirection with its body.
- RenameChanging a name everywhere it's used, safely.
Mid-level
Own a feature end to end without hand-holding.
- Characterization TestA test that captures current behavior before you change legacy code.
- Extract ClassSplitting a class that does too much.
- Introduce Parameter ObjectGrouping parameters that travel together into one object.
- Legacy CodeCode without tests that you're afraid to change.
- Replace Conditional with PolymorphismSwapping a type switch for subclasses or strategies.
Senior
Own a system, its failure modes, and its trade-offs.
- Big Bang RewriteReplacing a whole system at once, and why it usually fails.
- Parallel Change (Expand-Contract)Add the new way, migrate callers, then remove the old way.
- SeamA place where you can change behavior without editing the code there.
- Strangler Fig PatternGradually replacing a legacy system by routing pieces to new code.
Staff
Shape how many teams build, across systems.
Nothing here yet.
Principal
Set technical direction for the organization.
Nothing here yet.
Data Engineer track
Junior
Build and fix pipelines from clear specs; write correct SQL.
Core: start here
- RefactoringChanging code's structure without changing its behavior.
4 more junior concepts
- Extract FunctionPulling a block of code into a well-named function.
- IDE Refactoring ToolsLetting the IDE perform renames and extractions safely.
- Inline Function / VariableReplacing an unnecessary indirection with its body.
- RenameChanging a name everywhere it's used, safely.
Mid-level
Own pipelines and models end to end, including their quality.
- Characterization TestA test that captures current behavior before you change legacy code.
- Extract ClassSplitting a class that does too much.
- Introduce Parameter ObjectGrouping parameters that travel together into one object.
- Legacy CodeCode without tests that you're afraid to change.
- Replace Conditional with PolymorphismSwapping a type switch for subclasses or strategies.
Senior
Design the platform's storage, processing and modeling choices.
- Big Bang RewriteReplacing a whole system at once, and why it usually fails.
- Parallel Change (Expand-Contract)Add the new way, migrate callers, then remove the old way.
- SeamA place where you can change behavior without editing the code there.
- Strangler Fig PatternGradually replacing a legacy system by routing pieces to new code.
Staff
Shape how the whole organization produces and uses data.
Nothing here yet.
Principal
Set data strategy and architecture across the company.
Nothing here yet.
Frontend Engineer track
Junior
Build UI that works, ship small changes safely, ask good questions.
Core: start here
- RefactoringChanging code's structure without changing its behavior.
4 more junior concepts
- Extract FunctionPulling a block of code into a well-named function.
- IDE Refactoring ToolsLetting the IDE perform renames and extractions safely.
- Inline Function / VariableReplacing an unnecessary indirection with its body.
- RenameChanging a name everywhere it's used, safely.
Mid-level
Own a feature end to end without hand-holding.
- Characterization TestA test that captures current behavior before you change legacy code.
- Extract ClassSplitting a class that does too much.
- Introduce Parameter ObjectGrouping parameters that travel together into one object.
- Legacy CodeCode without tests that you're afraid to change.
- Replace Conditional with PolymorphismSwapping a type switch for subclasses or strategies.
Senior
Own an app's architecture, performance, and failure modes.
- Big Bang RewriteReplacing a whole system at once, and why it usually fails.
- Parallel Change (Expand-Contract)Add the new way, migrate callers, then remove the old way.
- SeamA place where you can change behavior without editing the code there.
- Strangler Fig PatternGradually replacing a legacy system by routing pieces to new code.
Staff
Shape how many teams build, across apps.
Nothing here yet.
Principal
Set technical direction for the organization.
Nothing here yet.