← All posts

The 6 Engineering Principles Every Aspiring EM Must Master

The 6 Engineering Principles Every Aspiring EM Must Master

When transitioning from a developer to an Engineering Manager (EM), your job changes from writing code to building scalable systems and alignment. However, you must never lose your technical grounding.

Here is a breakdown of six core software engineering principles, simplified through real-world analogies, to keep your team's codebase clean and velocity high:

1. SOC (Separation of Concerns)

Every module or class must handle exactly one responsibility. Think of a restaurant: the chef cooks, the waiter serves, and the cashier handles payments. If the chef runs out to handle the cash register, the kitchen falls into chaos.

2. DYC (Document Your Code)

Clean code explains how it works, but documentation and comments explain why it was built that way. Code without a clear README.md or architectural context is technical debt. Write for humans, not just machines.

3. DRY (Don't Repeat Yourself)

Stop copy-pasting code. If you use the same logic twice, abstract it into a reusable function or module. It is like using a baking mold—if you need to change the cake's shape, you update the mold once instead of reshaping ten individual cakes by hand.

4. KISS (Keep It Simple, Stupid)

Avoid over-engineering. Never pull out a chainsaw just to slice butter simply because you know how to operate a chainsaw. Complex setups introduce hidden bugs and make maintenance a nightmare.

5. TDD (Test Driven Development)

Write your test scenarios before writing the production code. It is like drawing a blue print and setting acceptance criteria before pouring the concrete. While strict TDD demands high discipline, ensure your team at least maintains solid unit test coverage.

6. YAGNI (You Ain't Gonna Need It)

Do not build features for hypothetical future scenarios. Packing a heavy winter coat for a two-day summer beach trip "just in case it snows" only bloats your suitcase. If it isn't in the current requirements, do not write the code.