paint-brush
Revealing The Secrets of Top Software Engineersby@wrgoto
1,283 reads
1,283 reads

Revealing The Secrets of Top Software Engineers

by Will GotoSeptember 5th, 2020
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

The most successful software engineers are able to manage expectations the best when it comes to scoping work. Don’t work too hard, not working too hard. Track your work ahead of schedule and find time to help others in need. Product Managers use your estimates to communicate a delivery date to even more important stakeholders. Don't overpromise and overdeliver, but you are actually doing them favor. Track down the importance of tracking your work and asking people about how much work you do.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Revealing The Secrets of Top Software Engineers
Will Goto HackerNoon profile picture

One of the largest misconceptions about succeeding as a software engineer is that people think if they simply work hard, they will become successful and will receive the recognition they deserve. They couldn’t be further from the truth.

Technical competence and productivity are incredibly important to succeeding as a software engineer, but most engineers drastically underestimate the importance of how your coworkers perceive you, let alone know how to systematically improve your image over time. Plenty of resources exist out there for the former, but no one talks about the latter which arguably contributes more to a raise or promotion.

Many engineers, including myself when I was starting out, want to exclude themselves from this “game” of having to constantly self-advocate. It feels disingenuous and desperate, but there’s nothing disingenuous and desperate about self-advocating if you approach it with structure, objectivity, and consistency.

Self-advocating is genuine and effective if you approach it with structure, objectivity, and consistency.

The following is the advice that no one really tells you and the advice I wish I had when I was starting my career. I hope it helps you avoid having to learn them from mistakes and missed opportunities.

Manage Expectations Well

A mentor of mine once told me that the secret to being a successful CEO is to accurately set and meet expectations on a consistent basis. The same principle applies to software engineers: the most successful ones do this really well when it comes to scoping work.

The most successful software engineers are able to manage expectations the best when it comes to scoping work.

Scope work and multiply the time estimate by 2 or 3 depending on how many unknowns there are. It takes some time to feel comfortable doing this, and it can feel like you’re deceiving your stakeholders, but you are actually doing them favor. If they push you on being more aggressive, stand your ground.

Product Managers use your estimates to communicate a delivery date to even more important stakeholders. They depend on you to make themselves look good. Committing to an aggressive deadline and missing it not only makes you look bad, but it also makes your Product Manager resent you for making them look bad in the face of executives.

Additionally, stakeholders can have a completely different perception of what is considered an aggressive deadline. I once estimated a project to take a week to do, told my stakeholders it would take two weeks, shipped it in 8 days, and was complimented for my ability to commit to ship features only. Basically, underpromise and overdeliver.

Most of the time stakeholders won’t argue with your estimates, if they need something sooner, open up a conversation around what can be delivered in the time frame they want. DO NOT under any circumstance take away your estimated padding just to appease them. Product Managers would rather deliver a feature ahead of schedule than late. It will make them look good, and it will make you look good.

Don’t Work Too Hard

It may be incredibly counter-intuitive, but the most successful engineers are the ones that only do a moderate amount of work, not the most, not the least. There’s a really good reason for this.

When you finish work ahead of schedule, use that time to chill out. Don’t work too hard. This gives you the ability to be able to handle emergencies, help people with last-minute requests, or to simply destress which ultimately makes you more likable and approachable to work with. Coworkers take note of when you go out of your way to help them. You can’t do that when you are pressed for time trying to ship your own work.

Not working hard gives you the ability to handle emergencies, help people with last minute requests, or destress to maintain a good mood.

Engineers that constantly work around the clock are chronically stressed out, typically hard to communicate with, and do not leave any room for flexibility. They are perceived as not being able to manage their time wisely or efficiently. Those that work the least are perceived as slackers or incompetent: not able to complete tasks in a reasonable amount of time.

The effects compound. With every person you help and every last minute request you fulfill, people will take note that you are getting your work done ahead of schedule and somehow find the time to help others in need. You may not be more productive (in the raw sense of the word) than your peers, but others will perceive you as more productive, more capable, more helpful, and most importantly more likable.

Note: many would argue that you are actually overall more productive for your team if you are helping teammates and being more collaborative. Managers definitely take note of this.

Track Your Work and Accomplishments

After previously writing an article about how to get into tech and become a senior engineer in 4 years, a lot of people reached out to me asking about the importance of tracking work and how useful it really is. Short answer: it is essential. You cannot improve what you cannot track.

You cannot improve what you cannot track.

The first aspect of tracking work involves knowing how efficient you are with your time. How much time do you waste context switching? In meetings? Emailing? Slacking (both in the semantic use of the term and the messaging app)? Did you scope the last project with too little time? Too much time? You should be able to answer all of these questions in a general sense and record them daily.

The second aspect of tracking work involves building your track record of accomplishments over time. It’s difficult enough to remember what you did yesterday or the week before, imagine what you’ll miss when you need to show your manager all the work you completed for the month, quarter, or year for a performance review? Leaving out important accomplishments would mean you aren’t maximizing your chances for a raise or promotion.

Not many tools exist to help with tracking your time and keep a record of your accomplishments. I ended up doing this primarily through a Google Doc, but things got quite messy and unmanageable as time went on. Spending a few minutes a day actually felt like a lot of effort, but it was totally worth it.

I am actually focused on building a tool specifically for this use case, and my company recently launched our waitlist. We are automating a lot of the work it takes to visualize what you’ve done, chart your progress, and build your track record of accomplishments. Please check us out and back us if you think this could help you.

Advocate for Yourself Weekly

For way too long, I relied on others to advocate for me, and it rarely happened. If it did, it was never at the extent I felt was deserved. Do not rely on others to build your reputation. You have to do it yourself, and it’s totally fine to do so.

Do not rely on others to build your reputation. You have to do it yourself, and it’s totally fine to do so.

Advocating for yourself is tough. If you are more extroverted, bragging about your work can come off as brash. For those who are more introverted, it takes a lot of effort to speak up and brag about yourself at all. Luckily, there’s a way to inform your manager of all the important things you accomplish in a way that is direct, neutral, and consistent.

Even if you have weekly meetings with your manager, you should send her a weekly email consisting of what was expected of you that week, what you shipped, any difficulties you had along the way, and potential insights you had that might be helpful. Use a tone that is neutral and to the point. Be concise and objective in the items you report. Language that fluffs or exaggerates the extent of your work can come off as disingenuous. If your email is too long, your manager won’t read it.

The weekly update email to your manager provides consistency and visibility. This is especially important in a post-COVID world where a large majority of software engineers are working remotely, and managers no longer gain visibility into their teams by simply being present in the same physical location. Their sense of knowing that you are consistently productive and transparent every week will go miles when it’s time for a promotion or a raise.

Tying It All Together

It takes almost just as much effort to set yourself up for success in the work environment as it does to get your actual work done, but it’s necessary, and the most successful engineers at top companies do this incredibly well. Don’t exclude yourself from this aspect of your career. Don’t treat it as additional stuff you need to do outside of your normal work hours. Spend 80% of your work hours working, and the other 20% advocating.

No manager or peer has ever given me this advice and frankly, aren’t incentivized to do so. Most people when entering the workforce are tossed into a job without any sort of guidance on how to do the more unspoken, but totally legitimate, tactics of becoming successful at work. I had to figure this stuff out myself, but I hope that this article gives you some insight and actionable advice into this very ambiguous part of building your career.

Questions? Comments? Hit me up on Twitter @wrgoto or check out our project called Rize.