As software engineers, we’re always in pursuit of high-quality solutions against a ticking clock. But spending too much time perfecting solutions before delivery increases cost and delays learnings.
What’s more, the standard approach of grinding to the finish line is not sustainable. I quickly realised I had to learn how to pace myself for a marathon, not a sprint, while also enjoying the views. In other words, I needed to work smarter rather than harder.
In this post, I would like to share a few engineering-adjacent skills I’ve found useful for a successful career as a Senior Engineer and Team Lead.
What I learned (and how)
At Hotjar we use industry benchmarks that set elite performers apart from the rest. These benchmarks favour an iterative approach to learning quickly, reducing waste, and keeping up the momentum.
I’ve also picked up a few tips from my mentors, who inspire me to be intentional in my work and align my efforts in the same direction as my team or company. The book Coherence by Dr. Alan Watkins has also been a great inspiration during this ongoing journey.
Both these sources have helped me develop a few valuable ideas of my own.
Align your goals
One of my major time wasters was flitting from one thing to another without first gauging the importance of each task. I needed a mental representation of the priority areas, to differentiate between what was a high-impact activity for my goals and what was merely a distraction. I started by combining all my goals for the quarter.
It’s all too easy to be pulled into different directions by:
- OKRs
- Tech briefs and guidance
- Performance Review opportunities
- My own interests and goals
So now, I put all these goals on one list. Then, I pick a theme to focus on for the month. The theme helps me prioritise activities that increase the impact of my work—especially if some groundwork is required before focusing on a particular area. For example, if the theme is to tackle tech debt, it also helps to look at the north star direction.
For an individual contributor, these goals may be squad-related, chapter-related, north star-related, etc. Maintaining a laundry list of bottlenecks or implementations reaching a stress point also helps allocate the right amount of effort. Some of these areas might be aligned with the squad’s current focus area, and thus tech debt can be addressed as preparation for feature work. If not, laundry lists at the very least make good material for a proposal for upcoming focus areas.
Alternate between breadth and depth
Goals and themes require frequent alignment and refinement to continue serving their purpose. I often ask questions when our decisions seem to be drifting away from our original squad goals. As we update our direction with learnings and results from data, it helps the team align and evolve their understanding of what’s next. Then we shift our focus to the tasks in our backlog and identify what’s missing for us to reach the goal we’ve identified.
We’ve reached a point several times where we know in our hearts that we are not going to manage the original target we set. Or perhaps we’ve gained new knowledge that changes our approach. This is either an invitation to grind to the original deadline or rise to the challenge of slicing the deliverable differently.
Some questions I ask here are:
- What resources do I have at my disposal to help me de-risk this work?
- Can I spike the riskiest part to check for feasibility?
- What is the minimum work I can do to get the whole system working from end to end?
- Will excluding part X from this work still make it a successful release?
Slicing work into smaller deliverables maintains momentum and ensures timely feedback, so a pivot will not lead to a lot of waste. (Sometimes we even replace the original task with one of higher value to our customers as we adapt to new learnings.)
Use sync-meeting agendas for broad-picture thinking
The switch between breadth and depth is costly—and sometimes painful—because the brain wants to return to its previous train of thought. I like to use sync meetings as a time to address this: syncs can help switch focus faster. If I know a planning meeting is coming up, I spend 30 minutes preparing my contributions. The end of a sync meeting is also an excellent time to revise what was decided and identify any gaps or misalignments.
Ask for feedback
After aligning on the right priorities and keeping a bird's-eye view on the end goal, the next time-suck I realized I needed to avoid was perfection. Contrary to popular belief, perfection is more a vice than a virtue! I remember a time when I used to polish and perfect my work before asking for feedback, mostly out of fear that my work would appear sloppy. However, getting someone to give me feedback on the initial direction, scope, and size proved extremely helpful in structuring my thoughts.
When a draft is spending too much time gathering dust on my desk, I ask my lead or peers whether it’s valuable to continue pursuing it.
Set the right expectations
Naming conventions matter to help set the right expectations from reviewers. Here are a few examples:
Artifact name | Feedback expectations |
---|---|
A brain dump | High-level feedback is required to validate the direction of ideas. |
DRAFT: Merge Request | The reviewer will not nitpick with the incomplete parts but instead provide direction on boundaries and code structure. |
A proposal or RFC | Needs to be well thought out, and address a clear business case, to receive feedback on specifics. |
Iterate quickly
Perfectionism has value when it comes to the polishing stage of an article or deliverable. However, the prior WIP stages are how we work together to achieve a higher impact. Hiding my work simply because it wasn’t perfect yet was not helping me. Iteration is more powerful than perfectionism because it refines the deliverable to the right audience, whether it is the company or the customer.
Energy Management
All the strategies I’ve discussed continue to help me reduce waste and distraction—but being focused still takes up a lot of my energy.
Energy management is more impactful than time management. Having hard stops in my day allows me energy for activities that make my life more meaningful—like spending time with friends, family, and pets. This increases my motivation and sense of self overall. And restoring myself before I crash helps me work more consistently.
Crashing is expensive; it takes time to recover from. I’m still learning to notice the signs I’m slowing down and find healthy pick-me-ups.
I’ve also redefined success to represent my whole person—I’m not simply a brain attached to a body. Our life is so digital that sometimes our bodies become an afterthought. We eat and move on autopilot. Being intentional about improving my physical and mental strength has made my energy more consistent and reliable, helping me do better at work and in my personal life.