Searched for ""

Communication: Getting on the Same Page

I started to lead a cross-team, multi-quarter project a few weeks ago. I expected that, before the team could completely switch to execution mode and be 100% productive, we needed to spend a decent amount of time in the initial planning phase. Although I knew that it would be a challenge, I still underestimated how hard it was to get everyone on the same page and have an actionable plan that everyone feels good about. Just to be clear, everyone on the team was passionate and eager to get started. The challenge inhered from the fact that: 1. the project… Continue reading

Voicing Your Opinions as An Engineer

I notice a common trait among senior engineers: in most cases, they all have opinions and are not afraid of sharing them. As I gradually take on bigger and bigger responsibilities, when the stakes are high, I start to struggle with voicing my opinions and taking a stand. It’s a common topic mid-level engineers often encounter. This post covers: why we should voice our opinions; what is stopping us from voicing our opinions; when and how to voice our opinions. Why we should voice our opinions 1. It makes you more engaged in a discussion. Voicing our opinions is a… Continue reading

Senior Engineers, Stop Doing Everything

As we gain experience and grow our skill set, the scope of our capabilities increases. That means there are more and more ways we can contribute. For example, maybe two years ago, your primary way of contributing was by writing and reviewing code. Two years later, you are also capable of breaking big projects into small stories, designing large systems, and onboarding new engineers. But the amount of time we have stays the same – 24 hours a day and 7 days a week. Since the kinds and amount of work we can do continue to increase while our time… Continue reading

The other side of technical skill: Domain Knowledge and Long-term Vision

When we first start our careers as software engineers, we tend to focus on improving our coding skills, a.k.a. technical skills, including but not limited to: mastering a specific tech stack, adopting best practices, and studying architecture designs. But there is another side that is just as important: gaining the domain knowledge and forming a long-term vision for your team, product, and company. I’m leading a multi-quarter project that requires collaboration among several engineering teams. My team has been the ultimate initiator and driver of the project. As more and more senior engineers from other teams joined, I started to… Continue reading

Handling Disagreements and Conflicts at Work

Have you ever experienced the embarrassment of feeling so certain about your opinion and then later being proved wrong? Well, this has happened many times in my career. Feelings related to this kind of events stay fresh for a long time. The more certain I was in the beginning, the more embarrassed I felt when I realized I wasn’t totally right. It’s common to have disagreements among engineers. Disagreements present great opportunities to learn from each other and innovate better approaches. Being wrong is nothing to be embarrassed about. What embarrassed me was my arrogance and stubbornness that made me… Continue reading

Stressed out by work responsibilities? Focus on creating impact instead.

In this post, I share: My old attitudes towards responsibilities at work; Two main ways my attitudes disserved me; Two approaches for coping with the pressure from having too many responsibilities.   We all crave for a feeling of importance. Dale Carnegie claims “the desire for a feeling of importance is one of the chief distinguishing differences between mankind and the animals” and it’s “almost as deep, almost as imperious, as the desire for food or sleep”. This is also true for work — we want to be the M.V.P. (Most Valuable Player) of our team. The sense of importance… Continue reading

Not Working Overtime, but Working Flexibly

I avoid working overtime as much as possible. Working overtime can make our work less enjoyable, cause more errors, and lead to burnouts. The need for working overtime often is a symptom of deeper issues, such as immature planning. I prefer investigating and fixing root causes over using working overtime as bandages. But sometimes working overtime is inevitable. Things change fast. Although many deadlines are artificial, there are hard deadlines with direct impacts on the business and the team that might worth working overtime for. I faced this dilemma last week. The resourcing of my project changed, and I needed… Continue reading

Weekly Learning

Weekly Learnings My journey of becoming a tech lead. Week #17: Seeking Approvals at Work Exhausts Me Week #16: Three Lessons from A Frustrating Meeting Week #15: Project Planning: A Spike with First Principles Thinking Week #14: Fear No Awkwardness — Chatting is Good Week #13: The Power of One-on-One Meetings and Personal Connections Week #12: How to communicate effectively for bigger impacts Week #11: Communication: Getting on the Same Page (Part 2) Week #10: Communication: Getting on the Same Page Week #9: Voicing Your Opinions as An Engineer Week #8: Senior Engineers, Stop Doing Everything Week #7: The other… Continue reading

Refactoring Legacy Code V.S. Staying Focused On The Current Project

When I work on projects, I often run into legacy code that can be improved — to be more readable, more testable, or more comply with the current coding style. My urge to refactor the code is especially strong after spending a good amount of time trying to understand a piece of obscure code. That code hurts my brain, and I don’t want the same thing happens to other developers. There is the famous Boy Scout Rule: Leave Code Better than You Found It. But at the same time, I also want to stay focused and make progress on my current project…. Continue reading