Creating a Personal Success Framework
I was an Engineering Manager for almost three years. Along the way I made countless decisions in an effort to ensure our team delivered the thing on time, didn't get burnt out, felt like they were growing, and shipped solid code. But along the way I missed a key opportunity; I was too focused on doing a good job day-to-day and less so on creating a framework that would deliver predictably positive results week over week. In short, I focused more on the "what" rather than the "how". This caused a lot of stress, and ultimately it led to mistakes, missed opportunities, and in some cases missed deadlines.
We've all been there
It's an easy trap to fall into, really. You've got your routine daily tasks, meetings to attend, ad-hoc requests to fulfill, Slack messages to respond to. And that's not even counting your actual job! You still have to code that feature, or mentor that employee, etc. You're unable to see the forest for the trees. You focus on the individual tasks at hand and check things off as they get thrown at you to feel like you're getting things done. And this may work for a while! But really, you're constantly playing catch-up. At some point something will get missed. So how do we prevent that?
As engineers we take pride in our development environments; we tweak things to be just right, we reduce friction, we automate tasks. When we boot up our machines and launch our IDEs (\*cough\* Vim! \*cough\*), we expect things to be just as we left them and we expect them to behave exactly as they did the last time.
Why shouldn't we do this in other aspects of our job? Here are some basic questions for you, which if you can't immediately answer you likely need to write down some ground rules for yourself. How do you take notes and keep them organized? What do you do when you find the answer to a difficult technical question? How do you keep track of your daily tasks and ad-hoc requests? How do you quantify and show progress? How do communicate up and down the chain, and how often?
There is no magic formula that I can give you that will make you an overnight success at your workplace. But I _can_ share some basic principles that I try to follow as best I can.
- Plan your work well.
- Communication is king.
- Protect your time.
"OK, thanks captain obvious. But what does this mean?" The answer to that really depends on you and it's unlikely that you'll nail it on the first go. But the good news is that it doesn't take very much effort to start experimenting with tools, methods, and routines. Here's how I try to apply these principles on a daily basis.
Plan your work well
For me this is a big topic and it manifests in many ways. Planning your work well takes discipline, it needs to be done consistently time and time again, and it needs to be done right.
Having a clear mental model of what you'll be doing, how you'll be doing it, and when you'll be delivering it over a long period of time can be a strong compass. For this to be effective you need to be able to break down large tasks to their atomic units, understand when things need further exploration or clarification prior to execution, and set clear paths to project completion over time (something like a Gantt chart to give you a roadmap). Being able to effectively plan work over a long period of time will give your weeks a good sense of purpose and direction, and shows great leadership qualities as well. If you get really good at this you'll never be left with a feeling of, "what do I work on next?" It will help make you super productive. Think of this as always having a clear bird's eye view of what's ahead.
Every morning I make a simple list of tasks for the day. These could include responding to a Slack message, reviewing someone's code, finishing up a task, etc, though I don't generally include tasks from my long-term roadmap here. As the day goes on I might add more tasks, remove some, or move them to another day. I also use my to-do list as a way to quickly capture ad-hoc requests and ensure I don't forget them. I've been playing around Things 3 on macOS and iOS, which has largely been fine at this. The point is that not only do I have a clear picture of what my weeks look like, I plan my day as well as I can so that I don't lose focus and reduce stress.
Communication is king
If you've done the first part and planned your work well, effectively communicating the plan, your progress, and any blockers you may run into will be paramount. I cannot stress how important this is.
Communication takes many forms; email, Slack, documentation, technical design documents, pull request summaries, video calls, you name it. But what I'm referring to here is specific to articulating what you're working on and why, how long it will take, any blockers you might be facing and what is needed to unblock you, and having a clear record of it all.
The truth is, if you've planned your work well and you have a game plan, communicating progress shouldn't be that hard. It all comes down to having the discipline to do so clearly and on a consistent cadence.
Protect your time
Slack messages, meetings, emails, Twitter alerts 😉, code reviews, jumping between branches to fix tests for multiple PRs, stand-ups, taking breaks... is this your day? This is often my day. I generally work the usual 9am to 5pm and on any given day I may have 2-5 meetings, a dozen emails to read, various slack messages to respond to, etc. This all eats up precious time to do my actual work which right now is ultimately planning and coding features.
But zoom out of the daily grind for a moment and think about what happens during a whole week or month (or quarter!); several projects lined up, new hires starting that you might have to mentor, interviews you might need to facilitate, that much deserved vacation you might have coming up. All of these things take valuable time away from getting your work done. Remember the first principle, plan your work well? It's not just about knowing _what_ you'll be doing, it's also about knowing _when_ you'll be doing it.
If you know that the work is going to take X number of weeks to finish, how does that line up with your month? Where do you fit in mental health time? How will you ensure that you have enough focus time during the day to code? You need to protect your time, and do so on a daily, weekly, and monthly basis.
I can't say this enough, decline 👏 more 👏 meetings 👏. Your time is your most valuable resource. I block out my calendar with "Focus Time" every day of the week between 2pm and 5pm. It's not always respected, and sometimes it's hard to find times for a large group to meet, but the time shows up as busy and it discourages folks from booking that time. And don't give brain space to things that will distract you while you work. Literally book time on your calendar to do that thing and don't think about it until it's time to do so. Protect your time, no one else will.
Ultimately your success framework may look very different. Perhaps your core principles don't include any of mine, and that's fine! The point here is that having a plan, even if you don't write it down like I have in this blog post, will help you stay focused and deliver consistently. How do _you_ like to work? What makes _you_ productive? How will _you_ protect your time? Take a few moments to think about these questions, come up with a little personal framework, and try to practice it starting tomorrow. I bet you'll find it helpful!