10-Minute Read

1983 words

I have been a software engineer for nine years. Ten years ago, I still had one year of student life to do things that office workers don’t have much time to do. I’ve taken some detours in the past. If I had myself as a career mentor ten years ago, I would definitely have a more successful career now.

Spend more time learning the basics in school: English, algorithms, and mathematics.

As a non-native English speaker, English determines whether we can compete on the world stage, have the ability to interview for international companies, have more career choices, and directly reflect on our salary. In addition to interviews, English materials are still the most abundant. At least the commonly used stackoverflow for software engineers is in English, and research papers in various fields are also in English. Now that large language models are booming, perhaps within a year or two we will be able to read these foreign materials in our mother tongue. In five years, everyone will be able to communicate in their own mother tongue. Perhaps by then the importance of English will decrease and even we don’t need to learn English but only learn our mother tongue. I can’t predict the future, but learning English well was very helpful to me ten years ago.

Algorithms are very important and theory is as important as implementation. The algorithms I learned in school were purely theoretical math classes. The popular online judge was UVA judge. Now maybe few people have heard of UVA judge. It is an online problem-solving website similar to Leetcode but not interview-oriented. The questions are not well classified, but at that time there were the most questions here, both difficult and simple. There were other websites but they were not better. codeforces did not appear until my sophomore year. To be honest, at work you won’t write any difficult algorithms such as dynamic programming or maximum flow, but having a good algorithmic concept can quickly convert your ideas into efficient code, which is very helpful for software development work. I would tell myself ten years ago to learn algorithms well and it would be very helpful for work and interviews.

Algorithms can also be considered a kind of mathematics, but for machine learning engineers there are many important mathematics besides algorithms so I separated it out. I now regret that I didn’t learn statistics well back then. Machine learning is a very math-intensive subject. I would tell myself ten years (or fifteen years) ago to take as many math courses as possible and understand important concepts. At the time there may be a lot of homework and it may be tiring and you don’t know what to do with what you have learned. Indeed, most things are not used by an engineer who does not do academic research, but concepts can help us better understand what is happening in the model so that we can adjust it more effectively.

Non-technical things are just as important as technical things, if not more important.

In college, I particularly admired classmates who competed in the International Olympiad in Informatics in high school because their programs were always written quickly and well. In my freshman year, I had to write homework for more than ten hours. They finished it in five minutes after reading the question and typing. The gap was so huge. It feels like there is a trend in the information field that particularly admires technical gods. Undoubtedly, they are very proficient, but for ordinary people like us to be a software engineer, unless we start our own business to do software alone, we will definitely cowork with other colleagues to complete the company’s products. If we are more senior, we may even have to represent engineers to communicate and coordinate with colleagues with non-technical backgrounds. At this time, communication and interpersonal relationships are very important. The more senior you are, the more important for these non-technical skills.

During the interview, there is usually a question about personality traits (or behavioral questions), such as the biggest setback you have encountered in the past, what to do when you disagree with colleagues and superiors, and so on. When preparing for interviews in the past, I always ignored these questions and felt that it was enough to prepare technical questions well. At most, I only prepared a self-introduction. As a result, I missed several offers and affected my current salary. These questions can be prepared in advance. I have interviewed McKinsey’s data science consultant before, so I studied the interviews of top management consulting companies. Once I look at it, it’s amazing. The answers given by the mock interviews on Youtube are all super proficient, so proficient that seems they are carefully crafted. Fortunately, general software engineer interviews do not need to be prepared to this extent. The industry benchmark for behavioral questions is Amazon’s leadership principles. Preparing according to them can achieve good results. The time spent is much less than practicing Leetcode and is very helpful for interviews.

Be brave to invest in yourself.

Investing in finance has a compound interest effect, and investing in yourself also has a compound interest effect. The skills learned today can help you learn other skills in the future. The younger you are, the lower your salary, but the earlier you invest, the greater the compound interest benefit. The best investment I made when I was young was to spend 2,000 USD to build a deep learning computer in 2018. In 2019, I teamed up with friends to compete in a Kaggle deep learning competition and won a silver medal. At that time, I had no deep learning experience in the company. This achievement was mentioned every time I looked for a job later to prove my ability in deep learning, my enthusiasm for machine learning and my ability to learn quickly. It allowed me to be admitted to a position that required deep learning experience without having deep learning industry experience (only machine learning experience). The project completed by this new job allowed me to tell a good story when looking for a job interview in the future and prove that I am a good senior engineer. Everything is interrelated. Financially speaking, my monthly salary at the time was only slightly more than 2,000 USD. It was a lot of money for me at the time, but this investment made it easier for me to change jobs and increase my salary later. The benefits far exceeded 2,000 USD. Of course, winning a silver medal in the Kaggle competition is not something you can get by spending money. It also requires a lot of time investment. The earlier you invest, the sooner you will enjoy the results of your investment. Therefore, the best time to start is ten years ago and secondly now.

Working hard in the right direction is twice the result with half the effort. Learn from the masters on the Internet.

In the Internet age, almost all topics can be found on the Internet to share by others. The Internet can find content from all over the world. My first job after graduation was in a startup company that had just completed its A series fund raising and had only 50 employees. Compared with mature large companies, startups do not have good systems. It is more important to quickly produce results and achieve business success to ensure the survival of the company than long-term planning. In that environment, as a software engineer, I was too focused on technology and quickly completing projects and ignored things other than technology. Later, I watched classmates who joined at the same time or later than me have more successful career than me, but I didn’t know what I did wrong and didn’t know how to seek help. Now I know that there are actually many staff engineers from Silicon Valley big tech companies sharing on Youtube how they promote to this level and how they succeeded in their careers. Software engineers are very willing to share. After watching their sharing, I realized that I had ignored many things that were as important as technology in the past and knew that when I encountered career difficulties, I should discuss with my manager and seek help. After all, if I can perform better, it will also be very helpful to my manager. I should treat my manager as a teammate at work, not just a manager. If I knew these things back then, my career would definitely be better than it is now.

For software engineers, I recommend Rahul Pandey’s channel. He is a former Meta E6 staff software engineer and now an entrepreneur. The product is a software engineer career community Taro. The videos are very informative and the community is even more informative. It is very difficult to promote to staff engineer in Silicon Valley big tech companies. Most people cannot promote to this level in their lifetime. According to data from Chrunchbase, Taro was founded in 2022 and Y Combinator and She’s Independent invested $500,000 in pre-seed round in 2023, which is also a great achievement.

Of course, not only can you find sharing about work, but also investment and financial management, interpersonal relationships, etc. There is a lot of information and you must have the ability to think independently and judge which information is helpful to you. Sometimes it is difficult for oneself as a novice to judge whether the information is correct or not. In this case, I will value two points:

  1. Are the past achievements and experiences of the sharer is what I want to achieve too? Is the content they share still applicable when I am learning?
  2. Who would recommend this sharer? Does the recommender understand this field? Is the recommender proficient in this field?

Be brave to express yourself and take risks in your own name.

There is a series of tweets by Naval Ravikant on Twitter that talk about this. In the Internet age, it is possible to get rich without luck:

  1. Have professional skills.
  2. Use the Internet to scale professional skills to solve many people’s problems.
  3. Use your own name and be responsible for the results.

In the past, I always thought that I was not the most proficient, so what qualifications do I have to teach or share? Of course, I am a better than before, but the world is so big and far from being the most proficient one. The first reason for coming out to share is that what is really written down is what I really understand. Through writing, I am also growing; secondly, people who are better than me may be busier than me and have no time to share; thirdly, the master is too proficient and the shared things may not be so approachable. The perspective of ordinary people like me will also help this world.

Of course it would be great if I could make a fortune by writing articles. However, I use Google Analytics to monitor traffic on this blog. The current traffic is still far from making a fortune and the probability of making a fortune is low. However, nothing can be done overnight. The earlier I start the better. These accumulations also have a compound interest effect on life: past accumulations will help future growth.

Conclusion

My 5 career advices to myself from ten years ago:

  1. Learn the basics.
  2. Don’t ignore things other than technical knowledge.
  3. Be brave to invest in myself.
  4. Learn from the masters on the Internet.
  5. Be brave to express myself and take risks in your own name.

Although I am a software engineer, I think these suggestions are equally useful for other fields. I really wish someone had taught me these things ten years ago, but starting now, there are world-class masters on the Internet in various fields teaching me everything I need.

comments powered by Disqus

Recent Posts

Categories

Tags