Escape the first-role trap
Most three-year resumes read like a list of tickets closed inside someone else's design. Pick two or three pieces of work where you actually made a decision โ a schema, a retry policy, a migration, a production debugging call โ and rebuild the resume around those. Depth on three items beats a shallow list of twelve technologies.
Know what the mid-level bar tests
At three years the loop still weighs fundamentals heavily: data structures, language internals, debugging and the clean design of a single service. Full distributed system design rarely decides the outcome yet. Preparation time is better spent making coding rounds reliable than memorising architecture vocabulary you cannot defend under questioning.
Cost the internal move honestly
A transfer to a harder team inside your current company can be worth more than an external switch that repeats your current work at a higher salary. Compare them on what you will own, who will review your code and what you can claim two years later. Switch when the outside option is genuinely deeper.