How Effective Am I?

Being an engineer in a fast-paced software development environment is quite challenging for newbies. There are some new habits that I haven’t found in my workplace before. To deliver the optimum result, sometimes I need to execute unconventional ways of doing things, which also impact the results (most of the time was not good, hehe).

Then, I came across a book recommendation from one of the engineers in the company, The Effective Engineer: How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact. It is written by Edmond Lau, a seasoned software engineer that has worked in most of the large tech companies. In this book, he shared some experiences of how notable engineers solve their engineering problems.

High-leverage activity

In a fast-paced environment, sometimes we end up overwhelmed with numerous tasks. Countless meetings, replying to emails, asynchronous discussions, bug fixing, features that need to be developed, and the list continues…

Remember, time is the most valuable asset. We might familiar with this term: the maker’s schedule vs the manager’s schedule. In this term, we found out that there are two different points of view on time allocation. We need to respect each other time based on our roles. Focus on what generates the most significant value and requires less time to spend.

We need to adopt a growth mindset. Learning is one of the high-leverage activities.

In the early stages of our careers, we need to learn as much as possible. Make a consistent habit of learning, the more we learn, the more we are prepared for a better opportunity in the future. More on this topic, you should read Atomic Habits by James Clear. Challenge ourselves to become 1% better each day. Not necessarily in engineering skills, in fact, a lot of effective engineering solutions were adapted from other fields.

Iterate often

Sometimes we ended up in a solo project. The abstractions, designs, and code styles are decided by one person. Hmm, we might think this is a perfect situation for engineers. But it is actually a double-edged sword.

The project might be delivered faster because there is minimal to no intervention from other engineers. We should build a feedback loop on the project we work on, and invest in iteration speed. For example, code reviews will ensure the quality of a product. This might catch early bugs even before it is released to production. Or maybe some unnecessary abstraction that makes the codebase bloat.

The tricky part is project estimation. Even now, sometimes I still missed the estimation. Either overestimated or underestimated. How to overcome this? Define a measurable milestone, clear objective, and reasonable timeline. Sounds easy, but oftentimes difficult to do in real-world scenarios. To make it simple, we can start with two options. Deliver selected features by a short deadline or change the delivery date. Then, it should lead to more detailed conversations. It really depends on the situation.

Know your limits

Last but not least, enjoy the process. We are human beings. Do not push yourself into 70 hours of work weeks. When it comes to achieving goals, those pieces of advice might help. Just don’t forget to enjoy leisure activities with your friends and family. Own your story :)