How to collaborate

  • First, this note is not complete. You are welcomed to send an email to me
  • Responsibility
    • Role: if you are being advised to achieve something, you are the main contributor
  • Timeline
    • Set up a due-driven timeline in the beginning of the project. For example, 1 month for at least one contribution, 2 month for project doc draft dure, 3 month for prototype implementation due
    • It is hard to estimate time for any project, but it is possible to dynamically adjust what we are aiming at to fit in the timeframe
  • Meeting
    • The main contributor should open an editable-shared Google doc or alike with the meeting participants. The document should be populated with meeting agenda before the meeting, and will be used as a notebook during the meeting
    • We will write down our agreed-upon follow-ups (what we will do soon after meeting) and "what to do next” (what we will do in the next period of work)
    • Meeting should be short and productive for all participants. Things that can be done through Github/email/online-chatting should be avoided to do during the meeting.
    • If the orignial scheduled time slot isn't working well for you (e.g. too late/early, might conflict with some other event, or if you are tired and wanna have a break), feel free to tell me but please reschedule as early as possible.
    • Try to use screen share to demo the steps. Don't imagine that the other person understand what's in your head. Also, ask the other person to do it if you are the confused one
    • Real-time Idea formalization 1. Can you propose several ideas before our meeting on paper? 1. Can you define the problem on the whiteboard? 2. Can I define the problem on the whiteboard? 3. Do we agree on what is the best idea? Is it clear what we aim at in this iteration?
    • Use Google Calendar for scheduling meetings.
    • Invite meeting attendees and allow modification of events
    • Reschedule as soon as you found you are unavailable at that time
  • Ask if anything is unclear or your need any help. You need to google and find ways yourself first - but think about how to balance the trade-off in the process.
  • Do the work early before a supposed “deadline” like a meeting (but don’t worry too much if there is nothing to tell in a meeting, just postpone it or cancel it)
    • Try to get the job done in half the time before deadline. That why this is called deadline. Also, only in this faith can you actually deliver something before deadline
    • Don’t use acronyms or nonsense words for objects, software or processes
    • Walk out of a meeting or drop off a call as soon as it is obvious you aren’t adding value
  • Do the work in a batch (at least 2 hours at a time). Multi-tasking is harmful for creative problem solving.
  • Example template for summarizing your recent progress: https://www.evernote.com/l/AWyWmXEOIIlHvJoJ2anacj3pPstr7B0ohyE (you need to customize it for your own need)
  • Tools
    • Video Conf: Zoom
      • Fall back to Skype/WeChat if Zoom is blocked by GFW
    • Demo / peer programming: Screen share via video conf / VSCode liveshare