Here are some of my reflections on how to improve at work.
So how would you get better at X?
X = Programming
- Trace code of smart programmers, learn their tricks,
- Learn how to navigate codebase using your favorite editors,
- Learn algorithm better, learn math better,
- Join an open source project, first contribute, then see if you can maintain,
- Always be open to learn a new language.
X = Machine Learning
- Try out a method first if it doesn't cause you too much to set it up. Get a feel of how the method works.
- Learn the principle behind the method, learn the math of the principle, learn the math of the math of the principle,
- Join competition, learn how winners think, e.g. many winners would tell you to explore data first, before throwing algorithms.
- Don't mix up train set and test set! But data Leakage happens.
X = Reading Literature
- Read everyday, make it a thing.
- Browse arxiv's summary as if it more than daily news.
- Ask questions on social networks, Plus or Twitter, listen to other people,
- Teach people a concept, it makes you consolidate your thought and help you realize something you don't really know something.
X = Unix Administration
- Google is your friend.
- Listen to experienced administrator, their perspective can be very different - e.g. admin usually care about security more than you. Listen to them and think whether your solution incorporate their thought.
- Every time you solve a problem, put it in a notebook. (Something which Tadashi Yonezaki at Scanscout taught me.)
X = Code Maintenance
- Understand the code building process, see it as a part of your jobs to learn them intimately,
- Learn multiple types of build system, learn autoconf, cmake, bazel. Learn them, because by knowing them you can start to compile and eventually really hack a codebase.
- Learn version control, learn GIT. Don't say you don't need one, it would only inhibit your speed.
- Learn multiple types of version control systems, CVS, SVN, Mercury and GIT. Learn why some of them are bad (CVS), some of them are better but still bad (SVN).
- Send out a mail whenever you are making a release, make sure you communicate clearly what you plan to do.
X = Math/Theory
- Focus on one topic. For example, I am very interested in machine learning these days, so I am reading Bishops.
- Don't be cheap, buy the bibles in the field. Get Thomas Cover if you are studying information theory. Read Serge Lang on linear algebra.
- Solve one problem a day, may be more if you are bored and sick of raising dumbbells.
- Re-read a formulation of a certain method. Re-read a proof. Look up different ways of how people formulate and prove something.
- Rephrasing Ian Stewart - you always look silly before your supervisor. But always remember that once you study to the graduate-level, you cannot be too stupid. So what learning math/theory takes is gumption and perseverance.
X = Business
- Business has mechanism so don't dismiss it as fluffy before you learn the details,
- Listen to your BD, listen to your sales, listen to your marketing friends. They are your important colleagues and friends
X = Communication
- Stands on other people shoes, that is to say: be empathetic,
- I think it's Atwood said: (rephrase) It's easy to be empathetic for people in need, but it's difficult to be empathetic for annoying and difficult people. Ask yourself these questions,
- Why would a person became difficult and annoying in the first place? Do they have a reason?
- Are you big enough to help these difficult and annoying people? Even if they could be toxic?
- That said, communication is a two-way street, there are indeed hopeless situation. Take it in stride, spend your time to help friends/colleagues who are in need.
X = Anything
Learning is a life-long process, so be humble and ready to be humbled.