Golden rules
- Please
watch
,star
andfork
the repo. - "Remember to treat others the way you want to be treated"
- Everybody comes from a different place and different skill-level, somebody has a job, somebody has a full-time work
- Let's be polite, helpful, and supportive to each other
- I'll remind you an adage that I tell myself when my teammates drive me crazy: "If you want to go fast, go alone; if you want to go far, go together"
- While being assigned a warm-up issue:
- We highly value the importance of following instructions to ensure efficient task completion. We intentionally select straightforward and simple issues as the first tasks for you. So as your first step you should put primary focus on following the rules. Failure to do so can result in wasting more of our time than saving it.
- A pledge to put in the time you committed and not disappear
- If we don't find that you can meaningfully contribute, we will give you a warning and help you improve, we will suggest you how to fill in your knowledge gaps, and start not putting the time to help since we don't have enough resources
- If we decide that you are not ready to contribute, we will drop you, without discussions: this is our sole decision for the good of the project and the other contributors
- You can study and try again in 6 months
Roles
Tech leads
-
Tech leads are contributors that have put more effort in KaizenFlow and / or have more experience in research and development
-
The same project (e.g., Web3, Model, Arbitrage, NLP) can have multiple tech leads
-
One becomes a tech lead by technical excellence and dedication, and for no other reason (e.g., seniority or degree)
-
What tech leads do:
-
Organize the work in their specific project together with GP / Paul and the other full-time contributors
- Help young team members, e.g., answering their questions, showing how we do things
- Answer other team members questions, even in different projects
- Following our process, advertising it, and explaining it to new team members
- Understand what other people in your team are doing and coordinate with them
-
Make sure code, notebooks, and data are reused and shared
-
What tech leads gain from being a tech lead:
- Learn how to run a research / dev team
- Practice leadership skills (which mainly entail technical excellence and patience)
- Work closely with GP / Paul
- Material benefits (e.g., higher KaizenFlow bonuses once the reward system is in place)
Developers
- People on teams working on the same project or on related projects can:
- work together on the same tasks (you can coordinate on GitHub, Telegram, or do a Zoom)
- work together and split the work (still you need coordination)
- each can "replicate" the work so that both of you understand (no coordination)
How to organize your research
-
The GH issues are for:
-
reporting issues (e.g., "I am getting this error. What should I do?")
-
updates (e.g., "I've made a bunch of progress and the details are in the gdoc )
-
Commit the code in a PR (even the same PR) so that it's easier to review the details together
-
You can say "this is what I'm doing, what do you think?"
- E.g., create a dir like 'SorrIssueXYZ_...' under https://github.com/kaizen-ai/kaizenflow/tree/master/sorrentum_sandbox/examples/ml_projects
-
E.g., see the PR under https://github.com/kaizen-ai/kaizenflow/pull/31
-
Work in the Docker container so that you use the standard flow and it's easy to collaborate
-
It's ok if you want to use your different flow, but still try to commit often
-
Save all the files in Project dir
-
You can use Google Desktop to keep the dir synced locally on your computer so when you work on your project the data is always in sync with what others view
-
Keep a detailed research log in a Google Doc in the Project dir
-
Document what you are doing, take screenshot, explain the results
-
You can make progress only if you are organized and consistent
-
Avoid emails any time possible
-
Communication should happen on GitHub around specific Issues
-
Read General Rules of Collaboration for more details
-
Use Telegram chat when you are blocked on something
-
Try to use GitHub Issues when not urgent to provide context
-
Don't abuse Telegram, learning what is urgent and what's not
-
On GitHub
-
Provide context about the problem
- Explain clearly what is the problem and what you are trying to do
-
Writing good bug updates is an art that takes time
-
When you are done with your task and you need more work ping your project chat
-
Work with your team (especially if you are a tech lead)
- Answer other people questions
- Understand what other people in your team are doing
- Coordinate with them
- We can only make progress together as a team and not as a single person (get over being shy)
About the project you choose
- We let you pick the project you like because we believe that one needs to be excited about something to work on that through the late night, on Sat and Sunday
-
On the other side, in 15 years of leading, mentoring, hiring, and firing people I've never found one person not complaining about their project being "boring"
-
People working on exploratory analysis want to do machine learning
- People want to do "machine learning" when 95% of the machine learning work is building data pipelines and doing exploratory analysis
- People running models complain about that being uninspiring and would rather to do exploratory analysis
- People writing code want to do machine learning (since that's the cool stuff!)
-
Software engineers would like to be lawyers (since they want to interact with people and computers), and lawyers want to be engineers (since they can't take dealing with people anymore)
-
The problem is that everything is interesting and boring at the same time. It depends on your mindset
- If you say "this is boring", it will be boring for sure
- If you look for finding interesting pieces in what you need to do, it will become suddenly super interesting
- The people that succeed are the ones that do their best at their job no matter what, that find joy in solving whatever problem brings value