preface
I’ve been having conversations with different people lately, and I’ve had a few ideas come to mind. On the other hand, I am also aware that I am at a point in my career. I have gained and lost in the past few years, so I want to talk about the growth of engineers in this article, in order to give you a little thinking. Limited by their own experience, these views may not be right, I hope friends can think dialectically. Because of their professional attributes, this discussion is limited to software engineers. Of course, if the following experience can help more students in other fields, then I am also honored. Below is the text, which will share a few points that I think are important to the development of engineers.
Fundamentals matter
As a candidate, I used to ask interviewers, “What do you think makes a good engineer?” Different interviewers gave different answers, but they almost all agreed on the importance of fundamentals.
What exactly is the foundation? The basis of my understanding **** can be broadly divided into two categories, one is hard and quantifiable, and the other is soft and unquantifiable. You already have some of these talents or potentials before you enter the workforce.
The former is the technical foundation, to this, the requirements of different posts are not the same. For example, in the past, you were required to know JavaScript, CSS, and HTML when recruiting front-end engineers. As the industry gets more and more developed, more and more things are required: React, Vue, TypeScript, data structures, networks, and so on. There are many of them are planning or soft engineering students in the university to learn the course. These are also relatively easy to learn, as long as you are willing to take a few months to learn, you will gain a lot.
The latter, the unquantifiable kind, is more difficult, and not everyone can do it quickly. Some people are born with these qualities, while others are stuck in the same place even after many years. These traits include, but are not limited to, learning, problem solving, communication, and leadership. At work you may find it very easy to talk to some colleagues. However, it is very hard to communicate with some people, and I want to break up a word and feed it to his mouth, which is actually a poor reflection of soft quality.
Having said that, how do you cultivate and build a foundation? My answer is: deliberate practice. Identify your weaknesses and practice them deliberately, over and over again. When I was a freshman in college, EVERY time I gave a speech on stage, I would be so nervous that I would shake and sweat. Then I tried to sell mobile phones at the university’s telecom office. In this way, I was forced to talk to many people every day, and gradually learned to speak calmly in front of the crowd. There’s a famous 10,000-hour rule that says it takes 10,000 hours to become an expert in a field. In fact, if you can practice something for 1,000 hours, you are very, very good.
Develop a taste for technology
Taste is a hard thing to pin down. For designers, aesthetic taste is necessary, for software engineers, also need to have an aesthetic for technology, need to know what is good, is elegant. And I found that technical taste had less to do with years of work and more to do with personal vision. When you see enough good things, you will gradually become able to recognize them.
So the only way to improve your technical taste is to broaden your horizons and read about good projects. Of course, this is not a recommendation to read all kinds of obscure source code. The front-end community often sees articles on source code analysis, many of which, in my opinion, simply translate the code and describe what it does in Chinese, with very little study of why others write it and what the design behind it is. Code goes out of date, but advanced ideas never go out of date.
Another book I would like to recommend is Refactoring, Improving the Design of Existing Code. Luckily, I found this book somewhere in the school library and it taught me what good code is.
Grow from your mistakes
We’re all human. We all make mistakes, and it’s perfectly normal for software developers to make mistakes. I heard from a senior in the company that young people are becoming more and more cautious and dare not make mistakes for fear of taking responsibility, but actually making mistakes has its positive significance.
When I first started working, I remember it was a Friday afternoon. I ran out of code, ready to finish the line and leave work early. The result was a misoperation that put the code for the test environment online. It wasn’t long before the office exploded, and everyone noticed that our front page went blank because all the online requests hit a machine in the test environment. The whole incident lasted half an hour. After that, I did my first case study since I started to work, and summarized some points that I still benefit from:
-
Don’t go online on Friday afternoon. Because if something goes wrong, it may cause your colleagues to work overtime with you. Reducing the frequency of coming online will certainly reduce the probability of accidents.
-
Keep awe of the online, do a good job of online verification in each link. This way, problems can be found earlier, if not intercepted.
-
Machines are more reliable than men. For this high-risk operation online, the process should be as automated as possible, to the machine to complete, rather than manual operation. Machines are much more reliable than people. This actually involves the construction of a company’s basic technology infrastructure, and large companies do much better in this aspect than small companies.
This kind of case can be remembered for a lifetime, which is very helpful for personal growth. Therefore, I would like to say that the most important thing is not to be afraid of making mistakes, but to learn from them and avoid making the same mistakes twice. By the way, when looking for a job, the team’s tolerance or error tolerance rate for new employees is also a factor that job seekers need to consider. A good team atmosphere will give new employees ample room for trial and error, which is very important for their growth.
Don’t limit
Don’t put limits on yourself. This can determine the ceiling of your growth. For front end engineers, for example, if you limit yourself to just one category, you might miss out on a lot of great things. Three years ago, he was a chetto, three years later, he is still a Chetto, but maybe he is a faster chetto, so the things that can be done are very limited. But if YOU put yourself into a larger field, as a software engineer, or to get involved in product operations, to understand financial knowledge, you will find that the world is a little bigger.
Being constantly exposed to new things can help us broaden our mind and avoid becoming a frog in a well. I’ve never liked the term programmer very much. Both programs and the techniques used to develop them are essentially tools. Be a master of tools, not a disciple of them. It is common to see communities arguing over which frame is better, React fans, Vue fans, and even attacking each other, like two workers arguing over which brand of sledgehammer is better. Black or white, it’s a good cat that catches mice.
Learn more about different fields, think outside the box, and change your perspective. Some questions may have different answers. What drives us to learn can be curiosity, interest, or simply the desire to make more money.
Is beginning to the end
Begin With The End In Mind is a habit mentioned In The 7 Habits of Highly Effective People. This habit is all about making something in your head and then creating it. In other words, thinking about a goal and then working hard to achieve it. A Meituan engineer included this as one of the principles in an article called “Ten Principles for Engineers to Improve.”
Before you do something, think clearly about the goal of doing it, and then formulate an implementation plan around that goal. It’s so simple, but unfortunately, it’s one of the things that we don’t think about. As a result, we may spend a lot of effort, but achieve little in the end, or even half work. This is especially true on technical projects, and I’ve made this mistake myself before. One day, I realized I could introduce some performance optimization techniques into the project to speed up the first screen rendering, so I started writing code quickly and went live quickly. Later, when PREPARING the presentation materials, I found that I didn’t even know how much performance was optimized, and it was still a negative optimization. For this example, when we propose to optimize the first-screen performance of the project, we first need to know the current performance status and the bottleneck of performance. Based on this information, we can make reasonable optimization goals, such as optimizing the first-screen time from 3s to 2S. Then the optimization is done, and finally the code is written.
In recent years, The OKR culture has been prevalent among Chinese Internet companies, and OKR is a powerful practice of the principle of beginning with the end in mind. This system is good in itself, but in practice, it has gradually become a formality and become KPI under the shell of OKR, which has also caused a lot of ridicule. This is a topic for another article.
Keep fit
This is also the most important point in my opinion, so I put it at the end. Health is the capital of revolution, without a healthy body, nothing else can be discussed. Health is something you don’t really realize how important it is until you lose it. Some conventional blessings, “good health”, “happiness” and so on, I found that is indeed the most needed and the most important things. So get more physical activity and get out more. Life is still very long, have a strong body, can normally go through this long road.
conclusion
These are the points that I think are very important in the development of engineers. Some ideas may change with age and experience, and hopefully they will, because if you stay the same, you’re not growing.
—————————————————–
Welcome to add wechat XXR0314 chat about technology, life, my wechat public account: bear writing place