Goals assume perfect clarity and a static world, which rarely happens. Focus on behavior instead - you can't control outcomes like promotions, but you can control actions like code quality and communication.
Goals have a fundamental flaw: they assume you know exactly where you're headed and that the world will stay put while you execute. That's rarely how reality works. When you set a rigid goal without clarity on the destination, you're just guessing - engaging in what the author calls "hope-based" planning. The world shifts, priorities change, and suddenly your January goal looks naive by March.
The alternative is focusing on behavior rather than outputs. You can't directly control whether you get promoted, but you can control the code you ship, how you communicate, and the extra effort you put in. You can't force a job offer, but you can control how many applications you send and how actively you work your network. This shift matters because behaviors are within your direct control, while outcomes depend on factors outside your influence.
When you fix the behaviors, the goals tend to solve themselves. This isn't about abandoning ambition - it's about recognizing that the future is murky and noisy. Instead of trying to anticipate the unanticipatable with rigid targets, you build systems of action that compound over time. The right behaviors create opportunities you couldn't have planned for, while rigid goals can blind you to better paths that emerge along the way.
Check out the full stdlib collection for more frameworks, templates, and guides to accelerate your technical leadership journey.