Command Line Leadership

Being proficient with various *nix-style tools for working with plain text is a well known way to “level up” engineering skills. Efficiently using your editor of choice (vim or emacs), along with common command line tools like grep, awk, and less common ones like xxd and jq can lead to massive time savings. What a lot of people may not realize is that understanding how to use these tools and others like them is also engineering leadership superpower.

The managers I work with have a huge amount of tools at their disposal, but they’re largely trapped by them. The problem is that many “modern” solutions become walled gardens. Taking in new data from other sources or exporting them to other tools in a pipeline is usually a low priority for these tools. We’re left with little content that can be reused and workflows that involve huge amounts of copying, pasting, and formatting to get something that we’re comfortable sharing with others. Those of us who find ourselves in the management of people systems and processes would do well to lean into our hard won skills from our software engineering days, not only will it make many of our tasks easier it allows us to focus on the outcomes we want and not as much on the tools we use along the one.

Each week I own several meetings where I communicate various things to my teams, and get feedback, alignment, etc. For each of these I create a deck with the agenda of topics for the meeting and send out a draft ahead of time (as all good people should). Last week one of my teammates asked me how I made them, and it seemed like a good opportunity to share that with you all too.

For creating these decks simply, I have a handful of template files in markdown. In my case I have one for our weekly meeting that is focused on my groups outcomes and it’s place within the wider business and another for our bi-weekly forum which is open discussion of topics relevant to how my group operates internally. The template is as simple as this:

date: 2021.01.19
title: "Data Team Weekly"
institute: "PepsiCo"
colortheme: "whale"
fonttheme: "professionalfonts"
mainfont: "Roboto"
aspectratio: 169
header-includes: |

    \setbeamercolor*{palette primary}{use=structure,fg=white,bg=beamer@pepsiblue}
    \setbeamercolor*{palette secondary}{use=structure,fg=black,bg=white}
    \setbeamercolor*{palette tertiary}{use=structure,fg=white,bg=beamer@pepsired}

# Agenda

- Team Announcements
- Accomplishments and Objectives
- Near-term Priorities
- Engineering Team Updates
- Product Team Updates

# Team Announcements

You’ll see in the frontmatter that I define a few variables, such as date and team, along with a few other settings having to do with the font and colorscheme of the output. Each header item, denoted by lines starting with the hash (#) mark set the title for a new slide. Slide content is defined below it and continues on until a new slide is started.

After editing the template the tool I reach for is pandoc. I can’t say enough good things about it, it is the swiss army knife of converting text-like formats from one format to another. I’ve used it for everything from presentations to preparing a cookbook for publishing and it’s flexibility and functionality never eases to impress me.

In this case we’ll be converting to pdf using xelatex and beamer along the way. These days I will often output to a standalone html document with revealjs and present using that, but pdf is much more portable and leads to smaller file sizes. by running the command

pandoc --to=beamer --standalone --output=weekly.pdf --pdf-engine=xelatex

We get a simple deck that can be presented from your own system or shared with each.

Output PDF

We can easily store the markdown file and any associated media in a git repository for easy reference. It is nice to have a full history of everything you’ve broadly communicated to your team in one easily searchable place.

I find this process to be much lighter weight and easier to work with than using PowerPoint or Keynote. Those tools definitely have their place, and you can certainly make beautiful presentations using them, but for everyday internal communication I prefer the simplicity and ease of using a plaintext markdown and pandoc. It allows me to focus on the content and what I’m trying to communicate vs fiddling with trying to get perfect text box placement.

I hope you’ll give this and other plain text workflows a shot. They take just a bit of setup, but once you’ve got it running the time savings can be immense.