Advice to the young

I notice I haven't written any advice posts recently. Here is a collection of my advice posts pre 2020.

I've been feeling all this elderly wisdom pent up in me, ready to pour at any moment. So here it goes. Get ready to quench your thirst from my fount of wisdom. No man, think for yourself, only get what works for you.


It is called foundations, not theory

Foundations of computer science (or rather any field of study) are the most important topics you can learn. These lay down the frame of thinking/perspective for that area of study. Yet, I am saddened to hear these called as "theory", and labeled as "unpractical". This couldn't be farther from the truth.

Take a look at how I recommend studying distributed systems. Don't you dare call this "theory" and "unpractical". This lays the bedrock that you build your practice on. Don't skimp on the foundations. Don't build your home on quicksand.


Keep your hands dirty, your mind clean

True understanding comes from applying what you've learned. If you don't put to practice what you learn, you haven't really learned it, have you?

So, keep your hands dirty in your field of study. If you don't write and experiment with TLA+ spec, you won't truly understand how things can go awry with your distributed systems design. If you don't write low level implementations and later observe them in production, you won't really understand which issues to prioritize for your distributed systems designs. 

I say keep your mind clean, because you should not get lost in the implementation details, and you should see the mapping to the high level algorithm, and to the foundational concepts. Chances are that you will figure out a simpler way of doing the concrete work by mapping it back to the abstract plane, if you keep a foot in each plane.


Ship something, anything, weekly 

A bee that doesn't produce honey is just a pest. Producing something small each week is key to keep your muscles from atrophy. Think of it as investing in your skills piggy bank every week. This way you also accumulate work that you can later draw on to compose something bigger. 

What you ship can be as small as improving a piece of documentation at work. Or you can maintain a blog that nobody reads, and summarize what you learned each week. My blog didn't get any pageviews in the first three years. One day someone (often your future self) will appreciate those contributions.

Do good and throw it in to the sea. If the fish don't appreciate it, God will. - Middle Eastern Proverb


Cram for the deadlines, put your heart into it

Without deadlines nothing gets done. Don't be afraid to put your heart into your work to ship on a deadline. When there is a will, there is a way. Your desperate attempts at making something happen would often lead to your most focused and productive (and sometimes creative) work.

Yes, don't burn yourself out, but also don't back away from a good fight. Sweat and tear equity is important, this is how you grow. Draw from your emotional strength, and don't forget to replenish it with self-care (exercising, hobbies, and meditation).


Ask and you shall receive

Young people, and introvert people of all ages, are often too shy and too late to ask. They also don't realize how heavily they get penalized for this. Steve Jobs has the following vital advice about asking.

Don't make assumptions about why something would never work. Some people are are too lazy (fearful?) to even Google for information out of their conundrum.  Getting help from ample online resources is important, but asking help from the people who have gone through the same journey is even more important. Let me illustrate with a Nasreddin Hoca story. Hoca falls from his roof while trying to mend it. He is in pain on the ground, unable to get up. All the neighbors crowd him, saying that they should fetch for a healer. Hoca stops them, and tells them "Nevermind the healer, first find me someone who fell from a roof. I need that guy's advice first." This story talks about the importance of real-life first-hand experience. 


People skills are very important

The point about asking people for help brings us to the topic of people skills, so called "soft skills". I don't get what is soft about these skills, these are the hardest skills to master and the most crucial for success. But again, most young people fail to recognize how important these are. Heck, I still blunder on these.

Since these are hard, I don't have good advice here, other than to say, find yourself good mentors. Make sure they are the right mentors, and they are good people. (How do you know this? Yeah, soft skills, my ass!) Be open with them. Be coachable, and not obstinate. Don't waste their time. 

Learn to communicate well. Spend many folds more time than you think is sufficient to improve your writing and presentation. Not a second of this work goes to waste. Really, just read through the Writing/Presenting section here.  


Manage the stories you tell yourself

The stories we tell ourselves (knowingly or unknowingly) are very important, because they determine how we manage our emotions, which in turn determine our success. 

You should cherish your small successes to build motivation. You might get demoralized from failures, but you can reframe them to learn from them, and use them as leverage to drive to your next small success. You can even change the narrative on failures as a setback in your hero's journey.


Cultivate deep focus through deliberate practice

I have written about these earlier. It is important to cultivate deep work through practice. Human brain is programmed to save energy and go easy on itself, so it prefers shallow tasks (such as watching TV, web browsing, answering emails) and tries to avoid intense thinking sessions required for many creative tasks such as writing, thinking on a proof, and designing an algorithm. As a result, we accumulate a lot of bad studying habits: we seem to be working but we take it slow, we get distracted with other thoughts and break our concentration. In other words, unless we are deliberate about it, it is easy to switch to a superficial shallow work mode, rather than an effective deep work mode.

Also read deeply

Comments

Popular posts from this blog

Hints for Distributed Systems Design

Learning about distributed systems: where to start?

Making database systems usable

Looming Liability Machines (LLMs)

Foundational distributed systems papers

Linearizability: A Correctness Condition for Concurrent Objects

Understanding the Performance Implications of Storage-Disaggregated Databases

Scalable OLTP in the Cloud: What’s the BIG DEAL?

Designing Data Intensive Applications (DDIA) Book