1. Not afraid to explore unfamiliar programming languages

Many people are so intimidated by the prospect of learning a completely new programming language when they start a new project or switch careers that they give up without even trying. The fear of getting out of your comfort zone is often more than the fear of learning the process, of not being able to perform well in your past job, and even of doubting your ability.

No matter how good an engineer you are, you have to start somewhere. Dave Cutler, a senior engineer at Microsoft who built the foundation of Microsoft Windows, had no formal computer science education and spent more time learning from mistakes than his peers. Among them, the two most important keys are having “growth mindset” rather than “fixed mindset”, and the attitude of “optimize for learning”.

Learning an unfamiliar programming language is a key skill that will get better with practice and make you a better programmer in the process.

2. Master Debug

Why does the program come out differently than I expected? Is a problem that many engineers encounter. Debugging is often underestimated by most people as a key factor in whether an engineer can successfully complete a project. Debug’s systematic thinking is as follows:

  1. Assume the possible cause of the bug.
  2. If the hypothesis is true, define the possible consequences of the hypothesis.
  3. Try to see if there is any conflict with these results.
  4. Repeat the thought process if there is a conflict indicating that the assumptions are wrong.

Therefore, to speed up debugging, you need to improve the ability of “proposing hypotheses” and “examining hypotheses”. The assumption is that the ability to inspect can be improved with Debug experience, while the ability to inspect requires the ability to make good use of detection tools. To do this, assume that everything is viewable and find tools or mechanisms that can be used to detect or speed up detection, rather than just tools you are familiar with.

Develop time-saving tools

Reduce time for tasks that computers can do, such as developing time-saving tools and automating workflows.

Bobby Johnson, a software engineer who led Facebook’s software infrastructure team, grew it from six people to more than 100. He observed that high performers on their teams often wrote tools that might not be directly related to performance, but could account for up to a third of their work time, and thus greatly improve productivity. These included tools for deploying applications, monitoring systems, and other time-saving tools.

Optimize the speed of repetitive work

Software engineers may search for and browse function definitions many times a day, and using keyboard shortcuts can save considerable time. For example, each search takes 12 seconds. Repeat the process 20 times a day. Using the shortcut key can reduce the search time to 2 seconds, saving 40 hours a year. For other situations, each Debug needs to be tested on different devices. In addition to opening the APP separately, the testing situation should also be set. At this time, we can think about how to speed up the repetitive work.

5. Develop a systematic thinking model

Writing the code and making the program work is just the tip of the iceberg. To produce truly valuable programs, you must think beyond the program itself to the system as a whole.

  • Is your program compatible with other libraries and functionality written by others?
  • Is the program tested to ensure that other members can perform the functionality you wrote?
  • What production environment changes are required to deploy your application?
  • Does the new procedure have a negative impact on other operating systems?
  • Are customers and users using the new program as expected?
  • Does the new program work as well as the company expects?

Thinking big gives you a better idea of how to spend your time and energy to get the best results out of your program.

Author: Xiao Xin love to eat bread link: juejin.cn/post/688078… The copyright belongs to the author. Commercial reprint please contact the author for authorization, non-commercial reprint please indicate the source.