Managing time effectively is one of the common traits among senior software engineers, and it’s also one of the hardest skills. As you write more code and build up more domain knowledge, you’ll start to become an integral part of your team. You’ll become the expert on certain features and areas of the codebase, and people will come to you with questions about how something works or if it’s possible to extend something you wrote with new functionality. You’ll spend more time tracking down bugs, planning new projects, building out feature specifications, and possibly even helping to interview candidates to join your team.
Time management gets harder the more senior you get. Your team will become increasingly reliant on you to keep things moving, so it’s important to get things done while not wasting your time.
As a junior engineer, it’s good to be generous with your time, because anything you work on will help you learn. But as you prepare for a senior role, you’ll need to learn to be careful with your time because it’s your most limited resource. Senior engineers know how to work smarter, not harder, because they know that using their time wisely gives them leverage.
They may spend a day or a week planning, without writing a single line of code, because they know that getting the solution right on paper will save them weeks of refactoring later in the project if the design needs to be changed.
They know when to allocate their time to helping others, because sometimes helping unblock a coworker raises the entire team’s throughput.
They know when it’s important to document a critical piece of the system, even if it takes them hours to type it all up, because it’s worth spending the time to share the knowledge.
They know how to find chunks of time in their day for deep focus and writing code, even if that means declining meetings or blocking off time on their calendar.
They timebox their work. They know that it’s better to ask for help or move to a different task than to spend too much time running in circles.
The best programmers understand how important their time is and will optimize their tasks and focus on those that will have the greatest impact based on the time constraints.