Joining the Laboratory!

Well begun is half done.

Thank you for your interest in joining the lab! This document contains all the information you should know, so please read it carefully to proceed on.

Application

  • Contact Jeehoon ASAP. There are nothing blocking you from contacting Jeehoon (e.g., GPA, experience, …). You can also contact Jeehoon via comments!

  • Send an application to Jeehoon (jeehoon.kang@kaist.ac.kr). The application should at least contain:

    • The most interesting experience on computing. It can be about course projects, research or industry experience, or anything related to computing. Please prepare for a Google Docs document that clearly describes the experience, and give the document’s comment access to jeehoon.kang@cp.kaist.ac.kr.

    • What you want to do in the lab. Please read the lab’s research page; see what’s going on in this lab; write down your plan as a Google Docs document; and give the document’s comment access to jeehoon.kang@cp.kaist.ac.kr.

    • The time you’re available for an online meeting for 30 minutes. Please look at Jeehoon’s calendar for his schedule.

  • Finish reading this document and do all the action items.

Requirements

  • All new graduate students are required to finish at least two of the followings before joining the lab. So please start working on one of them ASAP.

    You’re also strongly encouraged to join the lab as an undergraduate intern to see what’s actually going on in the lab.

  • Undergraduate interns don’t have any requirements.

    We are widely open to all undergraduate students! If you want to join this lab as an intern, you’re going to do so. You are first going to do at least one of the above assignments, and then starting on research projects.

Onboarding

Welcome to the lab! Please finish reading this document and do all the action items.

What is Research?

“Research is what I am doing when I don’t know what I am doing,” Wernher von Braun

The defining characteristic of research is everything—from motivation to methods to evaluation to goal—is tentative: in the middle of doing research, you don’t know what will be the end result. As a consequence, a researcher will suffer everyday from:

  • Failures. You don’t know what you’re doing, so you’ll fail almost always. To deal with the frustration from such failures, you should be mentally tough enough to tolerate such frustration. If successful, from time to time you will be able to understand or design small things, which accumulate to a paper and then a thesis.

  • Changing plans. You don’t know what you’re doing, so your goal will be changing as you make progress on your project. So any long-term plan is destined to be significantly revised (if not cancelled). Thus you should think of the goal as a ever-moving target, the current version being just the best possible approximation of the actual end result. Your goal should be neither too concrete nor too abstract: if too concrete, it will not be resilient to the revision; if too abstract, it will not guide your research.

Management Principles

To get things done despite the fundamental uncertainty of research, this lab (ironically) aims to keep tangential uncertainty to the minimum. All uncertainty are not created equal. Some uncertainty, such as confusion on schedule or communication, is not beneficial for productivity. On the other hand, other uncertainty, such as unexplored design spaces, is the very definition of research. To be productive, we need to keep the former to the minimum and control the latter to the appropriate amount. (The meaning of “the appropriate amount” constitutes a researcher’s character; at first, please follow Jeehoon’s taste.)

To minimize the unnecessary uncertainty, this lab enforces a small number of rules on communication. Rules are good at minimizing confusions. For example, is it okay to mention someone in chatting applications during night time? People have vastly different opinion on this, possibly causing unnecessary tension among them, so we want to define whether it’s acceptable or rude in a rule. (FYI, we allow night-time mentions, but you’re required to react to them only in work hours.) On the other hand, rules are hard to follow if there are so many. So we want to keep the number of rules as low as possible.

Communication

Asynchronous Communication

  • Always, strongly prefer asynchronous communication: the receiver is not required to reply promptly. If you can say something asynchronously, please do it so as early as possible. For example, you want Jeehoon to review your document, please send it to him as soon as you finish writing it. Don’t wait for the meeting time to come. Please address Jeehoon’s comments as soon as possible, and when it’s done, please notify him of the progress.

  • Even for asynchronous communication, try to reply within 12 hours.

  • Before asking for a synchronous meeting (face-to-face or online), write down a meeting agenda and share it. In the agenda, clearly state the purpose of meeting. It can be, but not limited to: (1) reporting the progress, (2) asking questions/opinions, or (3) just chatting. If you have multiple things to discuss, enumerate them at the beginning of a meeting for better planning of the meetings.

    • If you don’t send an agenda, the meeting is potentially going to be canceled.
    • If the meeting is to discuss a document, please send it at least by 12 hours before the meeting so that the others can review it. Share it anyway even if you couldn’t finish writing the document by the time, because the others need to start making comments on it.

Volume

  • At 10am and 3pm everyday, please leave about five sentences to the daily log about what you’ll do and what you’ve done for the day.

  • Schedule at least one meeting for at least 15 minutes a week with Jeehoon. It can be about anything such as research, coursework, TA…

Discussion

  • Don’t pretend to know something if you don’t. If you do that, then you’re losing an opportunity to (1) learn the knowledge; and (2) go deeper into the problem that leads to a great research topic. Cherish (and even foster) your ignorance. Don’t assume the others will look down on you if you don’t know something. I know people often do it, but it’s their bad.
    • Don’t say yes (or no) if you’re not sure about it.
    • Don’t say you understood something if you don’t.
    • You’re encouraged to say “I don’t get it” and “I don’t know that.”
  • Be faithful to the discussion. If you disagree, say so; if you don’t like it, say so; if you’re happy with it, say so! But don’t try to win the argument. Research is not about winning and losing (especially within the same group). Try to summarize what you want to say (e.g., “Your idea doesn’t work in general”) and then substantiate your argument with evidences (e.g., “for instance, let’s look at this code: …”).

  • Don’t be angry or grumpy when the discussion is getting hotter. Research and any other creative works require different opinions clashing with each other, or in other words, hot discussions. But they don’t need to be involved with emotions clashing with each other. I know it’s difficult to separate them out, but let’s try to do that.

  • Right after every discussion, write down and share a summary note in the corresponding project stream in Zulip. For instance:

      ## discussions
      - method A won't work because of B. (but is B really relevant?)
      - anyway, let's first try C instead.
      - maybe D is also worth looking at?
    
      ## action items
      - jeehoon: contact D's authors
      - kyeongmin: investigate if B really matters, and document why A won't work in gitlab.
      - seungmin: implement C, make a schedule for the next meeting
    

    Please faithfully summarize discussions. Especially, be fair to the ideas you don’t agree with.

Reliability

  • Make sure to share crucial details to the collaborators. Without a sufficient amount of communication, it’s often difficult to make progresses on your research. For instance, maybe the problem you’re solving hard right now is already dealt with by the others, so frequently tell the others about your progress. (Too much communication, on the other hand, may be burdensome but it can be easily and proactively addressed, so it usually doesn’t cause any harm.)

  • Make sure that no feedbacks or action items get ignored. More concretely, when you receive a feedback, address it or give a counterargument against it. When you’re not capable of doing action items by their deadline, please say so as early as possible.

    • It doesn’t mean you need to foresee the future and always finish your work by the time. I know you’re not going to make it quite often. (It’s research!) Just tell the others that in a timely manner. That’s it.
    • If you’re reliable on this, the others can depend on you to get things done. If you’re unreliable and you miss feedbacks or action items, the others also need to track them, which causes great management cost.

Writing and speaking skills

Tools

Google Workspace
  • Create the {firstname}.{lastname}@kaist.ac.kr email account.
    • You can add “virtual mail” in mail.kaist.ac.kr > Upper right-hand side gear > Settings > Mail > Virtual Mail > Add Mail.
    • If it is already taken, add a number at the end of the id, e.g., {firstname}.{lastname}07@kaist.ac.kr
  • Send your email address to Jeehoon.
  • You’ll get the {firstname}.{lastname}@cp.kaist.ac.kr Google Workspace account.
Zulip (asynchronous messaging)
  • Sign in https://cp-chat.kaist.ac.kr with your Google Workspace account.
  • Zulip is asynchronous by default, but it is semi-synchronous in work hours. Try to reply promptly (at most by 15 minutes) in work hours. (No need to even reply in other times.)
GitLab/GitHub
  • GitLab: Sign in https://cp-git.kaist.ac.kr with your Google Workspace account.
  • GitHub: We’re at the kaist-cp organization.
    • Please write your name in your public profile (Settings > Profile > Name).
  • Let’s prefer GitLab to GitHub.
  • If you want to create a new organization or repository, ask Jeehoon.
  • Configure email notifications for mentions and issue/PR/MR comments.
Email
  • Forward {firstname}.{lastname}@kaist.ac.kr to {firstname}.{lastname}@cp.kaist.ac.kr and check emails in Gmail.
  • Write proper formal emails. Do not heavily markup emails.
Calendar
  • Manage your schedule in the Google Calendar for your Google Workspace account.
  • If you want to have a meeting, just create a schedule, write down agenda, and directly invite people.
Google Drive, Docs, Spreadsheet, Slide
  • Write docs, spreadsheets, and slides using Google Drive.
  • Put all project-related files to shared Google Drive.
Website
  • Fork the website repository and clone it.
  • Install dependent libraries and run a local server to test as follows: bash # Make sure Ruby is installed. $ bundle exec jekyll serve
  • Add your information (e.g., name, status, GitHub ID) to people.yml.
  • Create a new file {firstname}.{lastname}.md under the directory _people/. See _people/jeehoon.kang.md for reference.
  • Commit your changes and send a PR.
  • Your website is https://cp.kaist.ac.kr/{firstname}.{lastname}. Keep maintaining it.

Development

Tools

Infrastructure

Please read an internal document.

It’s Done!

Please check this document again to make sure you’ve done all action items. Then send a Zulip PM to Jeehoon that you did so.