The Beginners Guide started as a project to help me and others get up to speed on PostHog's tech stack. I also wanted to include bits of advice to make the process encouraging to make working on PostHog even better. I needed this approach personally since I've been hardcore programming in other languages and tech stacks for years so most of PostHog's tech stack was newish to me.
Consider your learning style
Some people like to jump in and go. Some people like to read the docs. I'm the latter. Another way of saying it that I'm a holistic learner. My plan was to spend part of the time accomplishing work given to me and part of the time on intentional education. The point is to know your own learning style so that you can be effective. To that end, if you're a get started now type, you'll appreciate the getting started section.
It's also important to note that whatever you learn needs to be reviewed several times. It doesn't matter what learning style you have because review is essential to learning from a neuroscience perspective. If you create small exercises for yourself such as the projects I've created in this repo you'll do even better. The good news is that this process doesn't take up an extraordinary amount of time.
A word about mindset
You get more than you give.
My mindset is one of wanting to get the most out of life. For me, in part, that means being excellent and taking full ownership of my career. Learning new material can be overwhelming not to mention difficult. But remember this: it's worth it! Investing in yourself makes for a better, more capable version of you. Therefore, trust the difficult process of learning and elevate your skills. The future you will thank you for your hard work.
If you get discouraged come back to this section.
What has helped me personally
First thing to remember: starting a new job is like beginning a book in the middle of a series where the characters are well-formed, and the story is far along. It's fair to say, you have no idea what is going on. You can read words and understand but not understand why they are being said. There our goal is to develop a solid mental model for the codebase.
“You don’t care about the answer until you have the question.” - Unknown
- On my first day, I was given an assignment to work on. It began the process of showing me what I needed to learn. Struggling to complete the assignment helped me to have the question from the quote above.
- Reading the project structure doc
- Browsing the issues in GitHub by playing with the various labels. This helped me get a better feel for PostHog's communication style and open-mindedness.
- Pairing with Tim & Eric. They used devtools to examine network traffic, console.log, and I was able to ask specific questions. It was basic stuff and reminded me to use the basic tools I've been using for years. I guess the anxiety of a new job confused my brain a little.
- Reading the kea docs. This is clutch to understand the frontend. It's a rather nice library but you won't make progress without understanding Kea.
- Creating a simple app with create-react-app with typescript support
yarn create react-app learn-kea-typescript --template typescript
"Take care of yourself. There's no need to burnout in the first month." - Eltje
- Eltje encouraged me to take care of myself, so I did.
"So, what?!" - Dare: The New Way to End Anxiety and Stop Panic Attacks where "D" stands for defuse the anxiety by considering the worst and saying so what.
- Often I felt anxious about my daily contributions. Using the quote above really helps deal with this kind of anxiety. So what if I fail to deliver these assignments timely?! I'm an expert and in time I'll be a great asset to PostHog.
- Additionally, it's important to remember to trust the process. Being new (bad) at something isn't a great feeling initially until you realize that it's a part of the process. Soon you'll be good. It's better to reframe and remember that you only get to have new eyes once. Plus, it's fun to learn new things.
"When you are working, close your email and slack. No one is watching to see if you are online. In fact, it's the opposite." - Tim, CTO
- Tim told me this on the first or second day, and it was liberating. It allowed me to think of my role as a true
asyncopen-source contributor. Do what needs to be done so that you can be the most effective.
Read the docs
- For my learning style, this has been a must. I'm keeping a list of resources for learning I've used.
- I also spent time creating projects as you see in this repo which helped me consolidate the knowledge I was gaining.