Understand before you touch itI read and trace the existing behavior before changing anything — a fix that ignores why the code is the way it is tends to create a second problem while solving the first.
Prefer simple, maintainable solutionsThe best solution is usually the one the next person (often me, six months later) can understand without a walkthrough. Cleverness is a cost, not a feature.
Design around business constraints, not around themRegulatory requirements, release schedules, and legacy behavior aren't obstacles to route around — they're part of the actual problem to solve.
Balance technical quality with pragmatismNot every line of code deserves the same rigor. I invest in tests, architecture, and refactoring where it will actually be paid back — not everywhere, by default.