erikras.com
HomeAbout

What I learned at Distru

As I leave this amazing company, I want to share a few of the things I learned.

Posted in Coding, Engineering
August 20, 2021 - 15 min read
Photo by Esteban Lopez
Photo by Esteban Lopez

Today is my final day working for Distru, helping to build a SaaS product to manage inventory, traceability, and distribution for the budding cannabis industry. Aside from being an ERP, the primary pain point that Distru alleviates is keeping every transaction and transfer synced up with the government database in this extremely regulated industry. As you might imagine, the APIs for communicating with the government are... ...challenging.

The whole company is full of amazing people with expertise ranging from sales to design to engineering to cannabis itself. The engineering team I have been a part of is fantastic. Everyone is so generous and humble and hard working. I'm going to miss them greatly.

At this turning point in my career, I thought I'd make a note of some of the things I've learned, mostly for myself, but for you all, too.

Standups

Before I worked at Distru, I was part of a 2-developer "team" for 15 years. I'd heard words like Agile and Scrum, but I'd never really lived any of it. I know this is common in my industry, but it was new to me. Normally, a standup – like all compound words, it will lose the hyphen eventually; embrace it – is a quick meeting, typically every morning, where everyone at the meeting quickly says what they did yesterday, and what they will be working, and, most importantly, if anything is impeding their progress. "No blockers" is a common "over and out" way to announce that you're done talking. Because many of the team is in California, and I'm in Spain, my standup would be at the end of my workday, where I would report what I had accomplished. I found knowing that I would have to report progress every day very motivating.

Standups at Distru

I assume that typically, a standup is run by the team leader, and it is they that call on everyone in the meeting to speak. Distru doesn't do this. At the end of every standup, we open up Wheel of Names, and randomly select a team member to lead the following standup. If you're smart/lazy, you learn to call on people in the order the Zoom has placed them on your screen. Each time, the current leader's name is from the wheel, until everyone has done it, and then they start over will all the names on the wheel.

When it's your turn to lead the standup, you are expected to entertain everyone at the beginning of standup with an "interesting fact" that you learned recently. This is no trouble for me, since I regularly listen to podcasts in the "interesting facts" genre, such as No Such Thing as a Fish and The Omnibus Project. What's great about this practice is that it lets you get to know your team mates...by the facts they choose. One engineer, who literally hunts alligators in the Louisiana bayou, can rival Bubba in enumerating all the ways to cook a shrimp. Another, from Brazil, would regail us with the political shenanigans of his elected officials. Another, based in Barcelona, taught us all about the importance of public human defecation in the Catalan Christmas tradition. Another would get so into her facts, that she prepared slides, and would sometimes have to be told that her fact was going on too long, and we really should start standup. It was great fun! I highly recommend adopting this quirk to your standups.

The fact I shared on my last day is that badminton shuttlecocks can only be made with feathers from the left wings of geese.

Retros

A Retrospective is a meeting held at regular intervals – I think Distru does it on the last Friday of the month – in which participants are encouraged to thoughtfully reflect upon the previous month. I'd never done this before, so I can only speak of how they do.

Retros at Distru

Distru uses a SaaS product called Retrium to manage the Retro meetings. All the team members log into Retrium, and then a Retro is initiated. Everyone is encouraged to create little cards with thoughts organized into three categories:

  • What went well
  • What went poorly
  • Concerns about the future

The cards are clearly skeuomorphic representations of Post-It™ notes. Part of me suspects that 3M, the manufacturer of Post-It™ notes, is behind the Agile movement. You can just see them brainstorming: "How can we sell more of these sticky pieces of colored paper?" I digress...

While people are adding cards, you can only see the contents of your own cards. Everyone else's cards are blurred out, but you can see them typing. I once tried to inspect the DOM to see if I could see what the others were typing, but Retrium is just putting Lorem Ipsum nonsense to encourage you to contribute, because your colleauges are. It works.

After a set amount of time, usually 5 minutes, everyone puts down their virtual pencils, and the contents are revealed. Everyone can participate in the next step, which is grouping cards about the same topic. For example, there might be three different people complaining about how slow Continuous Integration has been running lately, or happy about a new hire, or pleased that the value of TypeScript finally clicked with them.

Then we read over all the "What went well" cards, and anyone can comment. No one is ever afraid to step forward and say, "I wrote that one", and explain why.

Next is the anonymous voting phase. Retrium lets gives us all some number of votes (depending on how many people are in the meeting). You can think of it like placing poker chips next to the card that you most want to discuss, but you can't see other people's chips. If something is really important, you can put all your chips on that one card. This goes on until everyone has spent all their votes.

Retrium then sorts the cards, and we discuss the ones with the most votes. This is really great at capturing mutual sentiment. We then have a really enlightening egoless discussion about how we can solve whatever problem or concern has been voted on. Using this technique, we have implemented policies such as having a special Slack channel where we can request PR reviews, or discuss urgent production issues.

There is also some concept of writing down action items at the end, and reviewing them at the beginning of every Retro, but we haven't followed that policy very well, and I think that's fine.

One-on-Ones (1:1)

Yet another practice that, from my internet reading, seems to be generally understood as Good Management Practice™, but that was new to me. Every month (or sometimes every week), there would be a meeting on my calendar to have a 30-minute call with my boss.

One-on-Ones at Distru

My boss, Johnny, made it very clear from the very beginning that he expected us to have extreme candor with each other. Distru offered to buy The 15 Commitments of Conscious Leadership: A New Paradigm for Sustainable Success for everyone, but I bought it on my own. It's a very interesting book.

Johnny would enter these meetings with a shared Google Doc with headers like Touching Base, Talking Points, and Takeaways. He'd ask questions like, "What could you do to be more productive?", or "What could I do to help make you more productive?", or "What are your goals six months from now; what do you hope to have accomplished?" Very thought provoking questions that encourage introspection. Never once was there any emotion or resistence when we told each other how we could improve. It was just a good, healthy, egoless, selfless discussion.

It made me feel listened to and respected, and it gave me the confidence to suggest things at any time.

#muchlove

Showing gratitude is a great way to feel good and make others feel good. Sometimes, at work, a colleague will really help you out of a bind, or will really stand up to a challenge. Distru has a Slack channel called #muchlove, in which posts always start with the name of the channel and tags someone. e.g.

  • #muchlove to @susan for jumping in on an important sales call when I had another call scheduled and closing the deal!
  • #muchlove to @adam for helping me figure out a complex database query yesterday. Couldn't have done without you, mate!
  • #muchlove to @amy for these gorgeous designs for the new ____ interface. I can't wait to implement them!

You get the drift. It seems so silly, but when you get one about you, it feels SO GOOD!! Every company should impement a system of public displays of gratitude.

Welcome Letters

Whenever Distru sends an official offer letter of employment to a candidate, they post the candidate's email address in Slack and encourage employees to send the candidate emails congratulating them on getting an offer. This is so clever! It makes you feel so warmly welcomed even before you've joined. It's such a great psychological hack to encourage the candidate to accept. Genius!

Feature Channels

For every new feature added to Distru, a Slack channel is created called something like #feature-label-printing. All discussion about how that project is going is contained in that channel. People that care can follow, and people that don't needn't be bothered by it. When the feature is released the channel is renamed, e.g. to #feedback-label-printing. As an engineer building the feature, I was encouraged to post daily updates about how I was progressing. I'm sure lots of companies do this, but I found it very useful.

Education Sessions

Every so often – it feels like it might've been fortnightly – there would be a meeting for the whole company where someone would give a presentation about the cannabis industry. Before joining Distru, I had no idea about terpenes, trichomes, resin, how to trim cannabis flower, and how cannabis plants have clear genders, and if you want to maximize your THC production, you want only female plants, and keep them away from any male plant, so they get really horny and produce more THC. Who knew? I sure didn't! It was fascinating to learn. Did it help me draw rounded rectangles in the application? Not really, but it gave a sense of purpose and wider mission to what I was building.

Knowledge Transfer

The brainspawn of one of our Retros, we began having Knowledge Transfer sessions within the engineering department, where every other week one or two of us would prepare a 30-60 minute presentation about one aspect of the product we were working on. These were recorded Zoom calls that could later be watched if you could not attend. I gave one on forms 🙄 and another on how I was using XState to build several of my projects. Most of them were backend stuff that I didn't really need knowledge of, but it was fun to hear my fellow engineers speak passionately about what they had been working on.

Engineering Demo Days

Whenever a new feature was released, we would have an hour-long meeting for the engineer(s) that built the feature to demonstrate how it worked to the rest of the company, specifically the sales and customer support departments. These were also recorded Zoom calls for posterity.

PR QA Videos

Another idea that came out of a Retro was to require all PRs to have an accompanying Loom video where the engineer demonstrates that the bug fix really fixes the bug, or that the feature really works. For bugs, I would often switch back to the main branch, demonstrate the bug, pause the recording, switch to my branch, and demonstrate the fix. This serves two purposes:

  1. It provides much needed context to the code reviewer to be able to visualize the user flow being altered.
  2. It forces the engineer to actually test their code.

That last one sounds silly, right? I only ever record my Loom video when I'm certain my code works. Even so, about 70% of the Loom videos I made for my PRs found a problem, and I had to stop recording, fix it, and start again. These little mind hacks can be so useful! You can think of it like a Rubber Duck Demo. We all know that, if you want to find a bug, give a demo.

Without this practice, I would've shipped many more bugs into production.

Clean Commit History

I honestly think I had never used git rebase before starting at Distru, where they have a policy of having a "clean commit history". That refers to not having commit messages like "Tweaks" and "Let's see if CI passes now". At Distru a PR's commits should "tell a story", e.g. First I created this component, then I used it over here, then I connected it to the backend. My boss at Distru, Johnny, wrote a fantastic Medium post about how to achieve this with git rebase -i.

This can be a lot of work, and I wouldn't necessarily recommend it for startups where you can still feed all the engineers with two pizzas, but for larger organizations, being able to understand commits can become invaluable.

Gaming Sessions

The office manager would often organize 30 minute optional "games" meetings at least once a month using online gaming platforms like Jackbox. Everyone that was participating would hop on a Zoom call, and then we'd all go to some unique URL, often on our phones, and it would be trivia or games where we had to ask questions about a scenario and determine which of us was the spy. That sort of party game. The most memorable one was an escape room. We are all remote on Zoom, how can we do an escape room? Google "virtual escape rooms". There was some service that provided a guy with a GoPro on his head that would do whatever we told him, e.g. "Turn that vase so it's facing the other vase", and we would decipher clues to help him escape. It was way more fun than it sounds!

Through these "team building" exercises, I really did feel close to my team, and put personalities to the faces from other departments that I only saw during...

All Hands Meetings

This is a term I've heard in the industry, but my first experience was with Distru. These were monthly hour-long meetings where the heads of each department would present how their department was progressing, if goals were being met, etc. The most interesting part of these meetings for me was the total transparency of the company's financials. Things like:

  • We currently have $X in the bank.
  • Last month we experienced $X in churn (lost customers), which is N% more than last month. This was due to factors A, B, and C.
  • At our current rate of burn, we have X months of runway.

Those kinds of candid discussions made me feel like the captain of the ship knew what he was doing, and I could feel safe toiling away below deck.

All Hands meetings were often ended with...

Meditation Sessions

Mental health and productivity is so important at Distru that they hired a professional meditation coach to guide the entire company in 15-30 minute meditation sessions. We'd all hop on a Zoom call, turn off our cameras, and she'd walk us through breathing and concentrating. Can you imagine your employer telling the entire company to "Stop what you're doing!" and meditate for 20 minutes, 2-3 times a week?

I ended up not attending very many, because, while they were in the morning between coffees for the Californians, it was 6pm for me, and more than once I dozed off. But I've got to applaud the progressive thinking behind the practice.

Two Sweet Anecdotes

The funniest thing that happened while I was at Distru was during an engineering team meeting, where one person was discussing a problem they were having with cookies. Half the team thought he was talking about HTTP browser cookies, and the other half thought he was talking about an edibles product in the database. 🤣

I had been working at Distru for about six months when my birthday came around. There's a birthday Slackbot that reminds everyone. Whatever, that's a low bar. But on the afternoon of my birthday, my doorbell rings, and there's a delivery for me. The head of HR at Distru is a lovely woman from Barcelona who lives in the US. She had used my address to find a local bakery – in my little Spanish fishing village, mind you, where I guarantee you the baker doesn't know the English word for "cake" – and had them bake and deliver me a birthday cake! That's how Distru cares for their own.

Distru Birthday Cake

Conclusion

No one at Distru asked me to write this. In fact, I'm about to ask them for permission to post it. If you're reading this, they approved. Distru is an amazing place to work, and I wanted to write down all these brilliant ideas to suggest them to every subsequent employer I ever have.

If Distru sounds like the kind of place you'd like to work, I happen to know that they could really use a frontend engineer right now. Apply here.

Distru TeamI'm gonna miss these beautiful faces. 💚 #muchlove
Discuss on Twitter

© 2021 Erik Rasmussen