Harvard CS197 Lecture 18 Notes
Harvard CS197 Lecture 18 Notes
Abstract
In this lecture, you will learn strategies for effective communication within a team and
organizing your efforts on a project. You will be introduced to the use of update meetings and
working sessions to maintain alignment and make progress on a project, as well as the
importance of dedicating specific blocks of time on a calendar and using a project tracker for
organization. You will also learn how to effectively organize your efforts on a project, taking into
consideration the stage of the project and the various tasks that may be involved.
Learning outcomes
- Learn how to use update meetings
and working sessions to stay aligned and
make progress on a project.
- Understand how to use various tools
and techniques to improve team
communication and project organization.
- Learn strategies for organizing your
efforts on a project, considering the stage of
the project and the various tasks involved.
1
Think of the project tracker as your journal or diary or a log. It can remind you of the progress
that you’re making, and the direction you’re headed. Every entry in the project tracker is
marked by the date. In addition, Bullet points are organized and in sufficient detail such that a
search that a future version of you project team member will be able to understand. The
project tracker often links to important reference documents including a related work
document, a working manuscript document, and an experimental results report (such as a
google sheet or a Weights and Biases table.
While the project tracker can be helpful even when you’re working as an individual it is super
helpful when working in a group. In particular everyone in the group can know what the other
members of the group are working on. When working in a group, It’s useful to annotate the
team member responsible for each of the upcoming tasks.
On organizing your readings: It helps to have a related word document where you can keep a
list of all of the papers you are reading. One of the things I like to do is to annotate papers with
one, two or three stars. One star papers are irrelevant (but you found out only after reading);
two stars are relevant; three stars are highly relevant. What makes a paper relevant is that it
might be the work that you’re building on in terms of methodology or following in terms of the
experimental set up or using as the dataset for your work. You should aim to have about 3-5
papers in the three star category. Finding important papers is a continuous process so it’s
something that you should continue to come back to and iterate over time. Something you can
do is set up google scholar alerts for articles that are related to the topic for your project and
that way you get an email notifying you when there’s a new paper that triggers your search
criteria. You can either organize your related works into a spreadsheet or in a word document
– when you’re working with an a team you’re often dividing up the papers to read. This is an
effective strategy to cover a lot of ground and notes are a useful way to share learnings with
the rest of your team. The exception is that with three star papers, everyone in the group
should read and make notes on.
Effort: In my experience, the ability to commit quality time to a project has been the most
distinguishing feature of a successful outcome. My tool of choice is a google calendar. On a
calendar, you can specify chunks of time that are dedicated to working on a project. A recurring
weekly time reduces the overhead associated with planning. Some of the calendar events will
be for communication with your team and we will discuss that in the next section.
2
Exercise (5 mins discuss): How does this compare to industry practices for effective team
communication? Anonymized examples for industry practices outlined below:
● It’s common to have daily, biweekly, or weekly standups, where the team checks in on
each member’s progress. These standups typically serve to sync up all members and
unblock and/or readjust goals if necessary.
● At the start of each week, team members plan out what they want to get done for the
week. This may also occur on a daily basis.
● Many companies often have company-specific sprint boards/task managers that are
linked to your work product. Most of the employees’ work is tracked using these tools.
Some popular tools for task management include:
a. Notion
b. Tableau Task Manager
c. GitHub Issues
Exercise (5 mins discuss): Argue: Is a document or a slide deck better suited for a project
tracker – why? Arguments for each copied here.
● Pro Slide Deck
a. Slide decks are typically shorter and require less overhead to compile. Especially
for jotting down initial project ideas when the details might be fleshed out yet,
slide decks may be more effective.
b. Slide decks are better for presentation purposes. If you plan to be frequently
pitching and/or presenting your project to others, a slide deck may be a better
format.
c. Slide decks are better suited for highlighting big ideas. Readers can quickly
grasp the high level ideas of your project by going through a slide deck.
● Pro Document
a. Documents are typically longer than slide decks text-wise, and they force more
clarity and specificity. In a final version of a document, all the ideas are typically
expected to be more fleshed out and complete.
b. It’s easier to search for key terms in a document (just use “command f”).
c. Documents are easier to convert into wikis that can later be easily accessed by
multiple people since they’re already in written form.
Exercise (10 mins; 5 mins discuss): Come up with a template for your project tracker. Fill it out
for your progress over the last fortnight. Best template for each copied here.
Notion Template:
● Consider using a project tracker template from online or creating one from scratch such
as the one below
3
● You can also toggle between different views for your project tracker, as well as add
external links to your project drive and github repository!
● You can also link other notion pages within your notion page!
At home exercise: Come up with a best practice to organize your experiments, and organize
your writing. Support your best practice suggestions with evidence from literature or your own
experience. Estimated word Count: 300-400 words
Update meeting: I have update meetings for projects once or twice a week for the duration of
30 minutes to 1 hour. The purpose of the update meeting is to discuss solutions to challenges
encountered and to realign on next steps. If your project has a research mentor, this is typically
the type of meeting you will have with them.
For an effective update meeting, It makes sense to have structure. Personally I like to spend the
first five minutes asking team members about life in general and sharing things about my life.
This adds often much needed human touch to the conversation. Then, everyone reads through
the latest entries in the project tracker by the team members. Then each of the team members
take turns expanding upon their progress. As team members share challenges they need help
with, other team members can offer solutions or decide to have a follow up working session. It
helps to update the project tracker itself with the solutions, or add next steps that may be of
higher priority than the ones specified.
Working session: Another type of a meeting is a working session. These are typically longer
chunks of time that are reserved for working together (1 hour - 3 hours): You might be working
on separate tasks in the remote company with your team or working together on solving one
task. I often get together with my teams for working sessions to collaboratively iterate on the
structure and argument of a paper. Another effective model for working sessions is pair-coding
or pair-writing. In the set up you get together with a team member to do a common task,
where one person takes the lead on writing a piece of code or a paragraph while screen
sharing, and the other person validates the logic or correctness or style. After an hour or so you
can flip roles. This is often an effective way of observing and learning from different styles of
coating in writing. This is most effective when both individuals in the pair have a similar skill
level in coding or similar writing style. It can also be effective to have working sessions to have
your code reviewed by other team members.
5
Exercise (5 mins discuss): How does this compare to industry practices for effective team
communication? Anonymized examples for industry practices outlined below:
● In industry, many standups are at least partially asynchronous. The standup may begin
by having everybody write down their updates and read others’ updates in silence. This
speeds up the meeting because you can read faster than listen.
● Public slack channels are used for messages that need to be disseminated to many
parties. Public Q&A channels, as well as debugging Q&As (similar to stack overflow),
can also be helpful.
● In person meetings are primarily used to align team members. Many people find that in
person meetings are a lot more efficient than Zoom meetings since a lot of times
people are checked out on zoom meetings.
Exercise (5 mins prepare; 5 mins discuss): Argue: Should offline communication be minimized
or does it have its place – why? Best argument for each copied here.
● Arguments for Online Communication:
○ It’s self-annotating — we have a clear log of messages we can look back on.
○ Wikipedia is a decentralized, highly successful project all done through online
communication.
● Arguments for Offline Communication:
○ It can be quicker to talk through new ideas at the beginning when in person.
○ Easier to develop rapport with team members.
Exercise (10 mins; 5 mins discuss): Come up with best practices for your team for online and
offline communications.
● Teams could use in-person meeting times to set milestones and divide tasks among
members. This step should minimize the need for constant communication moving
forward.
● To decrease online communication, groups can encourage the following processes:
○ Update/planning meetings
○ Individual working hours
○ Group working hours (i.e. pair-programming or debugging)
6
● Teams can use project management tools such as Linear or Jira to track which tasks
have/haven’t been completed, as well as keep track of who’s in charge of what.
● It could be helpful to set up frequent times to meet with the professor in order to have
more internal deadlines. Blockers can also be more easily resolved with a professor
present.
At-home Exercise: What learnings from literature can we apply to build effective
communication (online and offline) for teams in research? Estimated word Count: 300-400
words
In software engineering, there is a concept of technical debt. This is the “implied cost of
additional rework caused by choosing an easy (limited) solution now instead of using a better
approach that would take longer.” This applies to more than just software engineering – it
applies to how related work is organized and maintained – it applies to how experiments are
tracked – to how the papers are written. Sometimes, technical debt is not a bad thing – a quick
proof of concept in research might require trying out two codebases to see which works better;
or a traditional experiment tracking setup in which you copy-paste accuracy values from print
statements into google spreadsheets. As with other debt, technical debt will incur interest,
making it harder and harder over time to have correct, functional and easily extensible code or
experiments.
I’ve picked some of the most important examples of technical debt in software which I see
(sourced from here):
7
Exercise (5 mins discuss): What are practices you have encountered for minimizing technical
debt, as part of your internships / work. Three anonymized examples for each copied here.
● Frequently documenting your code. This can be done through docstrings, in-line
comments, commit messages, or the README. Design decisions should be
communicated through this documentation.
● Frequently refactoring code after getting a working version out to facilitate future
development.
● Having smaller commits and smaller branches in order to ensure that each group
member has a relatively updated version of the repository.
Exercise (10 mins; 5 mins discuss): Come up with best practices to minimize technical debt for
your group. If you were responsible for setting a standard for your team, what would you
propose for your workflow?
At home exercise: Come up with best practices for minimizing technical debt for non-coding
parts of your project. For instance, you could comment on tracking experiments and iterating
on writing. Support your best practice suggestions with evidence from literature or your own
experience. Estimated word count: 300-400 words