When do you do your best work? The kind of work that leaves you with a smile at the end of the day, even if you’re exhausted. The work that fills you with excitement, knowing you get to continue working on it tomorrow. Take a moment to think about it.
Got it? What were you doing? Where were you? What was happening in the background? How was your mood? Did you had music playing? Was it a quiet area or a busy one? I’ll give you a few more seconds…
If you work in software or with software teams (or in any other creative field), I bet that moment had one or more of these characteristics:
- You had good amounts of uninterrupted stretches of time to focus on your work.
- You were able to discuss or collaborate on your work with someone else, maybe a colleague.
- At the end of the day, something was produced. Code, documents, a design, etc.
In my case, I find that my best work is produced early in the morning or late at night when the day is quiet and distractions are low.
During these times, I can focus on the topic for about two hours before taking a break. I then discuss what I was working on with others, gather their input, and continue working for another two hours. This work can be anything, from coding, working on RFC documents, creating a project plan, or developing a team roadmap.
As an engineering manager, it’s interesting to think about how little of these types of days you get. Your weeks are probably fill with so many different topics and priorities that finding the time for deep, focused work can feel like a luxury. Between back-to-back meetings, emails, Slack / Teams notifications, and random administrative tasks. Finding those golden hours for really getting into the zone and thinking big picture can feel like striking gold.
But what about your team? Ever wonder how much head-down, no-interruption time they get every day? When do they hit their stride and do their best work? As their manager, figuring this out is super important. It’s not just about keeping things moving. It’s about creating a space where your team can really shine and do the awesome work you know they’re capable of.
In this two-part blog series, titled “Your Best Work” and “Your Team’s Best Work”, we will explore the concept of producing your best work and discuss how you and your team can get there. Let’s start with you.
High-Quality Work = Time Spent X Intensity of Focus
On his book, “Deep Work: Rules for Focused Success in a Distracted World” Cal Newport explores the concept of deep work, which he defines as the ability to focus without distraction on a cognitively demanding task.
Cal Newport defines deep work as:
Professional activities performed in a state of distraction-free concentration that push your cognitive capabilities to their limit. These efforts create new value, improve your skill, and are hard to replicate.
On the other hand, we have shallow work:
Noncognitively demanding, logistical-style tasks, often performed while distracted. These efforts tend not to create much new value in the world and are easy to replicate.
These are the everyday routines of the modern workplace, such as meetings, emails, notifications, report, etc. While valuable in many ways, these activities tend to sneak up on you and pile up. If they are not kept under control, they can consume entire days that could be spent on deeper, impactful work.
On a similar note, Andy Grove, on his book “High Output Management” talks about working on High Leverage activities. Leverage = impact produced / time invested.
The key component of leverage is that it allows you to accomplish things faster than if you worked alone.
I’d like to introduce the concept of leverage, which is the output generated by a specific type of work activity. An activity with high leverage will generate a high level of output; an activity with low leverage, a low level of output.
The idea is that there are two types of leverage activities: personal and organizational.
Personal leverage refers to the tools, techniques, and knowledge that enable you to achieve more with less effort. Organizational leverage, on the other hand, involves teams and structures that allow you to accomplish more with less time or money. Although often overlooked, organizational leverage is one of the most crucial factors in building a high-output management team.
Improving personal effectiveness may lead to a 10% improvement. But, if you enhance the effectiveness of a 30-person organization by 10%, that effectively could roughly translates to adding 3 software engineers.
The key idea here is that deep work doesn’t necessary mean working by yourself, it also involve strategically leveraging your team’s collective skills and efforts to achieve more impactful results.
The Art of Software
Software development is, at its heart, a deeply creative endeavor. It’s a canvas where complex problems meet innovative solutions, it’s not just about building something that works; it’s about envisioning a system where each part interacts with the others, this demands a blend of logical precision and imagination, creating structures and systems that are both robust and adaptable.
It’s also about thinking about the end goal and working backwards, decomposing the user experiences that’s intuitive, engaging, and enjoyable. This requires a deep empathy for the user, an understanding of their needs and behaviors, and the creative vision to bring this understanding to life in the software’s design.
It’s about innovation, iterations, and constant discovery. It’s about reshaping familiar concepts to fit new paradigms and exploring uncharted territories with a blend of curiosity and creativity.
This creative process thrives on teamwork, brainstorming, and collaborative efforts. This collaborative environment is a melting pot of ideas, where creative thoughts are shared, critiqued, and refined, leading to solutions that are greater than the sum of their parts.
So, how can you mix the creative collaborative aspects of software development, and the focus and deep work required to produce high quality work, how can you help yourself and support your team members in producing work that, as I mentioned earlier, fills you with excitement?
Masters of Doom
I vividly recall reading “Masters of Doom” by David Kushner more than 10 years ago, on my bus back from work on a rainy day.
The book tells the story about the creators of Doom, mostly from John Carmack and John Romero’s perspectives. There was a specific section on how John Carmack single-handedly wrote most of the groundwork for the Quake 3 engine by locking himself in a hotel room and surviving on nothing but pizza and Diet Coke.
Now Carmack had vanished for real–sequestering himself in this faraway hotel room for a week. Pizza boxes littered the floor. The phone didn’t ring. The door didn’t open. The only distraction was when his throat dried out so much that he had to venture outside for another Diet Coke. He had even bought a special laptop for the occasion; a Dolch portable Pentium II system with full-length PCI slots–just roomy enough for his Evans & Sutherland OpenGL accelerator.
Although I would not suggest you go to that extreme, the idea here is pretty solid.
If the workspace consistently interrupts your concentration flow, it can be highly frustrating. It takes 10 to 20 minutes to regain your flow after an interruption. If you don’t have a dedicated window of time for focused work, you may not even begin.
Planning and structuring time is a significant aspect of deep work. Newport suggests planning work four weeks in advance. However, initially, you may prefer planning just a week ahead.
Review your calendar and identify time slots that can be dedicated to deep work. Consider your most productive and focused times of the day. Once identified, publicly schedule your deep work sessions to ensure no interruptions or conflicting appointments.
I tend to put a minimum of two days aside per week for this kind of work (Mondays and Fridays). And I defend them tooth and nail against any kind of meetings, catch-ups, etc.
Using a Pomodoro type of timer during my deep work days has also helped me get into a state of “flow”. A good tool will keep you focused while also blocking distractions. Personally, I use the Flow App because it integrates nicely with my launcher (Raycast). However, you can use any timer, even your kitchen timer, for this purpose.
Forget about your Goals
Most goals are out of our control, as they depend on things like the future, what others do, the economy, the environment, your health, your mood, etc
The only thing we can really control is the process, the process of doing something over and over.
For instance, rather than dreaming of becoming the next master chef, focus on the joy of cooking one new recipe each week. Running a marathon is a goal, running 3 days a week for 30 minutes is a repeatable process. Aiming to be the next viral sensation with your ukulele skills is a goal, dedicating ten minutes a day to strumming, even if your cat is your only fan for now, is progress.
We are what we repeatedly do. Excellence, then, is not an act, but a habit - Will Durant
When you concentrate on establishing daily routines and consistently put in the effort, your work accumulates and multiplies over time, leading to exponential growth. By trying out a new recipe every week, you can whip up a complete menu of delicious dinner meals that everyone will love.
Similarly, by automating one task each week at work, you can free up time to focus on more important activities that actually produce results. As you streamline tasks, you become more efficient and faster, as you can apply what you’ve learned from previous experiences and solutions to tackle new challenges.
The more you do this, the bigger the payoff in the future. Even a small 1% improvement each day can add up to an impressive 38 times increase over a year.
Focus on the Output
So, how do we figure out our direction if we don’t have any goals? Well, it’s all about keeping track of the output of your progress (and the output of your team, but more about that later), rather than just focusing on the effort you put in. For you, think of the things you actually produce as your “finished product”. The joy of sharing delicious meals that you cook with your loved ones is what you’ve achieved and the output. The feeling of well-being that comes from running a few times a week is also an achievement, and the output.
The concept of output is different from goals because you have complete control over it. Sure, running a marathon may be a great goal, but there are many factors beyond your control. On the other hand, you can control how many times you go for a run.
Getting a promotion is definitely a goal to strive for, but you can’t directly control it. You can however, put yourself in a position where you consistently deliver on projects over the next three months, increasing your chances of being considered for that promotion.
This is actually easier said than done. Some days are awesome, some days are alright, some days are rough. And then there are those days when everything is just plain awful, and you just want to go home and crash on the couch, staring at the ceiling and pondering what the heck is going on with you and your life. We’ve all been there.
Embrace the struggle. This is the space where breakthroughs come from. If you focus on the process, you will see progress.
Someone once asked Somerset Maugham if he wrote on a schedule or only when struck by inspiration. I write only when inspiration strikes, he replied. Fortunately it strikes every morning at nine o’clock sharp. - The War of Art, Shawn Coyne
The Pareto principle, also known about the 80/20 rule states that for many outcomes, roughly 80% of consequences come from 20% of causes.
In software the Pareto principle can be applied to optimization efforts. For example, Microsoft noted that by fixing the top 20% of the most-reported bugs, 80% of the related errors and crashes in a given system would be eliminated.
20% of the code has 80% of the errors. Find them, fix them! - Lowell Arthur
So, like, in most cases, you can write about 80% of a software in just 20% of the total time given. But, the remaining 20% of the code, which is like the hardest part, takes up a whopping 80% of the time.
Having this in mind, as a manager, how can you focus on those topics that brings the most output? I tend to think about those that have a lasting impact on many people, helping to shape the future by influencing others’ behavior. Each of the points below could be a blog post on its own, but here are a few key points to consider:
If your organization is growing, recruiting, onboarding, and training will have a huge impact. Putting metrics on how a new person journeys through the organization and understanding where the setbacks are will be good places to start in order to improve the process. For engineers, some good metrics to track could include:
- Time to first PR: This refers to the duration from when an engineer is added to your Engineering Organization (e.g., Github Org) until they submit their first pull request (PR). Ideally, the PR should involve some level of complexity, rather than being a simple one-liner adding themselves to an alerting system, for example.
- Time to first release: Similar to the previous metric, this measures the time it takes for an engineer to release their first piece of code to production. Ideally, this would happen simultaneously with the PR, but it may vary depending on the system or organization.
- Onboarding satisfaction score: The responsibility for engineering onboarding lies with the entire team, and there should be sessions that enable new engineers to quickly become productive. Conduct a survey after 1 or 2 months to gauge the satisfaction of new engineers and track this metric over time.
- Training completion rate: If training is not mandatory, keep track of the number of times new engineers fully complete it. If this is not the case, investigate the reasons behind it and how it impacts the Time to first PR / First Release.
Underperformance cases can be detrimental to any organization. They not only affect the underperforming individual, but also those around them. Such cases will continue to worsen over time, eventually becoming the elephant in the room. This will lower the morale of the team, break trust, and create gossip. Managing performance is a big topic, but a few things come to mind to help with this:
Set Expectations & Measure Performance
As a part of any plan to improve performance, it is necessary to define success and measure performance. It is hard to measure the performance of software engineers if the roles and level definitions of your organizations are not well defined. Invest as much time as possible to achieve clarity, and ensure that everyone in your organization understands the engineering levels and what is expected from them.
The most important thing is to define and agree on what “success” is together. Above all, they must have a clear understanding of what is expected.
This situation is the outcome of what you did or didn’t do. You didn’t deal with the problem promptly. You didn’t offer the required support. You allowed a culture that let this issue surface. If you made a wrong hiring decision and you still have time to revert as you are in the probation period, do it. It’s fine to make mistakes, but it’s not fine to not act on them. Take this as a chance to develop as a manager and enhance the team’s culture and processes. Your job is to ensure the performance of your team, both collectively and as individuals.
Probably one of the hardest things to learn as a manager is that you can’t save anybody, nobody can. We’re not babysitters. It is not unreasonable to expect people to actively contribute to their own progression.
The best you can do is to support them, point them in the right direction, and give them the opportunities they need to prove that they have what it takes. You can’t carry them there.
So while it’s always helpful to examine what went wrong, and be humble enough to recognize your own mistakes, you can’t take responsibility for each individual’s faults.
Junior engineers will need more direction and assistance, while senior engineers should be able to take the lead of their own development. It is important to find the right balance for each individual, providing the necessary support.
Always remember that your role is to to amplify the efforts of your directs. Without their significant effort, your own efforts will be in vain.
Assume everyone is trying their best and be candid
No one wakes up one day and says to themselves, “Today I will do really badly.” The overwhelming majority of people want to be good at their jobs. They want to be successful. They want to progress in their careers. Engineering specially want to write code, good code, deliver and see their work in users hands. We enjoy fast feedback. Are there issues you can spot that are externals of the person? Is it really laziness or lack of motivation? If you have explored all considerations, have you been candid to this person and provided, direct and honest feedback in a constant way?
A good technique that I have developed over the years to provide this type of feedback is to start by sharing my observations during 1:1s. For example, I might say, “By the way, I have noticed that you seem very distracted lately. I haven’t seen you very active, and your last PR was over a week ago. Is there something I should be aware of?” A simple sentence like that has led to hours of conversations and continuous feedback, which ultimately helps address low performance cases.
Recognizing and rewarding good performance is super important for creating a positive and productive workplace culture. Rewards can come in different forms, like giving shout-outs during team meetings, giving out cash bonuses, and of course, promotions. But the key is to be clear about the criteria for getting these rewards and make sure they’re always applied fairly. That way, everyone knows what kind of behavior and contributions are valued.
It’s also a good idea to personalize rewards based on what each team member likes and what motivates them. Some people might enjoy the public recognition, while others might prefer getting more responsibilities or chances to learn new skills.
Speaking from my own experience, I’ve always loved working at places where they take time to celebrate individuals during company events or all-hands meetings.
As a manager, it’s crucial to provide feedback to your teammates after a promotion or salary increase. I usually allocate one or two hours for a performance talk, where we have a one-on-one discussion about the key aspects that contributed to their exceptional performance during the period. This is not just a “nice thing to do,” but a multiplier effect. A productive performance conversation will not only highlight the individual’s great work and expectations, but also motivate them to maintain this level of performance in the future.
Creating a Positive and Inclusive Team Culture
Effective Communication and collaboration are fundamental to a positive culture. This breaks down silos, promotes cross-functional teams, and ensure information flows freely across the organization.
I tend to default to asynchronous ways of working over synchronous ones. In an asynchronous work environment, team members are not required to provide immediate responses or participate simultaneously. This provides greater flexibility in schedules, allowing individuals to work at their own pace and during their most productive hours. As a result, it reduces interruptions by minimizing the need for constant back-to-back meetings and alignments.
Transparency is key here. Aiming for everyone work in the open by sharing their roadmaps, strategy, handbooks, messaging channels, etc. Transparency is also one of the best tools to builds trust.
- Written communication. Encourge everyone in your team to write it down. Writing and sharing with others creates accountability, and almost always leads to better decisions. Want to make meetings less of a waste of time? Start with a written agenda, then send out decisions and actions afterwards. Looking for a simple way to run projects with fewer surprises? Ask the team to write down their plans and share them with others.
- Empathy is crucial for building strong relationships and promoting teamwork. Team members should be encouraged to understand each other’s perspectives by putting themselves in each other’s shoes. Leaders should lead by example and create opportunities for team members to connect on a personal level.
- Inclusivity is vital for creating a team environment that is welcoming and supportive of all members. Leaders should strive to eliminate discrimination and bias, and value diverse thoughts and experiences. They should provide opportunities for all team members to participate and contribute, ensuring that everyone feels valued and respected.
- Feedback is essential for strengthening teams and improving processes. Leaders should encourage team members to provide feedback to one another and lead by example in giving feedback. Regular feedback opportunities should be created, focusing on constructive criticism and improvement.
Managers should establish an environment where everyone feels valued and motivated to contribute their best work.
Recognizing the Pareto Principle in action, it becomes clear that as a manager, your focus should be mostly on empowering your team to work effectively and efficiently. It’s about identifying and nurturing the key areas that yield the most significant results and impact.
“Peopleware: Productive Projects and Teams” written in 1987 by Tom DeMarco and Tim Lister, is a classic that encompasses many important principles on software and team management. In the book, it outlines the key role of a manager, they are not there to make people work, but to make it possible for people to work.
As a manager, your key role is to share organizational objectives, priorities, and context with the team. It is to create the environment and the culture to arrive there, and then step back. The most effective type of leadership, which evokes strong emotions and deep respect, often comes from individuals who don’t hold formal authority. A leader is a catalyst. Your goal as a manager, is then to create an environment, where every team member can excel in engineering.
In Part 2 of this blog post, “Your Team’s Best Work,” we will cover effective techniques and principles to enable everyone on your team to get there.