Onboarding Guide#
Note
🌙 The dropdowns on this page don’t display well in dark mode.
You can switch to light mode by clicking on the “🌞” button at the top-right of the page.
If you are considering contributing, welcome!!
rootski is run like a tech startup, so the onboarding process feels similar to starting a new job.
The onboarding process will guide you through…
💬 introducing yourself
⚡️ getting access to systems (Slack, ClickUp, GitHub, AWS, etc.)
⚙️ setting up your development environment
🧱 familiarizing yourself with the rootski architecture and our development practices
😎 picking up your first project!
📚 (if you want) creating a learning plan to get the skills you need for your project
The process is completely asynchronous so you can take it as fast or slow as you like 🙂.
Why contribute?#
⚠️ Disclaimer, please read!
Contributing is 100% “free labor” in the sense that Eric Riddoch owns the rootski project.
Please *do* or please *don’t* contribute based on what you think is best for your career and personal growth.
The value of contributing to rootski is in getting to work on part of a real product, having mentorship, and experimenting with tools you don’t use at your day job. Whether or not you’re experienced, that “mentorship” looks exactly the way it would at a paid job: we’re a bunch of non-experts working together, some of us knowing more about certain technologies than others.
For Eric, this project is about learning/mentoring. He’d prefer to move slowly so that people can learn rather than push people beyond what they are comfortable with.
Eric pays $20+/mo (sometimes $50) on this and earns nothing. If that ever changes, he will be clear about that. If anyone were to be paid to work on this, the project simply wouldn’t be possible. Eric is happy if the work we’re doing here does nothing more than give people career opportunities and help remove confusion about how “real” software is built.
Many of the contributors make sacrifices offering their time and mentorship working on this project. Please don’t criticize our motives. We truly do want you to do what’s best for you. This model for building a product was inspired by this podcast interview with the creator of the Python discord channel.
Eric finds their intentions to be genuine. Please know that for over a year, Eric has “sunk” many evenings and weekends mentoring engineers and has seen no personal “return on investment” outside of relationships; he will gladly continue to do so, time permitting.
Feel free to reach out to any current or past contributors to ask them about their experience.
Fun, motivational story#
No need to read this if the amount of text is overwhelming 🤣
Hi! This is Eric… writing in the first person, now 🤣.
This is the original rootski architecture from late 2020.
I entirely credit this diagram for getting my current job (which I love) and my recent promotion to “senior” engineer.
I majored in math and took a handful of software classes at BYU in the USA.
During school, I worked as a B.I. analyst building dashboards with SQL and then worked on a data engineering team for a year.
Before and during this, I took some cheap 3-5-day online coding courses and made several small passion projects. These did a lot to help people take me seriously enough as a “coder” to get that first data engineering job.
I had a lot of fun building my projects, but by early 2019 I was tired of making “toy” data science / software apps that no one used. I had been working on a mobile app version of rootski before that, and I decided to pick it up more seriously.
Through a connection at BEN (my current job), I started interviewing for an “MLOps” position. I had been working on rootski at the time and sent people on the team this diagram of what I was building.
When my current manager and some other team members saw this, the interviews stopped. The rest of our calls turned into “is this job something that you want?” It was awesome 😃. That was the first time I’d been treated like that when interviewing. Since then, rootski has come a long way and I’ve learned a ton.
rootski has given me fantastic experience with some advanced software/data science concepts like “infrastructure as code”, “continuous deployment”, “functional testing”, “container orchestration”, “deploying models”, tracking data science experiments, security, structuring a frontend and backend codebase, and a whole bunch of other things.
Multiple times, I’ve felt like a genius at work when problems come up that I have already solved with rootski. I have copy/pasted portions of the rootski codebase that took days of thought to solve the same problems again in less than an hour. That’s such a cool feeling, hahaha.
It’s my opinion that in tech,
Not everyone agrees with this, but enough do that my work with rootski has given me a lot of cool opportunities.
I used to pair-program with people from school or LinkedIn to help them get started with similar things, but it became too time-consuming. Now, I use rootski as shared personal project with lots of asynchronous resources for less experienced people.
At first, rootski was my solution to the “how do I get a job without experience and how do I get experience without a job?” problem. Now it’s my outlet to play with tools I don’t use at my day job and mentor people.
I’d be stoked if, at some point, some paid component of rootski could start making enough money to pay for the infrastructure costs, but I’m not too hung up over that. For me, working on this has easily paid for itself in job opportunities, raises, and fun.
Things to help your career#
We want contributing to be awesome for your career. This is a constant topic of discussion in our chat.
Here are some of the current initiatives to benefit contributors:
🔎 Giving meticulous, constructive code reviews
Getting comments from more experienced engineers is extremely beneficial. It tends to be harder to get this kind of attention on your code when you build things solo.
🙌 Posting contributor spotlights on our LinkedIn Page
These are short writeups about each PR (or other contribution). We could do the same with Twitter. The posts…
spotlight the contributor and how they achieved what they did
tag the contributor at the top and several other contributors/followers at the end
ask contributors to share the post to their networks
link to the PR, a preview, or something else people can see
👩💼 Defining job titles that contributors can post on Linkedin
After completing your first non-onboarding ticket, you can list rootski either as a “work experience” or as a “project” on your LinkedIn profile.
🔗 Open-sourcing the codebase
This way, contributors can show off their work by sharing links to exact files, commits, PRs, etc.
Everything that can be public will be. The most sensitive, proprietary part of rootski is the dataset, so we made only made a subset of that open-source.
🌄 Promoting everyone’s pictures, LinkedIn profiles, contact info, etc. on…
[To do] rootski.io
The GitHub README
The homepage of the knowledge base
Anywhere else that makes sense 😃
How to get started#
We keep track of the ongoing/upcoming work on rootski using a “ticket board” tool called ClickUp
The onboarding process works the same way 😃.
Reach out to Eric on Slack to create a set of onboarding tasks for you on our ClickUp board.
In the meantime, we have copies of most of the tasks we will generate for you right here!
They go roughly in the order you should prioritize them.
💬 Join Slack - Do this first!
🔥 Set up Slack#
Project Context#
Join Slack using the link on the homepage of the knowledge base.
The team is really cool. Please introduce yourself!
Project Requirements#
Use the invite link to join our Slack channel
In #general, introduce yourself to the team answering these questions. We try to keep these informal and fun 😃
Where are you from?
Where are you now?
How long have you been coding/writing software/doing data science/doing what you do?
Did you go to school or do any other type of training?
Which parts of Rootski are exciting to you?
What are some of your career and life goals?
How fast/slow would you like to onboard and contribute (roughly, it changes for all of us)
In the “What I Do” section of your profile, enter your email address so we can see it when we hover over your name. It’s best if this is the email you use for GitHub and ClickUp.
Add a profile picture.
💻 Get GitHub access
🔥 Set up GitHub#
Project Context#
The rootski codebase is on GitHub.
You can find a link to the repository on the knowledge base.
An admin needs to give you write access to the repository so that you can,
comment on “pull requests” (reviewing code written by others before it gets merged in)
have your profile picture added to the rootski README and knowledge base
contribute code yourself
Project Requirements#
If you don’t have one already, create a GitHub account.
Go to your GitHub profile and upload a picture. This is the picture that will show up all over rootski after your first code gets approved.
Send Eric your GitHub username and email address so that he can send you an invite email.
Accept the invite to become a collaborator.
(Optional) ⭐️ leave a star on the repo 😃.
✉️ Get ClickUp access
🔥 Get Access to ClickUp#
Project Context#
ClickUp is our project management tool. It’s a competitor to Jira and it is awesome.
Working with ClickUp will be a highly valuable experience as it as almost ALL software teams use Jira to keep track of work in progress and plan their roadmap.
Reach out to Eric so he can send you an invite link and assign cards to you.
Project Requirements#
Get a ClickUp invite link from Eric. Someone will create several onboarding tasks for you 😃.
Accept the invite.
Nag people again until they have created onboarding cards for you 🤣.
Browse the cards on the rootski board to see what kinds of projects have been talked about for rootski.
🧱 Familiarize yourself with the rootski architecture
⭐ Understand the Rootksi Architecture#
Project Context#
🗒 Note 1: This task still uses the old knowledge base website. Sorry for the confusion of having two sites! We’re in the process of migrating the Notion site to docs.rootski.io. The high-level architecture page in the new site is the most up to date. The subpages of the old site are also up to date.
It’s important that you understand the whole architecture of rootski at a high-level, even if you won’t be contributing to every part.
Please read the rootski architecture page and each of the subpages of the old architecture page. Also watch any of the YouTube videos embedded there from our YouTube playlist. You can find a link to the YouTube playlist on the knowledge base homepage.
Depending on your interests, you may want to spend extra time looking into the resources in the subpages, but there’s no need to go deep into all of them.
Specializing in one or more of those areas will be in the scope of other tasks.
Project Requirements#
Read all of the rootski architecture pages.
Watch any videos from our playlist that show up in those subpages.
Walk another person through each aspect of our architecture diagram in our own words. If you notice this exposes any gaps in your understanding of the big picture, capture them and ask in
#onboarding-and-training
.
🐧 Brush up on Linux and bash
🔥 Learn Linux and bash#
Project Context#
🗒 Note 1: This task still uses the old knowledge base website. Sorry for the confusion of having two sites! We’re in the process of migrating the Notion site to docs.rootski.io
🗒 Note 2: Don’t forget to reach out on Slack if you’re confused or stuck on anything with Linux and bash. This is a great opportunity for others in the channel to be able to mentor.
Linux is awesome. Bash is awful. ZSH makes bash great (but that’s another task).
There’s no way you’ll be able to contribute to any part of Rootski without being really comfortable in the command line and Linux.
Make sure you understand all of the concepts referred to in the Linux and bash
section of the Developer Tools & Collaboration page. It has some good resources for you.
Good luck!
Project Requirements#
Set up a Linux development environment according to the
Linux and bash
portion of Developer Tools & Collaboration.Go through each of the concepts on the
Linux and bash
page. Research and understand each of them.
⚡️ Set up ZSH
🔥 Set up Z-Shell#
Project Context#
Having a good experience in the terminal is very important.
Please go to the Developer Tools & Collaboration section of the knowledge base
and set up zsh
using OhMyZSH according to the Z-Shell
heading.
Project Requirements#
Install OhMyZSH
Set your theme to
bira
(or choose another one).(Optional; recommended) Install the autocomplete and syntax highlighting plugins for
zsh
using OhMyZSH
🐍 Install Python the “right” way
🔥 Set up Python#
Project Context#
To run Rootski locally, you’re going to need Python installed on your machine.
If you really only want to work on the frontend and never want to have anything to do with the backend or infrastructure, talk to Eric. We can find a way to make it possible to run the app without a good Python install on your machine.
You will need to set up and learn TWO things for this task to be complete.
pyenv
– see thepyenv
section of the Developer Tools & Collaboration documentvirtual environments – see the
Python Virtual Environments
section of the Developer Tools & Collaboration page.
Project Requirements#
Complete the
pyenv
section.Complete the
Python Virtual Environments
section.
🐳 Install Docker
🔥 Set up Docker Desktop#
Project Context#
To run Rootski locally, you’re going to need Docker installed on your machine.
If you’re only developing the backend and frontend, you don’t need to understand Docker, although it is insaAaAAanely valuable for your career in tech no matter what part of the software stack you prefer to work on.
🗒 Note: that learning Docker will be a separate, more specialized onboarding task. For now, you just need to be able to run docker.
😢 Note: Any version of WindowsOS that is less than the “Pro” tier can’t run docker! If you have Windows “Home” edition, you’ll need to upgrade to Pro. If you buy an official Microsoft activation code, this can cost ~$100.
Project Requirements#
Install Docker or Docker Desktop and
docker-compose
.Verify that your install worked by running
docker images
. You should see an empty table.
✏️ Set up your code editor
🔥 Set up VS Code#
Project Context#
The primary editor our team uses for development is VS Code. It’s fine to use another editor as well. Eric often switches between PyCharm and VS Code for work depending on what he is working on.
Specifically, we use VS Code for pair programming.
VS Code is awesome, but there is definitely a learning curve to set it up.
Go through the 🔥/⭐️ VS Code or PyCharm
section of in the Developer Tools & Collaboration page.
Project Requirements#
Install VS Code.
Install each of the recommended extensions. Edit the
.vscode/settings.json
for any customizations you want.(python developers only) Connect VS Code to a Python virtual environment
Edit the
.vscode/settings.json
so that your file auto formats when you save. For python developers, useblack
as the formatter.Run a piece of code with the debugger and make it stop at a breakpoint. Please get comfortable with this. You will need to create a
.vscode/launch.json
to do this.
🐿 Install DBeaver to connect to the database
⭐ Set up DBeaver#
Project Context#
DBeaver is a neat desktop tool for working with SQL databases.
For working on the backend, you will need to install DBeaver and verify that you can connect to the Rootski database locally. There is a tutorial/demo of how to do this in the Quickstart video on the YouTube playlist.
Project Requirements#
Download DBeaver.
Successfully connect to the Rootski database running locally and browse the tables.
🌲 Learn how we work with git (trunk-based development)
🔥 Learn Trunk-based Development#
Project Context#
We work with git
by creating feature branches from trunk
and then opening pull requests.
PRs can’t be merged to trunk
until they have “passed the build” which gets triggered
automatically when you create a PR in GitHub.
Whenever a task you are working on comes from a card in ClickUp, please create your feature branches by clicking on the card in the ClickUp UI so that your branch is associated with the card. You can also leave comments in the chat on the card, which makes it a lot easier for us to continue half-finished tasks if someone did some work and then left it unfinished for some reason.
If you are new to “trunk-based development” or “CI/CD” please watch the two video trainings on git
, TBD, and ClickUp
in the rootski YouTube playlist.
They are called 7 - Git Training (Part 1)
and 8 - Git Training (Part 2)
.
Project Requirements#
(Optional) Watch the two videos on how we use git. Please do this is you have not written software in a team setting before.
Create a branch using this card in the ClickUp UI, add yourself to the
Friends
section of the README, and open a PR.Have someone review your PR and then merge it.