This is the issue that I sent on May 13th, 2021.
Hello friend! I hope that you are having a great week.
When you, a software engineer, become seasoned (senior and staff engineers) at work, your tasks evolve and change. Multiple projects and initiatives run in parallel, and you start leading one or more of them. The calendar overflows with events, and finding the time to do the hands-on work becomes difficult.
🙌 On the positive side, when you grow, your impact on the company increases. This impact comes from larger projects and initiatives that you work on or lead. Instead of working on one project or service, you start juggling between multiple services. In smaller scoped projects, you sacrifice knowing every single line of code by heart. But in return, you gain a broader understanding of various systems. You often still actively code in some services, but your primary focus shifts to working with systems and constantly switching your focal point from one service to another. This frequent transition provokes other issues such as low motivation, Zoom fatigue, tiredness from the hyperactive hive mind, and lack of deep work-that I talked about in the previous Mektup.
☝️ The major problem is that when many projects run in parallel, they all tend to go slower; you cannot focus on them simultaneously, and neglecting to set aside time to prioritize them causes stress and burnout. Although your freedom and impact on the company increase immensely, the absence of small rewards leads to dissatisfaction.
👀 Taking a closer look at the problem reveals the lack of prioritization. When we talked about prioritization for senior and staff software engineers in the Software World podcast, one thing became crystal clear: engineers often forget to sit down and prioritize their work. The engineering mind is so much tangled with details: we prioritize every single task in one project over and over again. But think about it: when was the last time did you go over all your work and choose which project is more vital for you and the company than the other? Omitting to have a prioritization session is one of the mistakes that seasoned engineers often make.
How to find out what is more critical than the other?
⏸ If you are stuck in meetings and multiple projects simultaneously, pause now and take a moment.
🗓 Block a minimum of one hour -preferably two hours- in your calendar.
📝 Write down all your projects, tasks, and other work in separate post-its (you can use digital tools like Miro or Mural).
🗂 Use Moscow analysis to prioritize them. MoSCoW is an acronym: Must, Should, Could, Won't.
- Must have/do: Critical tasks, projects you have to complete or work on.
- Should have/do: Important tasks, projects that should be done if possible but not mandatory for the time being, or postponing doesn't cause many problems.
- Could have/do: Tasks that are desirable but not necessary. Tasks that you wish to do but not entirely required.
- Won't have/do (this time): Tasks are neither essential nor appropriate for the time being. Tasks that you will not do at all.
Create sections for each category. Place your post-its in these categories.
✨ After that, apply the dependency and ambiguity scale. Ask yourself: are the tasks ambiguous, or do they heavily depend on others, and you need to convince people? Is there any task that you can complete relatively quickly? Reorganize your notes in each section (you can leave out the Won't section) according to how easy it's to implement and finish. Your answers won't be binary; that's why it's a scale. It will help you think of the projects and compare how one is easier or more complicated than the other.
✌️ Now, you have a visual overview. Choose the easiest one to implement (the right-most) from the Must section. Go one-by-one to the left in the must section and work on them in order. Meanwhile, it's okay if you take tasks from should or could sections or change the order. But always keep the priority in mind. Maintain your focus and identify distractions. Don't allow minor diversions. Try to say "No" to the work that cannot lend to this priority schema. Whenever a new task comes, clarify the job, requirements, and expectations and put them into the schema accordingly.
🔃 Use this visual overview once in a while. The frequency can be biweekly or once a month; it's up to you. The important thing is that you set some time aside and prioritize your work. I recommend setting a recurring time-blocker event in your calendar so that you don't forget and no one will be able to take your time during this event.
🎯 Overall, your goal with this approach is saying "No" to good things to be able to say "YES" to great things!
💁 If you want to learn more about prioritization for senior and staff software engineers, listen to the 15th episode of Software World Podcast and read my blog post to learn more in-depth and visual approach.
If you want to jump into the decision step, read my blog post about deciding what you should focus on next.
✍️ One last small tip. I love thinking through writing. You can analyze your priorities by writing how you think and feel about them as well. It works for me! Find what works for you.
As always, if you are enjoying Mektup, I would love it if you shared it with one or two of your friends. You can send them directly here to sign up. I try to make Mektup one of the best and actionable emails that you get to grow your software engineering and leadership career.