Today's Question:  What does your personal desk look like?        GIVE A SHOUT

Engineer mindset in internet companies

  sonic0002        2021-10-07 04:09:08       1,341        0    

This post tries to list down how we keep engineer mindset while doing development work. We engineers are the ones deliver the actual product by writing each and every line of the code, in order to deliver high quality and less buggy code, we should keep reminding ourselves what needs to be paid attention to during our daily development work. 

So what is engineer mindset? Engineer mindset is that we should keep in mind that each and every line of code we write should serve the purpose well and we should be responsible for whatever we write.

With the engineer mindset, we should keep remind us how we can deliver high quality product. Below are some questions we could ask ourselves.

How to plan our work?

As an engineer, we may get different tasks and requirements from PMs, Ops and other stakeholders, before we start to work on the tasks, stop for a while and think about the priority and urgency and impact it may have before we put it aside or start to work on it. Every task we get has its priority and urgency level, so we need to form a habit of defining its priority so that we know when we should start with it. At the beginning, we can discuss with PMs, managers and other stakeholders to understand the priority, but we should observe and learn to evaluate the priorities ourselves along the way.

Some general aspects to think about when evaluating:

  • Is this task from PROD or STG?
  • Is this issue on going and still impacting people?
  • Does this task impact specific user groups or impact all users
  • Is it blocking other teams(FE, QA, CE etc)?
  • Does the task have hard deadline?
  • ...

Besides priority evaluation, the next thing is about effort estimation. Be careful and treat it seriously when doing effort estimation. Our goal is the estimation should be as accurate as possible. This requires us to think more about the task(including reading code, understand logic and identify edge cases) and needs practices as well. It may be challenging to make it right the first time, the second time, but it will trend to be more accurate along the way. Keep practicing and think more.

How to work on a task?

Usually when we start to work on something, we are constrained by some timeline. In this case, we would easily get into a mindset that we wanna complete the task fast and deliver it first and then rush for it. This is not right.  We should be really serious and careful about the code we write as our code is impacting lots of real people out there who are using our product. We should be responsible for them. So what should we do?

  1. Try to understand the task we are working on before directly jump in coding
  2. Try not to comprise the quality of the code even when in a tight timeline
  3. Try to read through the flow we are going to touch on first although our change may be just a minor part of the flow and even not functional change, this is not a waste of our time, it is helping us to understand the product better
  4. Try not to copy and paste code blindly. Always read though the code we copied before saving it
  5. Try to write unit test for all our new logic added and review existing tests if we are modifying existing flow. Keep in mind this is for our own good as we don't want to  be called out when incidents happen.
  6. Try to always review our own code after we update it. Development is not just about writing code once
  7. Try to think about how we can verify our changes? Don't trust our own change before verifying it. There is always some way to verify our change, no matter it's just a simple local testing, API test or integration test, there is always a way. We shouldn't wait the users to verify it for us.

How to ask questions?

There are lots of doubts or questions in our mind when we do development. How do we find the answers to the doubts or questions? Some general suggestions would be:

  1. Try to figure it out ourselves first. Read code, search online, search wikis, search Slack channels
  2. Try to find the right person to ask the question(can check who was the author of the original code, who is the current owner etc)
  3. Try to explain the question or doubt clearer when asking instead of just ask and waiting for people to solve it for us
  4. Try to think we are still the owner of the problem and we shouldn't expect others to just take it over and complete for us
  5. Try to ask question smartly. 

How to grow as an engineer?

Doing development is one of the most important work of an engineer. But in order to grow, it's not enough to just doing our daily development work. We should invest in ourselves and grow as we get more and more experience. If we keep doing same thing every day then we are not growing.

How do we grow? Learning and Practicing.

There are two types of learning: active learning and passive learning. Given the fact that there are lots of new things coming out in our industry, there are lots of things we need and should learn to keep us strong. Active learning means that we should keep learning something we are interested in and think in long term that the things we are learning may not be useful immediately in our daily work but they will benefit us eventually. Passive learning is the kind of learning where our work requires us to learn and we should spend the minimum time on them to get our work done and later we could explore more on them when we get more time. This kind of learning will push you one level up as you practiced it and it helped your finish your work. We should take time to empower ourselves by keeping learning.

Practicing is another thing we should keep doing. With all the new stuff learnt, if we don't practice them, we would never know what's hide underlying which we don't know about. Also it may be easy to be forgotten if no practice is done. 

Staying our of comfortable zone and challenge ourselves. It's our intuition to stay at comfortable zone and get used to what we are doing everyday. However, this is a hurdle for our growth. If things have changed, it would be difficult for us to jump out and adapt. So tell ourselves to stay out of comfortable zone.

INTERNET COMPANY  ENGINEER MINDSET 

Share on Facebook  Share on Twitter  Share on Weibo  Share on Reddit 

  RELATED


  0 COMMENT


No comment for this article.