On one hand, like math, coding provides some fundamental training that should definitely be learned by everyone.
On the other hand, it is a design problem if everyone has to learn coding just to build or use software tools.
In the current state of computer science, it remains unclear (at least to me) which parts are fundamental materials and which parts are design artifacts. The former can be distilled into general teaching curriculum while the latter should be fixed.
Ideally, an entrepreneur with core knowledge in math and programming should be able to create his or her own applications without having to write a single line of code.
This is already happening in certain domains such as mobile app development.
I am in a constant process of helping students and postdocs landing jobs.
One thing I find very common and extremely interesting is the discrepancy between self-perception and reality. That is, candidates tend to have a higher estimation about their own qualifications (and thus higher expectation about the job offers they will get) than what reality would warrant.
This is just human nature. There is very little I can do; few took my advice, and many learned the hard way. But I guess this is how life works.
Humility is a virtue that we all learn eventually, one way or another.
Doug Burger, my last MSR manager and a former UT professor, shared with me some very valuable personal experiences when I was heading the opposite way.
One of these, as quoted from him, is: there are pockets of inefficiencies in a school that are rarely seen in a company.
After witnessing some of such pockets myself (you are absolutely right, Doug), I realized that the right approach, as any good engineer would do, is to accommodate these inefficiencies into the design of my products and processes, so that I would not be negatively impacted under any circumstances. It is basically the same as, say, designing hardware processors which can tolerate a range of temperatures, and software interfaces which can deal with different user inputs.
Self: Good engineers never assume optimal conditions. Rather, they build things that can function under a wide range of possible scenarios.
I guess this could be a fundamentally different mentality from people with pure academic background.
I agree that there is enough inefficiency in the world that can allow really smart people to make a lot of money while having a lot of fun by moving things around.
But we all know the field is already quite crowded. Why do you want to just move things if you can create things? There is only a finite amount/variety of things to move, but infinite amount/variety to create.
To me, creating things is just more fun, even without the money factor. And you can make even more money if you can create the right things.
[Background: Most of the headhunter inquiries I have received since 2001 are about moving things instead of creating things, even though I have been spending my entire career in the latter. They said "my profile might fit", but I never see why.]
My grandfather, during his school professor days, once spent a lot of efforts bringing up a not very talented student into success beyond anyone’s expectation. My father liked to tell this story as how much passion and skill my grandfather has in people development. I agree on that part. However, I also think my father’s argument – and my grandfather’s action – is irrational: with the same amount of time and efforts, my grandfather could have helped several more talented students succeed, who collectively would have made the world an even better place. (Read: opportunity cost.)
There is a difference between doing the good thing and doing the right thing. And there is a choice between becoming a good person or a great person.
PS: I never had a chance to settle this debate with my grandfather; I started mentoring students just around the time he passed away.
Public speaking is the number one fear reported by people in the US.
Many people, at least in the US, like to go to parties.
For me, it is the exact opposite.
The bigger the audience, the easier I feel.
Giving a large conference talk is the most comfortable; I totally control the script and there are so many people that they become anonymous, blank, and non-human.
Teaching a class is slightly trickier; I am still in control but have to interact with students sometimes, potentially disrupting the flow and raising my awareness of their human presence.
Small talking in a social gathering is the most energy consuming; it is entirely ad hoc and I have to read people and react in real-time.
Is this extrovert or introvert? I guess it is something orthogonal. Maybe it is “sociability” before I can find a better term.
I heard some recent conversations among faculties about why they should not take the very top students because they might go somewhere else in the end.
If even you do not think you are the best, how could you make others believe in you?
I think I am as good as anyone out there, so my strategy is very simple: take (as my internal students) only those who are so good that I will regret for not taking. If they deflect to other places in the end, fine, because I will likely at least keep some of them. And even in the worst case I get no students, I can just single author SIGGRAPH papers. (I seriously miss the fun.) Or spend some time away living in Nepal. All these beat wasting time on not-so-good people, or worse, thinking I am one of them.