Edmond Lau, who has worked for companies such as Google and Quora and is currently a software engineer at Quip, interviewed senior software engineers at well-known Internet companies such as Facebook, Instagram and Google in his book "The Effective Engineer", and summarized the five abilities that they believe highly productive and outstanding software engineers possess. 1. Don’t be afraid to explore unfamiliar programming languagesWhen you are approaching a new project or changing your career path, you may need to learn a completely unfamiliar programming language. Many people are afraid of this and even give up before trying. The fear of stepping out of your comfort zone is often greater than learning the program. They worry about whether they can reproduce the good performance of their past work, and even doubt their own abilities. No matter how good an engineer is, he or she must have a starting point. For example, Dave Cutler, a senior engineer at Microsoft who built the foundation of Microsoft Windows, was born in the literary group and had no formal computer science education. He spent more time learning from mistakes than his peers. Among them, the two most important keys are to have a "growth mindset" instead of a "fixed mindset" and an "optimize for learning" attitude. This critical skill of learning an unfamiliar programming language will become more and more accessible with practice, and will make you a better programmer in the process. 2. Master Debug"Why does the program run differently than I expected?" is a question that many engineers will encounter. Debugging ability is often a key factor that affects whether an engineer can successfully complete a project, but it is underestimated by most people. The systematic thinking of debugging is as follows:
From this, we can see that if you want to speed up debugging, you need to improve your ability to "propose hypotheses" and "examine hypotheses." The ability to make hypotheses can be improved as debugging experience accumulates, while the ability to examine requires strengthening the skills of using detection tools. In this process, you must first assume that everything is examineable and find tools or mechanisms that can be used to test or speed up testing. Never use only tools that you are familiar with. 3. Develop time-saving toolsSpend less time doing tasks that computers can already do, such as developing time-saving tools and automating workflows. Bobby Johnson, a software engineer who was in charge of Facebook's software infrastructure team, led the team from 6 people to more than 100. He observed that most of the people who performed well in the team wrote many tools. The development time of these tools, which seemed to have no direct correlation with performance, might take up one-third of the working time, but greatly improved work efficiency. These tools included tools for deploying programs, monitoring systems, and other time-saving tools. 4. Optimize the speed of repetitive tasksSoftware engineers may need to search and browse function definitions many times a day. Making good use of keyboard shortcuts can save considerable time. For example, each search takes 12 seconds, and similar steps are repeated 20 times a day. If shortcuts are used, the search time can be shortened to 2 seconds, which saves 40 hours a year. Other situations include testing on different devices each time you debug. In addition to opening the app separately, you also need to set up test scenarios. At this time, you can think about how to speed up such repetitive tasks. 5. Develop a systematic thinking modelWriting program code and making the program work is just the tip of the iceberg. To produce truly valuable programs, we must think from the program itself to the entire system.
Thinking about problems from a macro perspective can help you better understand how to allocate time and energy to achieve the best results for the program. |
<<: Ten apps that Android developers can't put down
>>: Sharing of iOS network layer architecture design
I only give you 1 second. If you want me to read ...
What should you do when you urgently need to appl...
1. Active Users Let’s first define active users: ...
A few years ago, Chery QQ was everywhere on the s...
The battery of a Tesla Model S reignited twice af...
Mobile resources: six advertising formats to meet...
Produced by: Science Popularization China Author:...
How to fill in the college entrance examination a...
100 Golden Problem-solving Models for High School...
[[124682]] Recently, the AWS Technology Summit wa...
In response to pressure from Epic Game and govern...
The last Sunday of January every year is World Le...
The cartoon "SpongeBob SquarePants" tel...
China's cinemas only reopened at the end of J...