Agile software development is not linear in nature. In order to be an effective technical lead or engineering manager, you need to untangle dependencies, build services that can effectively communicate together over time, and prioritize work effectively.

Taking notes in Roam will help you highlight how people, projects and ideas relate to one another. Understanding these relationships will make you a more effective manager and leader.

In this article, I’ll share how I use Roam to:

  • Take better notes
  • Run better meetings
  • Track complex projects
  • Communicate clearly with reports, managers, and directors.

Initial setup

You likely already use some form of note-taking software during the workday to capture ideas, todos, and meeting notes. You can start using Roam for all of this. I recommend creating a local Roam database on your work machine.

Roam throughout the day

I begin each work day by opening Google Calendar and Roam side by side, and creating bullets under Daily Notes for each meeting. I then add a quick TODO underneath any that I need to explicitly prep for.

I create and reference pages for co-workers and projects. Over time, these pages have become the central nodes in my graph.

I use the following 3-step process for all meetings:

  1. Before the meeting, I review my notes on relevant people or projects. This helps get me up to speed ahead of the meeting and ready to dive into the objectives.
  2. During the meeting, I reference my existing notes and take new ones. I don’t worry about structuring them in an organized way at this point. I focus on the meeting at hand, and quickly jot down key ideas and action items.
  3. After the meeting, I synthesize the new notes and organize them into their correct context by linking to related pages and people.

Over time, I’ve begun naturally to see how different projects and people are related.

I’ve found that Roam is particularly useful in the following types of meetings:

1-on-1 meetings with my reports

My Roam page for each report highlights what they’re working on and who they’re working with. For each report, I create a tag to document their wins. This becomes a useful tool to highlight their growth. Having it contextualized within the projects they’re working on and people they’re working with is invaluable when they are up for promotion.

I use the following template for a report’s personal page:

Personal
Projects
Next 1 on 1
{{[[query]]: {and: [[name-wins]]}}}

This creates something like the following:

Skip level meetings with VPs and Directors

In skip level meetings (a meeting with your manager’s manager or someone else higher up the chain), Roam allows me to to clearly articulate how different projects and teams are related. Roam allows me to “zoom out” on my thoughts to the same resolution as directors and executives.

If needed, I can share my screen during such meetings to communicate complex dependencies quickly.

The screenshot above (details changed) shows what I was able to communicate with a director, highlighting who was working on what and details about an upcoming release. Roam makes it easy to describe linear concepts, while tying in dependencies and related stakeholders.

Other pages

In addition to pages for people and projects, I create pages for groups of people, such as Backend Engineers or Quality Assurance. As my team changes and grows over time, these group pages will help me to think clearly about personnel needs.

I also create pages for user personas, to articulate the needs of different groups of people using the software we’re building. I reference them as I build out notes on new features.

I have also made a page in Roam for my company’s values and principles, listing each one as a separate block. I then can reference these blocks when taking notes. This helps guide my thoughts and use a shared vocabulary that my peers recognize and value.

Roam for sprint planning

Roam is well suited for project management in general. I use the following tags to make the software development process easier:

  • #NextSprint can act as a living backlog. When it comes time to plan the next sprint with Product Managers, I open the NextSprint page and start prioritizing.
  • #InFlight helps me keep track of projects throughout the release cycle. As I review roadmaps with Product Marketing, I can make sure we’re on the same page about what’s coming down the pipe.
  • #DesignDependent helps to prioritize design resources. Including a query to embed DesignDependent blocks on the designer’s page allows me to be prepared for design review meetings.

In general, I’ve found that Roam’s flexibility makes it easy to use within the context of existing rituals, workflows, and issue-tracking software.

Conclusion

As I transitioned from a software engineer to an engineering manager, the nature and volume of the notes I took changed. Folder-based note taking software works well enough for keeping track of individual work streams but not so well for making connections between different teams and projects.

Roam has allowed me to identify these connections over time. I don’t always know how different things will fit together in advance — I can only connect the dots looking back.

Roam also allows me to build connections as they occur, e.g. as a gardener. This gardening approach has been helpful as I’ve transitioned from a maker’s schedule to a manager’s schedule. With Roam, I can quickly jot down thoughts throughout the day and know they’ll end up in the correct place.

Roam has undoubtedly made me better at my job — and it excites me to think about how powerful it will be when entire organizations use it together. I have yet to explore using Roam collaboratively, but I am confident that it will prove useful for:

  • Creating shared, living product roadmaps
  • Collaborating on horizontally complex engineering projects such as identity and permissioning
  • Documenting and defining ownership of different services and systems across the company.