Towards the end of every year, I take a moment to reflect on the arbitrary time-frame of a year. This is a stream of consciousness of some of the topics that have dominated 2017.
Growth as a Lead
In 2016, I started building a team to be responsible for a part of the application-level architecture of Shopify. In particular, to ensure that the blast radius of a single piece of the engine would be as small as possible. To successfully build a reliable, complex system from unreliable and often unknown components. This video explains in more detail what the team has been doing since 2015. This is the first time I’m in charge of a team. We work on the plumbing to provide the most reliable commerce experience at scale on the planet. The team has evolved from one team (2016), with one mission, to a team of teams (2017). From about 5 people (2016) to a peak of about 11 (2017) directly or indirectly reporting to me.
Doubling your team is challenging. With the growth of the team, I have to grow at least as rapidly as it, to continue to support it. In the low single digits members, I could still spend a fair amount of time writing code. In the low double digits, I find myself acting more as a project manager, coach, and manager than a developer. It is no longer responsible for me to sit down and write code when I almost always have the opportunity to unblock someone. The hardest thing to change about yourself are the pieces that your identity builds upon. Your occupation certainly fits that bill. Gradually, mine has had to shift from a developer to a lead of developers. I think identity is one way of explaining why the transition from individual contributor to lead is challenging. Last year, I hadn’t fully made that transition, but this year I feel that I have.
The explosive growth of tech companies (in our case, doubling many years) is a double-edged sword. The limiting factor to growing the company with the ambition of the mission (‘make commerce better’) becomes the number of leads to support the people. If you don’t have enough leads, you can’t hire the people who do the actual work. Due to this demand for leads, sometimes you have to ask people to step up a little prematurely. I was one of those people asked prematurely, certainly. I went from something I had developed expertise in (writing software), to something I knew little about (leading a team of people and projects). It’s paramount to realize the magnitude of this transition. It’s easy to confuse success in one area, with guaranteed success in another. It’s natural to gravitate towards the things you used to be good at, rather than the skills you need to be good at. You need to keep your ego in check, too, or you end up on mount stupid (depicted below) by confusing knowledge in one domain (what you were good at) with knowledge in another (what you’re working on getting good at).
As I mentioned last year, the highest return on investment in leadership skills has come from reading books and articles. This year, I supplemented by going to a workshop on decision-making. That is hands down, the best way I’ve ever spent my annual conference budget. The room was packed with mind-bogglingly smart people from a diverse set of fields such as finance, fire-fighting, and publishing. I developed some fantastic relationships as a result of the workshop that continue to pay dividends in the form of phone-calls, emails, and in-person conversations. I feel that it gave me the impetus to bring my leadership skills to the next level.
A realization from the workshop that continues to haunt me is how much time we spend cleaning up after past poor decisions. The thought of how many things could’ve been avoided with a small, strategic incision years ago makes me shiver. Most importantly, it makes me humble to the decisions we make today and their long-term ramifications. The classic problem in decision-making is that it’s easy to recognize those who own up to the day-to-day fire-fighting. What’s much harder to appreciate are the people who make the proactive decisions. The decisions that are so good, we don’t even think about them anymore. Those that continue to provide leverage as people build on top of them.
As an example of a brilliant proactive decision, years ago a couple of co-workers, proposed a 2-day project to rewrite our internal chatbot in a programming language much more widespread in the organization (Ruby). The skeptics came out of the woodwork, saying it’d be a bunch of duplicate work porting the entire code-base to Ruby, with little pay-off. If people wanted to write a new chat command, surely, they’d figure out how to use the previous system. Nonetheless, we went through with it because we saw the long-term leverage of using the same environment. Today, it’s the repository we see the most cross-company contributions to after the main Shopify application. The system is world class and aids us in tasks of immense complexity (and danger): failing over entire data-centers, assisting with incidents (did you remember to update the status page?), and managing on-call schedules.
We don’t pay enough attention to rewarding those decisions proactively because it’s much harder than recognizing the person who own up to their mistakes. That’s important, too, but I’m more interested in striving to make the decisions that don’t have that negative leverage. In the second half of this year, I’ve spent more time with the people on my team analyzing good and bad past decisions. The best method I’ve found is to entertain a present day where a decision months or years ago wasn’t made, or was made differently. Then fast-forward to today. Did it result in a better, or worse present-day? How much leverage did the decision end up having? I hope a future exists where more people will keep a decision journal to provide a feedback loop. There’s few things higher that’ll pay off more than improving how you make decisions, a practice that transcends fields better than most skills.
Overall, it’s humbling how big of a difference your decision-making process can make. I’ve spent the better part of this year becoming increasingly familiar with the cognitive biases that limit our decision-making. The best decision-making books I’ve read this year are:
- Decisive. Anything by the Heath brothers is worth reading. If every business book was structured even remotely as well as their works, the world would be a better place. This book presents a battle-tested, coherent mental model on how to think about decisions.
- Charlie’s Almanack. This is, no joke, probably the most important book I’ve read to date. This book provides you with an operating system for structuring your thinking. It needs to be https://www.poorcharliesalmanack.com/, and is expensive, but it’ll pay for itself many, many times over.
- Know What You Don’t Know. The hardest thing about making decisions is knowing when to make one. This book is a great resource in how to identify the problems you need to make a decision on.
Cultural Leverage Points
I got so excited about Decisive that I recommended it to everyone on my team. I think today, almost every single member has read it. As a result, we have a shared vocabulary to talk about decisions: “Have you set a tripwire for this decision, so we make sure to return back to it if it doesn’t live up to our expectations?”, “I think we need to widen our options here. All these solutions will take a long time and bring little long-term leverage. Let’s keep exploring.”, or “You should consider multi-tracking the prototypes for this problem to protect yourself against confirmation bias (exclusively looking for information to confirm familiar beliefs, often the solution you’ve spent the most time with) “.
This addition in vocabulary is great, but there’s something there that’s even more valuable. The fact that the team actually read the book. A team of avid reads is a tremendous leverage point. In one-on-ones, I’ve recommended books to members of the team to help them overcome what’s currently holding them back. And they actually read them. The conversations unfolding from both having read a book on a topic is much more rich than anything we could wing.
I call this a cultural leverage point. Reading and self-improvement is deep in the DNA of the team (inherited from the company’s). This means that we can use, in this case reading, as a cultural leverage point to accelerate our shared understanding. Another example of this were two members of the team who started having peer 1:1s, unprompted. They recognized it as an opportunity to zoom out and talk about their relationship and challenges. Through their first peer 1:1, they managed to conjure an impeccably timed piece of feedback for me. That springs naturally from a team and company that values self-development, and peer 1:1s can provide yet another cultural leverage point going forward as it has slowly spread into more parts of the team.
If you frame your solution in terms of these leverage points, it’s amazing what opens up. I read a story about a charity that came to Vietnam to improve children’s health. In rural communities, there was a significant problem with underweight and malnutritiond babies. Many had looked at the problem before them, but they’d diagnosed the fix to large infrastructure projects such as contaminated water and poverty. The charity classified this as ‘true, but useless’ information. Too hard to take action on. Instead, the protagonist went to communities and identified the children who were healthy despite these poor conditions. The bright spots. He found that they ate sweet potato greens, got a larger share of the family’s protein, and several other small things that didn’t cost more. The leverage point to solve a big problem was an existing remedy in the environment, with minor adjustments. Small solutions can solve big problems when you begin from a functioning starting point and consider that they can compound with minor changes.
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system. – John Gall
Another experience I had with this was at the @Scale Conference. I did a talk on how we do disaster testing at Shopify. We do some things well, but Netflix is miles ahead of us. The thought that they might be in the audience made me nervous. Surprisingly after the talk, an engineer from Netflix came up to me. When I saw the logo on his shirt as he approached me, I thought ‘oh no, I misrepresented them in my talk.’ Instead, he opened with: “Hey. That was really cool. We couldn’t have pulled your strategy off at Netflix.” What I realized through that conversation was that our disaster testing strategy utilized a key cultural leverage point at Shopify: we take writing tests for our software very seriously. If a test fails, you don’t get to ship your code. If your change doesn’t ship with tests, you don’t ship your code. I’ve never been in another environment, so I didn’t realize that this might be unique at our scale (at e.g., Facebook, my understanding is that some minor test failures are tolerated for their large apps). Our solution built on top of this one observation and worked for us as a result.
I’m continuing to read, averaging roughly a book a week. These are the books I read this year. I’ve continued to focus on retention and comprehension. I’d estimate that I spent around 4-5 hours a week on average on retention-related work, such as writing about the books I’ve read. I spend about as much time reading non-fiction, as I do processing it (1:1 ratio).
I’ve transitioned from keeping my Commonplace Book of notes in digital-form (Workflowy), to paper index cards. On each index card, I write the key idea, often add a drawing, and an example. At the top-right, I write the dates where I’ve spent time with the card. Bottom-left, the book name. “Spending time with a card” typically means writing at least 4-5 paragraphs about it.
What’s bothered me about this system for the longest time was that it had no feedback loop. Writing about the card certainly felt like a good way to incorporate the idea deeper into my wetware. But on the other hand, it’s time-consuming and slow. I often have to slow down my non-fiction reading, because I can’t keep up with the amount of information I have to process (keeping that 1:1 ratio). That’s likely fine, I can read much faster than I can absorb—but am I limiting myself, not having optimized the process?
In the late fall, I devised a symbol that I’d put under each review date to indicate what I did with the card when I had it. A subset of them:
- W. This means I wrote 3-5 paragraphs about it and didn’t share it anywhere.
- Co. This means I had a conversation with someone about the idea.
- R. This means I recorded a 4-6 minute voice memo on my phone talking about this idea. These recordings I listen to on a spaced repetition schedule (a voice flash-card). I just completed working on an application that’ll serve the voice memos as a Podcast feed to fit this into existing workflows.
- C. This means I added the card to a situational checklist, see later section.
- Pv. This means I attempted to associate the idea with an everyday object. I realized the power of this because every time I look at my closet, I think of a story someone told me. If I could nudge myself to think of placing a tripwire every time I’d see a urinal, or how incentives play into the problem at hand every time I see an apple—that might be useful.
- Fv. Create a flash card with a strong visual for the concept (e.g. a carrot for incentives, domino for thinking about second-order effects, and a plane to think about survivorship bias).
On the card above, you can see such a card with these annotations from the book Nudge:
The idea of noting down these symbols is that the revision cycle after one with symbols, I can rate from 1-7 how readily the idea comes to mind. Where 1 is “I never remember this” and 7 is “This comes to mind every single time I need it. All the right associations are planted in my brain. No improvement necessary.” With this data, I hope to correlate which methods above are most effective for me.
My reading workflow at this point looks something like this:
- Identify. I pick the next book to read from my Airtable of books mapped to categories and people who’ve endorsed it. If people I talk to regularly are currently reading it, I’ll bump the priority since it means I can have conversations about it to aid absorption.
- Read. I read the book on my Kindle, using a few methods I’ve picked up here and there.
- Highlights and Notes. I use highlights to highlight the key points for summarizing and reflecting on later. Things that’d be useful to note on index cards, if I don’t have them handy. Often times I’ll write the index cards while reading.
- Construct Memory Palaces. Since focusing more on memory practices, I construct memory palaces with the key ideas from the book. This means I can keep going back and forth in the book in my head and relate the ideas to each other.
- Skimming. In especially business books, I don’t always read all the chapters. I typically read the first few and last few pages of each chapter. If it’s intriguing, I’ll read the whole thing, but if it’s not, I have no issue skipping it if I feel that it’s not interesting enough or if the bookends of the chapter summarize it well.
- Leave it. I typically leave the book for at least a week before going back to it to reflect.
- Create index cards. At this point, I’ll create index cards from the key ideas, assisted by the highlights. I use the Kindle app for Mac to help me browse through them rapidly.
- Write a summary. While I’m writing the index cards, I’ll typically write a summary and recommendation on Goodreads. I mostly do this to string together a coherent model of the book and the relationship between the ideas. I’ve found this useful when recommending books to others, too.
At this point, the ideas live on from the book in the form of index cards in the system above, periodically reviewed for the ideas to make the jump from text to real-life.
With the overwhelming amount of index cards, I’ve started to see the limitations of associating cards individually with contexts where the idea noted is useful. For example, I have cultivated an association between pros and cons lists to asking the questions of: “Did we launch into analysis prematurely?”, because launching into pros and cons lists prematurely can inject analysis into something and legitimize it too early. Similarly, before making most decisions, I ask myself: “What would change your mind about this?”, to identify the core assumptions. However, the number of associations is starting to be overwhelming resulting in only the most frequently used ones coming to mind. Typically that’s not more than 3-4, when in reality, often one or two dozen are useful in certain situations. Probably the same mechanic that protects me from having 1,000s memories coming to mind every time I look at a table.
While reading Principles, I read about the “Coach App”. The idea is to open the app to search for the situation and it’ll provide you with a checklist of what to consider. I’ve started creating my own situational checklists, an excerpt is below:
Some of these have been quite useful. Many of them are blank, helping me figure out where to spend more time directing effort. These lists evolve as I read, reflect, and receive feedback to avoid repeating mistakes.
One of the problems with the situational checklists is that they’re in an app. Some of them have 30+ points. These are well-curated and useful. Unfortunately, cutting is no longer an option. They are already distilled. These are all valuable points. Pulling up the app in these situations is tedious. Many of the questions don’t apply to all situations. It’s just too slow and doesn’t get done often enough. Every time I do, however, I am better for it—almost always something new surfaces when it’s one of the more adorned lists. I wanted a better way.
Towards the end of the year, I took a few weeks to focus on memory. I’d heard of the practice of memory palaces for years but hadn’t figured out how to incorporate them into my life. With these checklists, it seemed the perfect opportunity. If I could build a palace for each list to retain it and train myself to run through them quickly, that could be what I was searching for. I wanted to install these lists into my head.
I’m only one list and a few weeks in, but I have a feeling this will pay off handsomely in 2018. You can read more about this idea from my review of a book on memory.
Since last year, my cooking has centered around cooking from many different countries. I’ve continued, and developed culinary affections for many countries such as Indonesia, Egypt, Israel, Iran, Brazil and Syria. This has greatly opened up the type of restaurants I attend, too. My favorite new flavor combination is hands down: walnuts, pomegranate syrup, and red peppers. It’s incredibly tasty and versatile, whether you pair it with beans, eggs, or meat. Dish of the year is shakshuka, drizzled with pomegranate syrup and ground walnuts. It can be done in 30-45 minutes, it’s cheap, tasty, serves every occasion, looks beautiful, and is vegetarian.
Since learning that crops for livestock occupy 1/3 of all arable land and that livestock produces about 10-12% of greenhouse emissions, I felt the need to develop a more sustainable relationship with meat. I still eat meat, but I generally try to consume mostly on special occasions, or about 2 times a week, on average. This has been an interesting constraint and has changed the way I cook at home, too. I haven’t cooked meat at home (except on a few special occasions) for the majority of the year, reserving it for going out. I plan on continuing this development throughout next year. Although, I’m likely adopting a small increase of meat on the weekends because it’s thwarted my progress on my ‘around the world cuisine’ project. Most countries’ main dishes contain meat.
My workout system hasn’t changed much this year, keeping it consistently at ~3 weight-lifting sessions per week. I haven’t added much strength this year, mostly because I wasn’t paying enough attention to the planning. Late this year, I’ve adopted a cyclic program that has me progress more consistently every month, at a more healthy pace. In my previous program, I’d try to beat the last workout’s PR every time. This often caused me to overdo it in the next workout, leaving me unable to recover for the one after, and then getting back to where I started. I hope this is the change I need to progress to the next level. I’m mostly happy with the regime here, and it keeps my base-level of shape quite good. I lack some aerobic capacity, which I’d like to look into sometime in 2018.
I feel that I’ve distanced myself a tad too much from technology this year, spending the majority of my time on reading about leadership in some form or another. I’d like to get more the technical weeds again next year in my spare time, and I have a few ideas for things I’d like to work on. I truly think that the skills I’ve worked on developing in areas outside of software will be invaluable in pulling off increasingly bigger projects, but I need to get back and focus a bit on the foundations. I’ll continue to hone my habits and systems, as always. Currently, I am most interested in the situational checklists and memorization—we’ll see where that takes me. I see myself porting my index cards into Airtable as well, attempting to combine the best of a paper and digital system.