The Coding Career Handbook — My Thoughts
Tags: career, selfimprovement
Published: 2022-05-24 10:43:18

_This is a repost from my [blog](https://jianrong.dev/blog/the-coding-career-handbook)._

## How and Why I started reading the book

I first got to know this [book](https://www.learninpublic.org/) from a Twitter thread as I was scrolling through Twitter. Having just got my first internship at [99.co](http://99.co) as a Frontend Engineer, I decided to start reading this book to see a compilation of advice from someone ([swyx](https://www.swyx.io/)) with lots of experience. I spent most of my weekends for the past few weeks going through the book, and I do not regret it at all. It’s the best piece of compiled knowledge I have ever read and it gives you advice which are specific enough to be actionable, yet generic enough for most developers to be able to apply.

This article will be a summary of the most relevant points I have learnt from the book and what I will be doing in the future to apply this knowledge. If you are more of a fan of Twitter threads, I have also done a much shorter Twitter thread [here](https://twitter.com/jianrong7_/status/1529047825908019201?s=20&t=WSGEg23Ywq-cc2DfoiHHyw).

## The most important sentence IMO

> The code will always be the easiest part of a coding career.

As an intern, I did not understand how this could be true! I spent so much time learning JavaScript and then React from scratch, and now you are telling me that all that effort I put in is the easiest part of my career.

After reading the book and having worked as an intern for 5 months, I agree whole-heartedly. Getting good at things outside of VSCode is so important, these are the things which will probably help you progress through the ranks and command higher compensation and value. These skills include estimation (still very difficult for me), leadership, and even writing good documentation. I have managed to practice all these skills during my internship, but I still have a lot more room to improve, which will probably come with time and experience as I practice more. After all, the book has mentioned that practice will make you better, and quoted Dan Luu that being [better than 95% of people is not difficult](http://danluu.com/p95-skill/).

## 3 Relevant and Key Points that stuck with me

### Learn **MORE** in Public
    
swyx is a strong advocate of [learning in public](https://www.swyx.io/learn-in-public/), and he is known as “that guy” for learning in public. I am convinced and I am going to start my journey of learning in public. However, learning in public does not mean you should do **all** your learning in public. I think a better phrasing would be to learn **more** in public. i.e. Instead of 0%, 20% of your learning should be in public.
    
This ties in with “Open Sourcing your Knowlege”. By learning in public and putting information out there, you are putting your learning on turbo gear, something swyx calls the [Big L notation](https://www.swyx.io/big-l-notation) (derived from the Big O notation). Through providing free resources of good value, it will definitely “Spark Joy” and help you make more friends while you sleep ([Friendcatchers](https://www.swyx.io/friendcatchers)).
    
### Good enough is, well, good enough
    
As a human, I think it is easy to compare yourself with others, and suffering from [Imposter Syndrome](https://en.wikipedia.org/wiki/Impostor_syndrome) is very common. This chapter emphasises on why we should be content with what we do.
    
You move fast and feel less stress. I think this is the most compelling reason. In our fast-paced world with so much information, it can be very easy to feel overwhelmed. Knowing when is “Good Enough” will give you the opportunity to put things down and move on. You will not feel so stressed out being stuck and not knowing what to do.
    
Seeking the best also has several hidden costs.
    
- Happiness: You don’t always know that you’ve got the best
- Cooperation: Looking for the best transforms your world into a zero-sum finite game rather than a positive-sum infinite game
- Efficiency: It is inefficient ([Pareto Principle](https://en.wikipedia.org/wiki/Pareto_principle))
- Agency: People game “best-seekers” all the time, by defining for you what “best” is

This also applies to Engineering, when picking a framework or technology, know that there are tradeoffs to everything and just know “enough” and be confident about your pick.
    
Of course, learning new stuff is never easy, it requires you to be at the edge of your comfort zone. Being “good enough” may not cut it all the time. Learn to differentiate that. Pace yourself when learning new things, churn is high in this industry, do not burn out.
    
As what my mom always tells me in Chinese, “人没有完美的，人要满足就好了“, which roughly translates to “Humans cannot be perfect, humans just need to be content”. I think this chapter has given me enough reason to believe so, and made me more conscientious when I set deadlines to my projects.
    
### Actively find opportunities to add value
    
This is not the exact point made in the book, but it is kind of adjacent to all the advice swyx has given throughout the book.
    
When learning in public, find out the resources the community lacks, and be the one to create it! This can come in the form of cheatsheets, blog articles, tutorials, or even videos.
    
When coding for your company, write test cases along with it! Tests are never enough and many companies just want to move fast at the expense of stability and tests. Tests are good because you will not break things and you will also learn more about the product itself.
    
When picking up something new that interests you, do *cool shit*. These stuff add value because they increase awareness and they allow you to try out the new technology. This is what swyx means by “Picking Up What They Put Down”. Activity on the internet has an insane [Zipf’s Law](https://en.wikipedia.org/wiki/Zipf%27s_law) distribution — whereby 90% of the people view content without contributing, 9% edit or modify that content while 1% of the people create content.
    
This is my effort in trying to become part of that 1%. Let’s see how this goes!
    

It is a crime to summarise what I learnt from this book into 3 points, but for the sake of simplicity, I will stop here. Simplicity also helps me focus on the key points I learnt and really integrate it into my life.

## Things I have actually done since reading the book

As an intern, I think Chapters 2-5 are the parts of the book I relate to the most. Here are some things I have done because the book said so/I was inspired by the book.

- I have made (small) contributions to Open Source
- I have began to write more tests, both for my company and personal projects
- I have learnt that [DRY](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) and Clean Code are merely rules of thumb, they do not and should not apply to every situtation in real life
    - My Team Lead prefers [YAGNI](https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it)
    - DRY is good when the code is actually the same, not somewhat similar
- I have said more “yes” to anything that came my way
    - Had the opportunity to present in front of my team
- I have done things that does not want to be done
    - Making my company’s website responsive
- I have become more proactive in asking for what I want — Getting the opportunity to write for my company’s technical blog
- I have asked better questions — Provided context about the question, recalling what I have done to fix it and what error messages are showing, accompanied by pictures and short video recordings
- I have learnt to accept tech debt, and not all legacy code should be migrated
    - The reason why it is important to think twice before migrating legacy code is that, this piece of legacy code has been working at scale. Who knows whether the newer piece of code will still be working at scale and you would have to spend time debugging it?
- I have broken production — and learnt how to fix it
- I have learnt the importance of having good documentation, and thus written more documentation
- I have learnt to work with non-engineers and communicate my ideas to them
- I have learnt to be more aware of my commits and PRs
    - I include much more detail in my commits and PRs now, hopefully they will provide context and will inspire the future developers to do the same
    - I have begun doing this since seeing my co-worker including details in his PR

## The most important chapter by far - The Operating System of You

When swyx said he would save the best for the last, he really came through with it. This chapter is so so important, yet it gets so little attention. Taking care of yourself is so important. This career is a marathon, not a sprint. Take care of your family, your faith, your hobbies, your fitness, and your sleep. Your hands, back and brain are the money-makers. Take care of them. Make sure your setup is ergonomic. Also, find your drive, and keep it alive. It is the thing that will get you through tough times.

I am also guilty of staring at my screen for too long. I grew up with no signs of myopia, but recently, having to sit in front of the computer screen for prolonged periods of time made me rely on my glasses a lot more. Now, I set an alarm to remind myself to get up from my seat, take a break, wash my face, and rest my eyes. Yes, it can be disruptive to your workflow, but it is beneficial in the long run and my eyes feel much better at the end of the day.

## Things I missed out in this article

As I said, I want to keep this article short, yet informative. There is no way I am able to cover as much content as a book can. Therefore, there are many things that I missed out that I still felt that it was important. Here’s a quick fire list of some.

- Platinum rule: Treat others as THEY want to be treated
    - Forces you to get to know the other person
- Learn to reason from First Principles — [it is the dumbest thing smart people do](https://byrnehobart.medium.com/reasoning-from-first-principles-the-dumbest-thing-smart-people-do-46ff1cbba867)
- Learn to bet on technologies by being aware of megatrends
- Always negotiate your compensation package — it is probably the highest ROI thing you can do
- Keep building your brand and keep marketing yourself
    - [Marketing yourself is your Plan B](https://www.software-engineering-unlocked.com/developer-security-troy-hunt/)

I hope these points are convincing enough for you to actually pick up the book and read it!

## Conclusion

It was such an easy read and I took down many notes while reading the book! I also got the permission of swyx to quote freely from the book, so I hope I am doing it justice. This book has also left me with so many other book recommendations which I will embark on in the near future.