這篇是跟 Prof. Ben 對話的最後一篇。在上一篇我們討論如何才能更有效的學習,以及教育的成功關鍵。在這一篇,我們會探索為何會有「10x programmer」這個說法,以及軟體工程師該如何讓自己的職涯持續成長。
Bernard: So Prof. Ben, you mentioned that the most effective way to learn programming is to practice. So does it mean given practice, everyone can achieve a similar level?
Prof. Ben: Programming requires a lot of practice. There is no escaping from it. But the problem with computer science is that when you get stuck in a problem, it's an unbounded time — there is no limit on how much time you may need to spend to unstuck yourself. So the speed difference between a fast student and a slow student could actually be significant.
That's why you have this so-called "10x programmers." It's not about typing speed. The main difference is that a 10x programmer may have much fewer bugs, so they can move on to write more code and get more practice. While a below average programmer may get stuck and need to spend substantially more time to debug and unstuck himself.
Bernard: Ah! That's interesting... I never thought of it this way. So programming is a skill that takes a lot of practice to get good, but for the same amount of time, the different people may have vastly different level of practice and therefore growth because the speed in which they grow can be very different.
Prof. Ben: Very very different. Exponentially different.
Bernard: Let me switch topic a bit. Many of our alumni, after working in the industry as a software engineer for a few years, they feel stuck. While they maybe making good money, they feel that they are in a routine. They still enjoy writing software, and they are learning new tools and technologies, but they don't feel they are growing.
Have your students ever come to you with similar problems? What's you advise to them?
Prof. Ben: For my students who are already in good companies such as Facebook or Google, it's kind of straight forward. There are two paths: one is called the "management track" and the other is called the "individual contributor" also known as the IC track. In these bigger tech companies, you really don't need to be a manager. Both paths are paid quite well.
The basic questions they need to ask themselves is whether they enjoy working with and managing people.
That's a very personal choice. But one think I often remind my students is that no matter where they work, they should be learning all the time. It may not always be technical things; it can be any random stuff. The key is the job should give them the opportunity to learn something new all the time.
So a very general rule, but often forgotten rule, they I tell my students is that the moment they feel there is nothing to learn in their jobs, they should consider changing jobs.
Bernard: Yeah, I tell my students the same as well.
Prof. Ben: I think that's good general advice, but what's not obvious is this: for most company, at the entry level what you need most is a solid set of technical skills — you can write good code and solve problems. But as you move up the ranks, your EQ becomes a lot important. People, leadership, and communication skills are more relevant to your success as you move up the company.
At the end of the day, what's important in life is two kinds of awareness: 1) self-awareness — knowing yourself and what you care about, knowing what makes you happy and unhappy, and 2) others-awareness — knowing how the environment works, and how others perceive things.
In my experience, you need both high level of self and others awareness to be a better manager.
Bernard: Thank you Prof. Ben! This has been a great conversation. We should definitely catch up more. Any last words of wisdom for our community?
Prof. Ben: For most questions in life, the answer is "it depends" but I hope I have given you some high level principles. I hope it's been helpful.
In this age of COVID and what's happening around the world, I think all of us should think more carefully about how we should live our lives. We live in a age of relative wealth, and most of us have a lot more options. So the risks is not that one would starve to death, but is that at the end, one may find himself ending up nowhere.
I really think persistency is very important these days. There are very few things that we do well the first time we try it. In my first semester as a professor, I get a 2. something rating as a professor. It was very depressing. But obviously, that didn't last long.
Bernard: XD
Prof. Ben: Sometimes in life, you just have to persist. I find myself say this more and more to my students these days: instead of worrying too much about choosing wrongly, you should persist for 2-3 years and see where it takes you.
這週末時間很趕,takeaway 我後續再補上。在這裡先分享兩篇 Prof. Ben 的文章:
in the past days, people stay in the same industry and doing the same job until retirement is pretty normal, but now the persistency becoming the issue lol.
@Swingcloud. Yeah. In general, our generation is relatively better off, there are much more opportunities. The "insta-everything" culture also makes peopel feel they need to succeed fast. But great things take time to build. At least I still believe in that.
Thanks for the comment @Swingcloud.