<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Steph Smith</title>
    <description>The latest articles on Forem by Steph Smith (@stephsmithio).</description>
    <link>https://forem.com/stephsmithio</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F99024%2Faae1eed7-cc9c-4299-bb66-be07e94f0dc7.jpg</url>
      <title>Forem: Steph Smith</title>
      <link>https://forem.com/stephsmithio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/stephsmithio"/>
    <language>en</language>
    <item>
      <title>Writing is Thinking: Learning to Write with Confidence</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Sun, 06 Oct 2019 14:58:37 +0000</pubDate>
      <link>https://forem.com/stephsmithio/writing-is-thinking-learning-to-write-with-confidence-1ijh</link>
      <guid>https://forem.com/stephsmithio/writing-is-thinking-learning-to-write-with-confidence-1ijh</guid>
      <description>&lt;p&gt;This article was originally published on my &lt;a href="https://blog.stephsmith.io/learning-to-write-with-confidence" rel="noopener noreferrer"&gt;blog&lt;/a&gt;, where I often write about personal growth, remote work, learning to code, and women in tech.&lt;/p&gt;




&lt;p&gt;If you told me 5 years ago that I would one day lead a 20-person Publications team or have a personal blog that’s read by hundreds of thousands, I would’ve laughed in surprise. Yet somehow, I’ve found myself in that reality. &lt;em&gt;Here we are&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;People often ask how I approach writing, so I decided to share this piece to sway the self-conscious writer inside each one of us. I hope it encourages others to develop a writing practice that works for them, by simply sharing how I’ve designed my own.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Self-doubt can be an ally. This is because it serves as an indicator of aspiration. It reflects love, love of something we dream of doing, and desire, desire to do it. If you find yourself asking yourself (and your friends), "Am I really a writer? Am I really an artist?" chances are you are.” - &lt;a href="https://amzn.to/2O1NtNe" rel="noopener noreferrer"&gt;The War of Art&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Practice Makes Possible
&lt;/h2&gt;

&lt;p&gt;Growing up, English was my least favourite subject &lt;strong&gt;by far&lt;/strong&gt;. In fact, I grew up in Ontario, which mandated that only a single subject must be taken all the way through secondary school. And of course, it was English. I remember thinking﹣as any teenager would﹣that the world was a deeply unfair place. I would happily pile on some additional Calculus or Chemistry, but the thought of another year in English made me want to cry (and probably did at some point). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2F35qK4fDetnTz6vSj7dqOQeFmsQhsy17GC7Jzv2KnlSIy9iNWbvck1MyPrv7MFEb_5PJbN-Fx3jGWM4Y4FikVTNxoVslzWEF4SRwab-f_W5-evDALhBjTqgAybTa8ucEJPy-Ac4XQ" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2F35qK4fDetnTz6vSj7dqOQeFmsQhsy17GC7Jzv2KnlSIy9iNWbvck1MyPrv7MFEb_5PJbN-Fx3jGWM4Y4FikVTNxoVslzWEF4SRwab-f_W5-evDALhBjTqgAybTa8ucEJPy-Ac4XQ" alt="English was by far the subject that zapped most of my mental energy."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anyone that struggles with writing (or any creative pursuit, really) knows that when it doesn’t feel right, it’s not something that you can force. And if you do, you end up with a blank slate covered in word vomit. &lt;/p&gt;

&lt;p&gt;But what most people don’t realize is that the resistance to writing is not unlike the resistance to other skills. And the antidote? Practice. Exposure. Iteration.&lt;/p&gt;

&lt;p&gt;Practice makes any seemingly impossible task &lt;em&gt;familiar&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;So since the days of braces and locker accessories, I’ve learned to tackle writing in a way that isn’t so scary. And the more I write, the more I feel the &lt;a href="https://www.jimcollins.com/concepts/the-flywheel.html" rel="noopener noreferrer"&gt;flywheel effect&lt;/a&gt; in action. I hope this article inspires the writer inside each person reading this, through the understanding that writing is a skill that can be acquired through continuous effort, easily accessed by creating a process with less friction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing is Thinking
&lt;/h2&gt;

&lt;p&gt;The first step to becoming “a writer” is acknowledging that no metric defines someone as “a writer”. And that anyone unabashedly claiming to be an expert, is likely far from it. You know what makes you a writer? Writing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Each time you write a page, you are a writer. Each time you practice the violin, you are a musician. Each time you start a workout, you are an athlete. Each time you encourage your employees, you are a leader. - &lt;a href="https://amzn.to/31t6vQZ" rel="noopener noreferrer"&gt;Atomic Habits&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Writing, just like all else, is a muscle that can be flexed and built up into a habitual process that eventually flows. Because at its core, writing is simple: it’s a method of sharing your thoughts.&lt;/p&gt;

&lt;p&gt;What most people don’t realize is that it’s often not actually the writing that is difficult. It’s the &lt;em&gt;thinking&lt;/em&gt; behind the writing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Writing is thinking. To write well is to think clearly. That's why it's so hard." - David McCullough&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Writing is essentially a robust tool that enables us to clarify and communicate our thoughts. While writing, you are in-effect forcing yourself to think critically and exercise parts of your brain that are typically on auto-pilot.  As Einstein once said, &lt;em&gt;“If you can't explain it simply, you don't understand it well enough.”&lt;/em&gt; In attempting to formulate a written piece, you are going through the exercise of transforming vague ideas into clarified concepts externally, but also internally. &lt;/p&gt;

&lt;p&gt;But what is often overlooked is that fact that having a clarified, unique, and thoughtful point of view greatly reduces the mental load required to write in the first place. So which is the chicken and which is the egg?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;It’s through writing that we exercise our ability to think; they’re not mutually exclusive tasks. - &lt;a href="https://www.grammarly.com/blog/improving-your-writing-will-improve-your-thinking/" rel="noopener noreferrer"&gt;Grammarly&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F3MKVWAdc861cfRCMCL-RJTSSOsEOM1HBswnVwixczwmhe960zh4u8Rb0kISlqhHByThcO2R-Fs488ZDKcxbbhs3aiSmCmrqgdXX0uZpDZyd5HpTrfR0pFP9NVXjBDQe4Ehv_PDzz" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F3MKVWAdc861cfRCMCL-RJTSSOsEOM1HBswnVwixczwmhe960zh4u8Rb0kISlqhHByThcO2R-Fs488ZDKcxbbhs3aiSmCmrqgdXX0uZpDZyd5HpTrfR0pFP9NVXjBDQe4Ehv_PDzz" alt="The Thinking and Writing cycle (TAW)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Writing and thinking are two peas in a pod. Critical thinking leads to good writing, which leads to clearer thinking, and so on. By improving your writing, you are also improving your ability to think and vice versa. So then the question then becomes, how does one activate this process?&lt;/p&gt;

&lt;h2&gt;
  
  
  Reducing Activation Energy
&lt;/h2&gt;

&lt;p&gt;The thinking &amp;lt;&amp;gt; writing (TAW) cycle described above is powerful, but also lofty. If I were to ask you to wake up tomorrow and have a finished article by EOD, I’m diminishing the mental load of you taking on two tasks: (1) the process of ideation and (2) the difficult task of abstracting these concepts into something that does your ideas justice. Almost certainly, one would be sacrificed across this short timeline. Most often, the focus on “producing an article” results in a majority of energy going into the output (2), without properly formulating the “why” behind an article (1), thereby making the writing process more painful overall. It’s the TAW cycle with a whole lot of friction, because you only have one turn around the wheel.&lt;/p&gt;

&lt;p&gt;So my solution is simple: I separate the two and exercise the cycle many times over.&lt;/p&gt;

&lt;p&gt;It’s extremely rare that I’ll come up with a concept and knock out the piece in one sitting. And I do this for a very specific reason: if I were to hold myself to that standard, I would never even make it to the drawing board. I’ve designed my writing process to embrace the practice of writing (and thinking), with a focus on reducing the activation energy to show up in the first place. &lt;/p&gt;

&lt;h2&gt;
  
  
  My Writing Process
&lt;/h2&gt;

&lt;p&gt;Writing is by nature, a very personal and subjective process. So, if you take anything away from this article, it is not the specific steps that I’ve identified, but instead an ethos enabling you to craft your own.&lt;/p&gt;

&lt;p&gt;To start, I would ask yourself the question, &lt;em&gt;“What environment can I create that will make it most likely for me to show up to this task?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For me, that has come down to two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Decoupling&lt;/li&gt;
&lt;li&gt;  Optimizing for one variable&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Decoupling the Writing Process
&lt;/h3&gt;

&lt;p&gt;As mentioned above, I intentionally separate out my process into multiple steps: 6 to be exact (more on this below). I do this to utilize my &lt;a href="https://www.leadershipforces.com/plan-using-energy-levels/" rel="noopener noreferrer"&gt;energy levels&lt;/a&gt; optimally, across active and passive states. I don’t always have the mental energy to hard-core execute (active), so I allow myself to constantly and passively conceptualize, without too much pressure. The process is designed such that when I’m ready to enter an active state, like a focused writing session, I’ve already established a clear line of thinking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Writing Process Steps:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  1) Ideation: Passive&lt;/li&gt;
&lt;li&gt;  2) Tracking: Active&lt;/li&gt;
&lt;li&gt;  3) Outline - Active&lt;/li&gt;
&lt;li&gt;  4) Idea Arbitrage - Passive&lt;/li&gt;
&lt;li&gt;  5) Research - Active&lt;/li&gt;
&lt;li&gt;  6) Writing - Active&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While this ping-pong between passive and active states may seem chaotic to some, it is exactly what enables me to get things done without feeling overwhelmed. &lt;/p&gt;

&lt;p&gt;There’s a great tool called &lt;a href="https://chrome.google.com/webstore/detail/draftback/nnajoiemfpldioamchanognpjmocgkbg" rel="noopener noreferrer"&gt;Draftback&lt;/a&gt;, which essentially lets you “go back in time to look over your own shoulder as you write”.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1168978288968183808-782" src="https://platform.twitter.com/embed/Tweet.html?id=1168978288968183808"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1168978288968183808-782');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1168978288968183808&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;I use the tool to reflect on my process and understand how I iterate through an article. Naturally, I’ve also used it to consider how I might improve my process.&lt;/p&gt;

&lt;p&gt;For example, this article (the one you’re reading), was created over a period of over a month where I would go back and forth between thinking and writing, until I finally had solidified what I was trying to say. It took over 19k revisions. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FmUP3UJCrvehszlNLwtM_mJ2ggTcCDMikhXI7ky81SFwb5jcoqAc5kPq216huyFGbbBK_gyaCbxKiFC23-QA0QxjiGAD0nIVtovskPVuF3eYqlud2MDpN8b3Hg7srlcpHsF2Q7KE6" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FmUP3UJCrvehszlNLwtM_mJ2ggTcCDMikhXI7ky81SFwb5jcoqAc5kPq216huyFGbbBK_gyaCbxKiFC23-QA0QxjiGAD0nIVtovskPVuF3eYqlud2MDpN8b3Hg7srlcpHsF2Q7KE6" alt="The evolution of this article."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another article that I wrote, literally took six months and many more writing sessions. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fx6hLYRUuDTF1_uDDKNGe6jNtN99pFl6clNM8DCut20CD3OupJK-do0FSSPDr4bQPy-PodW8Is6zwsd2VXiQMRjj1mxlJAVrzvwE_SISew-eg05NY-paWGg6n5cKNXFCIYhmxvWhS" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fx6hLYRUuDTF1_uDDKNGe6jNtN99pFl6clNM8DCut20CD3OupJK-do0FSSPDr4bQPy-PodW8Is6zwsd2VXiQMRjj1mxlJAVrzvwE_SISew-eg05NY-paWGg6n5cKNXFCIYhmxvWhS" alt="The evolution of my Effective Leadership article."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m not necessarily encouraging others to iterate this many times, and if anything I’m trying to scale back my edits, but it shows that the writing and thinking process takes time to get right.&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimizing for One Variable
&lt;/h3&gt;

&lt;p&gt;I’ve learned to accept that you can’t have everything in life. That sentiment permeates into writing.&lt;/p&gt;

&lt;p&gt;In my opinion, writing should never be something that you do just to check something off of your to-do list. At its core, writing is a mechanism to try to deliver value to others. And over time, I’ve defined that as my core goal. &lt;/p&gt;

&lt;p&gt;In order to achieve this, I have to come to terms with trading off other variables like speed. As mentioned, many articles of my articles take weeks, while others sometimes take months.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F10%2Fimage-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F10%2Fimage-1.png" alt="The number of days it has taken my to write articles on my personal blog."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This clearly isn’t always to my advantage, but it gives me something to orient around. If I tried to optimize completely across quality, speed, SEO-potential, among other variables, I would get paralyzed. So instead, I focus on one thing: quality. &lt;/p&gt;

&lt;p&gt;If you’re in a similar place of liberty to work on articles at your own pace, you may also consider making quality your north star. The point here isn’t that you need to choose the same north star, but to establish one that you form your process around. On that note, let’s jump into my writing process. &lt;/p&gt;

&lt;h1&gt;
  
  
  How I Write: 6 Steps
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1) Ideation: Passive
&lt;/h2&gt;

&lt;p&gt;The first step in my process is intentionally &lt;strong&gt;passive&lt;/strong&gt;. In order to get my TAW loop going, I set an open invitation to my brain to take note of anything interesting. More specifically, I look for anything within the intersection of: (1) interesting, (2) doesn’t precisely exist in that form, and (3) something I can contribute uniquely to. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F69HNUU5KtotGTWL8-GC9YdLx729yqHaMmCqaUQnyed9mX6WAZgmILBLKVp-VPKSaBG0U0pWeOU8Jhf92cWJgG362MmKp7yCULHoNdJ27wJJXku3nLCKeAmTdm-3bJpwvr2eUslGO" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F69HNUU5KtotGTWL8-GC9YdLx729yqHaMmCqaUQnyed9mX6WAZgmILBLKVp-VPKSaBG0U0pWeOU8Jhf92cWJgG362MmKp7yCULHoNdJ27wJJXku3nLCKeAmTdm-3bJpwvr2eUslGO" alt="Idea ikigai"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the barrier to entry to launching a blog or publish an article these days being so low, there is candidly a lot of crap out there. Before jotting down an idea, I ask myself, &lt;em&gt;“Does this exist on the internet today?”&lt;/em&gt; and if not, &lt;em&gt;“Should it?”&lt;/em&gt;. If I can answer those questions with confidence, I’ll consider pursuing the piece. For the same reason that I will never drop ship plastic goods that no one needs, I will never publish an article that I don’t truly believe can benefit others. &lt;/p&gt;

&lt;p&gt;It’s not just about being considerate. It’s much harder to get attention on an article that is the same as thousands of others on the Internet. It’s also hard to write a good article about something you don’t care about (that’s why writing was such a draining task in school). So you can do yourself, along with the rest of the world, a favour by simply considering, &lt;em&gt;“What is something that I can uniquely contribute?”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;For example, I don’t need to tell the world that remote work is growing -- we have enough people doing that. But perhaps it would be helpful for me to talk about how someone with a &lt;a href="https://blog.stephsmith.io/non-technical-remote-jobs/" rel="noopener noreferrer"&gt;non-technical background might find a remote role&lt;/a&gt;. I’ve been through multiple of these roles myself, interviewed and hired a couple dozen non-technical remote workers, and have spent years thinking about the topic.&lt;/p&gt;

&lt;p&gt;Anything that checks the right boxes will get the TAW cycle started, but I still won’t try to force it. In a few cases, I’ll sit down and write up a full draft. But for most, this step is simply adding the concept in a new Google doc. &lt;/p&gt;

&lt;p&gt;What actually goes into the document varies significantly. Sometimes, it’s as little as a single line or link. Below are two examples, where you can see that article concepts often start out pretty basic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2Fzu1n9QMpvN9CivNO_aHoWk_BvtZ2MMdn4YK6V0_VwptD4uZ0aMvDwclgQt-UxU5DKTNjsxal8nOKo3-fl_xduEU2JG9sLDxvb_1EYXOTvQCVQ5PYXNaMLMqaTrSj9tDbtkRzDmxP" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2Fzu1n9QMpvN9CivNO_aHoWk_BvtZ2MMdn4YK6V0_VwptD4uZ0aMvDwclgQt-UxU5DKTNjsxal8nOKo3-fl_xduEU2JG9sLDxvb_1EYXOTvQCVQ5PYXNaMLMqaTrSj9tDbtkRzDmxP" alt="Basic outline for a future article about the mentality around "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FU2a0v-o7rX9hJBfrQxsoSq4nGCUgtbTp2k1DQHhXLBwAAGsedflG_nJuPKFtbcvDO5eBps3ATczevSyeQq4NZziNNGohR2zwjiwyez0ftWbxxFkOcDREb5bz9iPIS-giM-tiks0d" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FU2a0v-o7rX9hJBfrQxsoSq4nGCUgtbTp2k1DQHhXLBwAAGsedflG_nJuPKFtbcvDO5eBps3ATczevSyeQq4NZziNNGohR2zwjiwyez0ftWbxxFkOcDREb5bz9iPIS-giM-tiks0d" alt="Basic outline for a future article about positivity being a choice."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These ideas for these articles come from absolutely everywhere. Conversations, books and articles, personal experiences, and random &lt;a href="https://twitter.com/stephsmithio/status/1164942345902665729" rel="noopener noreferrer"&gt;Google searches&lt;/a&gt; have all generated inspiration for pieces. &lt;/p&gt;

&lt;p&gt;You know when you’re younger and someone disagrees with you, so they ask you to rattle off examples supporting your argument? Put on the spot, you feel stuck and unable to think of any, despite knowing there are many. The same would be true if I asked you to come up with 10 great article topics on the spot. Allowing yourself to catch onto signals passively is the most sure route to accumulating a lovely cabinet of concepts.&lt;/p&gt;

&lt;p&gt;For example, the impetus behind some of my articles came from the following:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
   &lt;td&gt;Article
   &lt;/td&gt;
   &lt;td&gt;Inspiration
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;a href="https://blog.stephsmith.io/how-to-be-great/" rel="noopener noreferrer"&gt;How to Be Great? Just Be Good, Repeatably&lt;/a&gt;
   &lt;/td&gt;
   &lt;td&gt;Internal frustration about my progress mid-year.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;a href="https://blog.stephsmith.io/finding-top-talent/" rel="noopener noreferrer"&gt;Finding Top Talent: Stop Looking Inside a Box for People Thinking Outside of One&lt;/a&gt;
   &lt;/td&gt;
   &lt;td&gt;Inspired by a hiring process that wanted to hire me, but wouldn’t allow remote work.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;a href="https://blog.stephsmith.io/setting-up-blog-with-ghost-and-digital-ocean-droplet/" rel="noopener noreferrer"&gt;Step by Step: Setting Up Ghost with a Digital Ocean Droplet&lt;/a&gt;
   &lt;/td&gt;
   &lt;td&gt;Spending hours figuring out how to set up the droplet, so figured that I could help others do the same.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;a href="https://blog.stephsmith.io/the-guide-to-remote-work/" rel="noopener noreferrer"&gt;The Guide to Remote Work That Isn't Trying to Sell You Anything&lt;/a&gt;
   &lt;/td&gt;
   &lt;td&gt;Reading so many articles online that inaccurately reflected a rosy picture of remote work and wanting to paint a more accurate image.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;a href="https://blog.stephsmith.io/when-do-you-become-a-developer/" rel="noopener noreferrer"&gt;When Do You Become a Developer?&lt;/a&gt;
   &lt;/td&gt;
   &lt;td&gt;Conversations with more experienced developer friends.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;a href="https://blog.stephsmith.io/non-technical-remote-jobs/" rel="noopener noreferrer"&gt;A New Age: Finding Non-Tech Remote Jobs&lt;/a&gt;
   &lt;/td&gt;
   &lt;td&gt;Friends asking how they can switch to remote work, without technical experience.
   &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 2) Tracking: Active
&lt;/h2&gt;

&lt;p&gt;The next step is tracking, which is basically just adding the idea to my ongoing spreadsheet. But more importantly, I’ll typically take the opportunity to quickly do some keyword research. This is for two reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I want to see if the article has the potential to rank. Even though SEO is a fancy word for a not-so-fancy industry, keyword research is essentially a mechanism to see if this is something people are actually looking for. If there is no search volume, yet I still think it can deliver value, I’ll write it anyway. But I want to be cognizant of this: Google processes billions of queries and if there is literally no search volume, I need to be able to justify why this might be.&lt;/li&gt;
&lt;li&gt;I also do keyword research at this stage to spot secondary keywords that may influence the outline I create next. I make sure to do it at this stage, because I’m not a fan of keyword stuffing, but I do believe in Google is a big data mine to understand what people want to know. If I incorporate those signals into the outline, I’m not only more likely to bring in more traffic, but genuinely deliver a better article serving people’s needs.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I could and probably will write an entire article (or 10) on how I approach SEO research, but for the purpose of this article, I’ll just share that I use these tools: &lt;a href="https://ahrefs.com" rel="noopener noreferrer"&gt;Ahrefs&lt;/a&gt;, &lt;a href="https://ads.google.com/home/tools/keyword-planner/" rel="noopener noreferrer"&gt;Keyword Planner&lt;/a&gt;, and &lt;a href="https://keywordseverywhere.com/" rel="noopener noreferrer"&gt;Keywords Everywhere&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F-937inVVaVP2HUq79c7yQHAEYqqKti_loIbGxZsz7NgFQvtgTEuDCpwfwxkIQHfPkBPKcNDk1PB50hibURbJ9c-VaWiBMfwig97ZH2SlkJCDY1nP2pQtJWqFSWreADCpm6yPvleY" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F-937inVVaVP2HUq79c7yQHAEYqqKti_loIbGxZsz7NgFQvtgTEuDCpwfwxkIQHfPkBPKcNDk1PB50hibURbJ9c-VaWiBMfwig97ZH2SlkJCDY1nP2pQtJWqFSWreADCpm6yPvleY" alt="My ongoing document tracking current, future, and past articles."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3) Outline - Active
&lt;/h2&gt;

&lt;p&gt;At this point, I’ll utilize the mix of my (rough) ideas and SEO research to create an outline. It’s always in bullet-point form and will have approximately 3-6 major headings, with sub-points underneath.&lt;/p&gt;

&lt;p&gt;It’s important to start the outline at this stage, as this will set the stage for the next step of passive “idea arbitrage”. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FsZqFK0Fsa7-XpnAljtDu7zY2DbfTJTn4DT1OkSYR5wGGhRlz9CAESVoqa1fxCHqLfZ6sUqKFmGtuxDzvNaZt7eRctoN3gJ94ysPzYPtaEZtOz580Tdlk7s3R7jUb9fhm6CQS8j3S" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FsZqFK0Fsa7-XpnAljtDu7zY2DbfTJTn4DT1OkSYR5wGGhRlz9CAESVoqa1fxCHqLfZ6sUqKFmGtuxDzvNaZt7eRctoN3gJ94ysPzYPtaEZtOz580Tdlk7s3R7jUb9fhm6CQS8j3S" alt="My original outline for my recent article, Gaining Perspective Through Untranslatable Words"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4) Idea Arbitrage - Passive
&lt;/h2&gt;

&lt;p&gt;After creating an outline, I enter the fourth stage: Idea Arbitrage﹣my personal favourite. Despite the ridiculous name I’ve chosen for this stage, I ultimately feel as though this is the part of my process which makes my articles stand out. &lt;/p&gt;

&lt;p&gt;In this stage, I simply let the article sit. I let the creative juices in my passive brain marinate and be stimulated by just about anything.&lt;/p&gt;

&lt;p&gt;If I run into an interesting tweet or quote or tidbit from an article, I’ll make sure to add it to the right outline. I do this for literally weeks or even months, until I feel like I’ve crafted a unique point of view.&lt;/p&gt;

&lt;p&gt;To augment this process, I love using two tools: &lt;a href="https://readwise.io" rel="noopener noreferrer"&gt;Readwise&lt;/a&gt; and &lt;a href="https://www.weavatools.com" rel="noopener noreferrer"&gt;Weava highlighter&lt;/a&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://readwise.io" rel="noopener noreferrer"&gt;Readwise&lt;/a&gt; syncs all of my Kindle quotes (now over 1000 highlights across 20+ books). Prior to Readwise, I literally would take time and type these into a Google sheet. But now, it’s a seamless “Sync highlights” click and a delightful UI to sift through them. I’ll typically go through new quotes monthly and add them to the respective outlines that are in the passive idea arbitrage stage.&lt;/li&gt;
&lt;li&gt;  Similarly, when I am reading an online article and a particular quote sticks out to me, I’ll utilize the &lt;a href="https://www.weavatools.com/" rel="noopener noreferrer"&gt;Weava highlighter&lt;/a&gt; to store the thought and return to them periodically. In addition to augmenting my writing process, this practice helps with reading retention.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2F9a2uWiT9aR8F1i9qgWoACkNDiCtXoipOD7ah9V4dPkJUEeoz-QdFMVe-hxQHUKwQApwOsJRlpHtUsxhRSvXblvzGkZ4zWaLMa3-aM1zBDXyw-f3y4j5yZ6l-SLQCzHAZwARsebMx" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2F9a2uWiT9aR8F1i9qgWoACkNDiCtXoipOD7ah9V4dPkJUEeoz-QdFMVe-hxQHUKwQApwOsJRlpHtUsxhRSvXblvzGkZ4zWaLMa3-aM1zBDXyw-f3y4j5yZ6l-SLQCzHAZwARsebMx" alt="Example of the Weava interface."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An important note: when I first started doing this, I would just blindly toss ideas into Evernote, but that required a whole lot of cleanup when I started writing the piece. With the new process of setting up the outline from the outset, I’m instead actively filing this information where needed. It’s my own personal Dewey Decimal system, so that when it comes down to writing a piece, I have a beautiful library to operate off of.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FYqtv2PRRAJrEj5KsK45F0Cfw2yJfXMDtBcShRssht-8eex2m-FZqJEgJMwsVuchLR4yjsEfQ2JUZXjpfTdcGcObOVz4AT7R6F7R4aarGUIxuhYtze3ejtLgzVNDQqd4Othkk50-V" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FYqtv2PRRAJrEj5KsK45F0Cfw2yJfXMDtBcShRssht-8eex2m-FZqJEgJMwsVuchLR4yjsEfQ2JUZXjpfTdcGcObOVz4AT7R6F7R4aarGUIxuhYtze3ejtLgzVNDQqd4Othkk50-V" alt="Visual of the idea arbitrage step."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5) Research - Active
&lt;/h2&gt;

&lt;p&gt;Often, a piece needs more than a few tweets or quotes to truly have authority. So, I typically augment an article with at least a few hours of active research.This stage closely mimics the research that one would do to write a college essay, but this &lt;strong&gt;only&lt;/strong&gt; happens once I’ve done quite a bit of passive ruminating, so that I have a clear POV of what I want to convey. I thoroughly enjoy this phase, as it allows me to “write to learn”; to build my articles off of not just my intuition, but the amazing work of others. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“To write a great book, you must first become the book.”  - &lt;a href="https://amzn.to/31t6vQZ" rel="noopener noreferrer"&gt;Atomic Habits&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 6) Writing - Active
&lt;/h2&gt;

&lt;p&gt;Finally, it’s time for the hard part: writing. &lt;/p&gt;

&lt;p&gt;I’ll typically only sit down to really craft a piece once I have at least a few thousand words of what I’ve started to call “notes ‘n quotes”. The reason I do this is simple: I am not a natural writer. Putting words down on paper sometimes comes naturally to me, but often it does not. And that means that in order for me to consistently write, I need to make it as easy as possible for me to build the habit; I need to lower the activation energy to start. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“When scientists analyze people who appear to have tremendous self-control, it turns out those individuals aren’t all that different from those who are struggling. Instead, “disciplined” people are better at structuring their lives in a way that does not require heroic willpower and self-control.” - &lt;a href="https://amzn.to/31t6vQZ" rel="noopener noreferrer"&gt;Atomic Habits&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If I’m sitting down to a blank slate of pixels, you better bet my brain sets off an alarm that “This will be hard and grueling and you can’t do this, Steph!”. But if instead, I’m sitting down to an outline that I’ve been passively ruminating on, that’s supported by concrete examples, it doesn’t seem so bad. I’m effectively approaching the writing phase, with maybe 7/10 of the work already completed. &lt;/p&gt;

&lt;p&gt;Had I decided to write an article from scratch in a day, not only would the end result be more shallow, it would freak me the f*** out. And quite frankly, I just wouldn’t do it. In effect, I’m trying to be patient with my own psyche and set up an environment that makes me most likely to get started. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“There's a secret that real writers know that wannabe writers don't, and the secret is this: It's not the writing part that's hard. What's hard is sitting down to write.” - The War of Art&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When I am struggling to put words on paper, I’ll ask myself the following questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;em&gt;How would I explain this to a friend?&lt;/em&gt; This helps me discern whether I’ve actually spent enough time thinking through the core concepts.&lt;/li&gt;
&lt;li&gt;  &lt;em&gt;What specifically are you getting hung up on?&lt;/em&gt; I find that sometimes I can get caught up in certain problematic routines. For example, if I created an outline with a ton of info, sometimes I struggle to strip some of it out. If I reflect and catch myself doing this, I’ll more readily cut things out. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the only phase where I will set time limits. Not because I have deadlines, but because I’m trying to improve my “finishing muscle”. To this day, I still have over a dozen articles that I almost finished, but did not. And there’s a clear course across all of them. I got maybe 80-90% there, but since I didn’t finish them completely, the &lt;a href="https://twitter.com/naval/status/1158964119023652864" rel="noopener noreferrer"&gt;Lindy effect&lt;/a&gt; only becomes more material.&lt;/p&gt;

&lt;p&gt;So while not always possible, once I start the active writing process (Step 6), I try to close out the article in that particular session, get my little hit of dopamine, and then move on.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Resistance is most powerful at the finish line” - The War of Art&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Personal Disclaimer
&lt;/h2&gt;

&lt;p&gt;It’s important to note that this is &lt;strong&gt;my personal style&lt;/strong&gt; of researching and writing, built upon the constraints (or lack thereof) within my life; most markedly that this is a personal blog. I don’t have deadlines or an editor to impress. Instead, my north star is delivering articles I’m proud of. In all honesty, this process almost certainly would not work in a paid writing environment solely due to turnaround expectations, but as an independent writer, I love the flexibility it gives me to create content that I’m proud of. &lt;/p&gt;

&lt;p&gt;It’s also worth noting that because I’ve been doing this for a while, I have over 50 pending articles at some stage in the process. I estimate that for every article I publish, a few new article ideas spring to mind, so I’m never really jaded or in search of something to write. I view this entire process as a way to formulate, process, and share my ideas, but I’ve found that a byproduct has been that it helps me think more clearly. As I go through the weeks or months of dwelling on the core takeaways of a given article, I learn to transform what are sometimes vague and lacking concepts into tactile, digestible pieces. &lt;/p&gt;

&lt;p&gt;As such, I’ve started to use the very process for a book that I hope to write: Thinking in Curves. &lt;em&gt;It’s currently in the Idea Arbitrage state (and been there for months).&lt;/em&gt; :)&lt;/p&gt;

&lt;h2&gt;
  
  
  Just Do It
&lt;/h2&gt;

&lt;p&gt;In hopes that you will go out there and write, I encourage you to focus on the process and not the outcome. Many of your articles, as many of mine are, will be flops. Even some of your best may never get noticed.&lt;/p&gt;

&lt;p&gt;The best way to improve your writing skills is to write (and to write a lot), so if you’re focused on a process that helps you build new skills, most notably your ability to parse and process information tactfully, you cannot lose.&lt;/p&gt;

&lt;p&gt;With any skill that you hope to acquire, there is no magic moment. It’s a never-ending process of going from &lt;a href="https://blog.stephsmith.io/how-to-be-great/" rel="noopener noreferrer"&gt;good to great&lt;/a&gt;. And certainly with writing, a post will never write itself, so it’s up to you to keep yourself accountable. &lt;/p&gt;

&lt;p&gt;At the end of the day, there are few things more rewarding than looking back at a collection of work that you’ve delivered to the world that is indeed all your own. So get out there, design a process that works for you, and push forward with no intention of an expiry date.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“The professional has learned that success, like happiness, comes as a by-product of work.” - &lt;a href="https://amzn.to/2O1NtNe" rel="noopener noreferrer"&gt;The War of Art&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Recommended Reading:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://amzn.to/2ZgFLko" rel="noopener noreferrer"&gt;The War of Art&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://amzn.to/31t6vQZ" rel="noopener noreferrer"&gt;Atomic Habits&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://amzn.to/2Xd1MUa" rel="noopener noreferrer"&gt;The Power of Habit&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recommended Research Tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://www.weavatools.com/" rel="noopener noreferrer"&gt;Weava highlighter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="http://readwise.io/" rel="noopener noreferrer"&gt;Readwise&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.google.com/sheets/about/" rel="noopener noreferrer"&gt;Google Sheets&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recommended SEO Tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://ahrefs.com" rel="noopener noreferrer"&gt;Ahrefs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://ads.google.com/home/tools/keyword-planner/" rel="noopener noreferrer"&gt;Keyword Planner&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://keywordseverywhere.com/" rel="noopener noreferrer"&gt;Keywords Everywhere&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find me on &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, read more &lt;a href="https://blog.stephsmith.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;, or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>blog</category>
      <category>productivity</category>
      <category>tips</category>
    </item>
    <item>
      <title>Dropping the Agenda: A Road to Effective Leadership</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Sun, 15 Sep 2019 10:33:37 +0000</pubDate>
      <link>https://forem.com/stephsmithio/a-new-leader-s-thoughts-on-leadership-fp3</link>
      <guid>https://forem.com/stephsmithio/a-new-leader-s-thoughts-on-leadership-fp3</guid>
      <description>&lt;p&gt;This was originally published on &lt;a href="https://blog.stephsmith.io/effective-leadership/" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I often write about remote work, learning to code, and technology.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The greatest leader is not necessarily the one who does the greatest things. He is the one that gets the people to do the greatest things.” – Ronald Reagan&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I recently woke up with the realization that I’ve been leading a team for well over a year. What was once very foreign and daunting is still a work in progress, yet somehow feels manageable. Even, &lt;em&gt;familiar&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;As I reflect on my evolution in leadership, I can’t help but think of the early days; back when I had &lt;em&gt;“no clue what I was doing”&lt;/em&gt;. What stands out is the troublesome perception of leadership that I started with, extracted from pattern-matching the “leaders of our day” (think Musk, Jobs). &lt;/p&gt;

&lt;p&gt;I had mistakenly confused &lt;strong&gt;visionaries&lt;/strong&gt; with &lt;strong&gt;leaders&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I’ve now learned that when these two are synonymous, an incredibly powerful dynamic is unlocked, but also that these two attributes can just as easily be mutually exclusive.&lt;/p&gt;

&lt;p&gt;This realization has led me to further question, &lt;em&gt;“What other misconceptions might there be about leadership?”&lt;/em&gt;. This article is my perspective on exactly that. But first, a story:&lt;/p&gt;

&lt;h2&gt;
  
  
  Being Handed Opportunity
&lt;/h2&gt;

&lt;p&gt;Some people know that I lead a Publications team. To date, this has been one of the most amazing opportunities that I’ve been given. But what many don’t know is that I found myself leading this team of twenty at the ripe age of 24. And when I began to lead this team, I was by far the youngest of the group.&lt;/p&gt;

&lt;p&gt;Many of my new teammates had a decade (or two) on me, and despite how much I wanted to believe that age was just a number, I could feel the apprehension. But how could I blame them? Now that I was in the “driver’s seat”, I too felt like an imposter.&lt;/p&gt;

&lt;p&gt;Here’s the thing: when you enter a position where no one is going to assume you know what you’re doing, you need to work that much harder to prove that you do.  So, I acknowledged that if I didn’t have all the answers, I better find them. &lt;/p&gt;

&lt;p&gt;What I didn’t realize at the time was that the sheer act of acknowledging that I wasn’t born a leader and that &lt;a href="https://twitter.com/jenistyping/status/1153670803268853760" rel="noopener noreferrer"&gt;I would need to learn leadership&lt;/a&gt;﹣just like any other skill in life﹣was a huge step in the right direction. But that in itself led me to a crossroads, or rather, a question: &lt;em&gt;what makes a good leader?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes a Good Leader?
&lt;/h2&gt;

&lt;p&gt;The Internet is riddled with advice for people just like me, searching for queries like “what makes a good leader” (SV: 3600), “how to be a good leader” (SV: 9900), and “qualities of a good leader” (SV: 10500). &lt;/p&gt;

&lt;p&gt;Unfortunately, many of the results are easy to process but hard to action. For example, how exactly does one “become a great communicator”? But what I find especially troublesome about these pieces of advice is that I think they paint a very narrow picture of leadership. &lt;/p&gt;

&lt;p&gt;When I think back to some of my best managers, I never equated their ability to lead with always having a smile on their face or never faltering while leading a meeting. Similarly, their ability to “make decisions quickly” (or not), having a threshold number of years in industry (or not), or the strength of their conviction (or not), often didn’t correlate with their leadership ability or potential. These common conventions are found all over the Internet, but quite frankly, don’t always add up.&lt;/p&gt;

&lt;p&gt;So as I apprehensively started leading, I took another approach. I made it my goal to &lt;strong&gt;learn&lt;/strong&gt; how to be a good leader, iteratively. I read psychology books. I held discussions with fellow managers. I intentionally asked for feedback from those around me. I tried to distill the skills, attitudes, and choices that made my prior managers effective. Having had my fair share of good and bad managers, I wanted to at least &lt;em&gt;try&lt;/em&gt; being the former.&lt;/p&gt;

&lt;p&gt;I slowly, but surely began to understand that there are two types of leadership: “by consent” and “by force”. And even though leadership is often represented as a convoluted practice that few truly master, it’s really just a representation of human behaviour and cooperation. If you miss that, you will inevitably fall into the “by force” bucket and as Napolean Hill reminds us in his book &lt;a href="https://amzn.to/2zaz2hg" rel="noopener noreferrer"&gt;Think and Grow Rich&lt;/a&gt;, &lt;em&gt;“History is filled with evidences that Leadership by Force cannot endure”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Over a year and a few stumbling blocks later, I have now formed a much clearer perception of how we can get to this state of consent. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The competent leader requires no "title" to give him the respect of his followers. - Napoleon Hill, &lt;a href="https://amzn.to/2zaz2hg" rel="noopener noreferrer"&gt;Think and Grow Rich&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Learning to Lead
&lt;/h2&gt;

&lt;p&gt;At its core, I believe good leadership results from learning to lead. And in order to learn to lead, three key principles need to ring true. These pillars of good leadership don’t necessarily mirror what you’ll find in the hundreds of listicles floating across the web, but they are based on the principles of interaction and connection﹣not power﹣and thus I believe should always ring true. &lt;/p&gt;

&lt;p&gt;These principles are also non-negotiables, so once internalized, will create the right value system to guide leaders toward the right actions. And with the &lt;a href="https://en.wikipedia.org/wiki/Pareto_principle" rel="noopener noreferrer"&gt;Pareto principle&lt;/a&gt; in mind, I believe that you can get yourself in the top percentile of leaders by simply embodying the following behaviour:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Have humility&lt;/li&gt;
&lt;li&gt;Scrap any agenda&lt;/li&gt;
&lt;li&gt;Lead with through influence&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When I reflect back on truly amazing leaders, there are very few things that seem to ring true across all I’ve encountered. And ultimately, it’s been their uncanny ability to bring out the best in others, through truly caring, having humility, and leading through influence. &lt;/p&gt;

&lt;h3&gt;
  
  
  Imagine a World
&lt;/h3&gt;

&lt;p&gt;Before jumping in, I want to convey why I care about good leadership (and why you should too). &lt;/p&gt;

&lt;p&gt;At the heart of society we find people. At the heart of people’s lives we find work﹣and a lot of it. In fact, the &lt;a href="https://www.businessinsider.com/disturbing-facts-about-your-job-2011-2" rel="noopener noreferrer"&gt;average American spends 90000 hours of their life at work&lt;/a&gt; over their lifetime, yet 80% are dissatisfied with their jobs. That’s over a decade of straight, continuous work. &lt;/p&gt;

&lt;p&gt;It’s not a new concept that fulfilling work creates a happier society, while non-fulfilling or toxic work, destroys the psyche. While there are many inputs that go into making a job stressful or negative, a bad boss normally tops that list. In fact, &lt;a href="https://www.huffpost.com/entry/8-unsettling-facts-about_b_6219958" rel="noopener noreferrer"&gt;75% of employees report that their bad boss is the worst part of their workplace&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’d like to imagine a better world.&lt;/strong&gt; One where good leadership is the norm and where &lt;a href="https://en.wikipedia.org/wiki/Kiss_up_kick_down" rel="noopener noreferrer"&gt;“kissing up and kicking down”&lt;/a&gt; is not tolerated. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“We needed help to create a world where bad managers are the exception, and the learning curve to become a good manager isn’t so high.” - &lt;a href="https://knowyourteam.com/blog/2019/08/08/after-5-years-of-bootstrapping-know-your-team-we-raised-500000-with-indie-vc/" rel="noopener noreferrer"&gt;Know Your Team&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In order to get there, I think we need an updated view of effective leadership that corners on this idea of constant iteration. &lt;strong&gt;Leadership has never been and should never be viewed as a skill that people are born with or without.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And to access this ideal world, our organizations need to reprioritize. &lt;/p&gt;

&lt;p&gt;We need to celebrate &lt;a href="https://www.linkedin.com/pulse/what-i-learned-from-linkedin-ceo-jeff-weiner-zoomtopia-eric-s-yuan/" rel="noopener noreferrer"&gt;compassionate management&lt;/a&gt; rather than the next unicorn to have scaled quickly, at whatever the cost. We need to recognize that any organization, however successful, is made up of thousands of people pushing that vision forward. We need to recognize that good leaders lead &lt;strong&gt;people&lt;/strong&gt;, not just a company. &lt;/p&gt;

&lt;p&gt;I want to dismiss the bells and whistles that circle leadership books and pare it down to a few simple principles, that I believe action us towards that ideal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And with that world in mind, let’s dive in.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1.0 Having Humility
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“When I wake up in the morning, I always think about three things: What are my strengths, what are my weaknesses, and did I work hard enough yesterday” - Eric Yuan, Zoom (&lt;a href="https://www.glassdoor.com/blog/eric-yuan-zoom/" rel="noopener noreferrer"&gt;Glassdoor #1 Rated CEO&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Signaling Trust
&lt;/h3&gt;

&lt;p&gt;When I started leading, my first instinct was to exude confidence. If I wasn’t always confident, how could my team have confidence in me as a leader?&lt;/p&gt;

&lt;p&gt;I’ve now learned that confidence shouldn’t be the central point of optimization for leaders. Instead, it should be &lt;strong&gt;humility&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Humility is commonly defined as &lt;em&gt;“a modest or low view of one's own importance; humbleness”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If we strip out the negative connotation, it’s simply the ability to see yourself objectively; your good and bad qualities alike. Although you don’t often find leadership books calling for this underrated trait, I would argue that &lt;strong&gt;humility is a leader’s greatest asset.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why is this? &lt;/p&gt;

&lt;p&gt;Let’s start from first principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Becoming a leader does not inherently make your ideas more or less right.&lt;/li&gt;
&lt;li&gt;Becoming a leader does not inherently make you more or less skilled. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When you become a leader, very little actually changes. Sure, you get a nice new title to toss up on your LinkedIn profile and maybe a corporate credit card. But you know what doesn’t change in that moment? Your skillset. Your intelligence. Your ability to make mistakes.&lt;/p&gt;

&lt;p&gt;Unfortunately, when some individuals get promoted, their confidence skyrockets, despite no respective change in ability occuring. Moreover, many people utilize confidence as a signaling tool; a proxy for level of ability. &lt;/p&gt;

&lt;p&gt;However, it’s important to understand that confidence does not promise possession of skill. Confidence that doesn’t match skill-level falls into two buckets: doubt or delusion. Both become detrimental when the delta between confidence and ability is unearthed by others. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FQhNkk-fQzhCL0QKWQ_OhJIgPJ6U2bt-YkAoGRe4ZP6p90pJeSIpRQYk_0F6CMB36HHmE2wXKMdHu2uc9r262I7vSfWVGLQmM1kTcbR3N731nqPn-Ir-Ji6SH8cPELPSf4Ej4mEBu" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FQhNkk-fQzhCL0QKWQ_OhJIgPJ6U2bt-YkAoGRe4ZP6p90pJeSIpRQYk_0F6CMB36HHmE2wXKMdHu2uc9r262I7vSfWVGLQmM1kTcbR3N731nqPn-Ir-Ji6SH8cPELPSf4Ej4mEBu" alt="The confidence:ability mismatch results in delusion and doubt."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A confident leader that lacks the requisite skills is much worse than the humble individual that can follow through. By faking confidence, you break trust between your team and are signaling that their perception of you is more important than a relationship based in reality. And since leading a team is all about influence﹣not illusion of control﹣you are destroying the very fabric of that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FWJmJKgafACygCCXZ3CfALzTn69cKdkuKAxu61sYD53ck4E3Hk9Qpj2DMtz4MxCxJ2c1UgUgkRNhbGrVrEiOH9JsbYfkBo6k0OtfrHZayQpamOC91nmkqysUEvwpnYk2kX2X9x6f4" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FWJmJKgafACygCCXZ3CfALzTn69cKdkuKAxu61sYD53ck4E3Hk9Qpj2DMtz4MxCxJ2c1UgUgkRNhbGrVrEiOH9JsbYfkBo6k0OtfrHZayQpamOC91nmkqysUEvwpnYk2kX2X9x6f4" alt="Your team will always know your level of skill, regardless of the confidence exuded. Overconfidence only puts trust into question."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More importantly, in this state of overconfidence, a leader is shielding themselves from the possibility of improvement. The precursor to ability is awareness and targeted effort, yet overconfidence blocks one’s ability to even recognize that there is more to learn.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The most difficult subjects can be explained to the most slow-witted man if he has not formed any idea of them already; but the simplest thing cannot be made clear to the most intelligent man if he is firmly persuaded that he knows already, without a shadow of doubt, what is laid before him.” -  Leo Tolstoy&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The Antidote
&lt;/h3&gt;

&lt;p&gt;Just like confidence, humility is indeed also a signaling tool﹣to the world and to oneself. But, the big differentiator between humility and confidence is that humility is actually tethered to one’s ability. &lt;/p&gt;

&lt;p&gt;Humility is the antidote to overconfidence. With an accurate view of your ability, you are unlocking the door to actually improve. &lt;/p&gt;

&lt;p&gt;And when practiced effectively, humility enables leaders to see themselves objectively; to acknowledge that their ideas are no more, but also no less, important than another person’s. In understanding this deeply, you are creating the right standard for rapport with your team. &lt;/p&gt;

&lt;p&gt;Humility is confidence in &lt;strong&gt;what&lt;/strong&gt; you know, not &lt;strong&gt;that&lt;/strong&gt; you know. It’s not complete confidence, it’s representative confidence﹣the only type based in reality.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FIndYxNgjOHqaGp-jAgtIOSTuvft_pzv7TRxWZY5bvoBWZ7Em8WXSu6jFiO3TGONQQlbfaizRSpCzUhIOV0L0XNR8PbOj7L99kBGhPL7rK6BO4qlQ76pYkjzkOrzS7VD6xjAP0roe" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FIndYxNgjOHqaGp-jAgtIOSTuvft_pzv7TRxWZY5bvoBWZ7Em8WXSu6jFiO3TGONQQlbfaizRSpCzUhIOV0L0XNR8PbOj7L99kBGhPL7rK6BO4qlQ76pYkjzkOrzS7VD6xjAP0roe" alt="Humility enables the intelligent leader to spot gaps and improve."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Humble leaders know they don’t have all the knowledge or answers and therefore they actively listen to learn. They also know their own limitations and that self-awareness helps them get better. - &lt;a href="https://www.forbes.com/sites/forbescoachescouncil/2017/08/09/the-paradox-of-leadership-displaying-humility-alongside-confidence/#10e7cdab205b" rel="noopener noreferrer"&gt;Orly Maravankin&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Humble Confidence
&lt;/h3&gt;

&lt;p&gt;All leaders should be striving toward a humble confidence; the keenest sense of awareness for their true capability. Humble confidence is in effect, self-realization, when the true antithesis to humility is ego or pride or arrogance, and perhaps at the worst end of the spectrum, delusion.&lt;/p&gt;

&lt;p&gt;The beauty of humility is that it’s absolutely essential for developing all of the other skills or attributes that a leader should possess.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seeking Feedback
&lt;/h3&gt;

&lt;p&gt;If humility is the antidote to overconfidence, its partner in crime is feedback. &lt;/p&gt;

&lt;p&gt;Once a leader has embraced the concept that they won’t always have the answers, it’s much easier to be authentic and vulnerable. Utilize your desire to improve as an asset, and bring your team along for the ride.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Advice seeking is a form of powerless communication that combines expressing vulnerability, asking questions, and talking tentatively.”&lt;/em&gt; - &lt;a href="https://amzn.to/31yRZHb" rel="noopener noreferrer"&gt;Give and Take&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some leaders shy away from highlighting mistakes or requesting direct feedback, so as to not compromise people’s perception of them as a leader. Contrary to this belief, asking your team for feedback is often a net positive.&lt;/p&gt;

&lt;p&gt;In fact, there is a set of research called the &lt;a href="https://en.wikipedia.org/wiki/Pratfall_effect" rel="noopener noreferrer"&gt;Pratfall effect&lt;/a&gt;, which suggests that exhibiting a lack of perfection can actually result in enhanced trust and interpersonal appeal, so long as you’re relatively competent. &lt;/p&gt;

&lt;p&gt;So talk openly about your mistakes! Rid the stigma that always being right is better than always being reasonable. Embrace the transparent, unsurprising, and very human fact that sometimes you mess up, and that you’re totally resolved about it. By definition, if you’re working towards something difficult, mistakes will be made. If they aren’t, it’s likely that you aren’t taking enough risks. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1153670796406996992-608" src="https://platform.twitter.com/embed/Tweet.html?id=1153670796406996992"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1153670796406996992-608');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1153670796406996992&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Leaders need to learn to stomach the concept of risk&amp;lt;&amp;gt;reward, and be okay with the mistakes the must come with that. And in being transparent about these mistakes, people will respect you more for being an open book, rather than exuding levels of fake confidence. &lt;/p&gt;

&lt;p&gt;This public introspection also  enables your team to be more effective, by giving them a seat at the table. Ideally, you hired a bunch of smart, creative people to contribute to the mission, not just agree with your ideas. The best teams are dynamic in thought and if you are in full resolve about your own opinion, you prohibit that dynamic from flourishing. Malcolm Gladwell relates to this concept in his book&lt;a href="https://amzn.to/2Fcnn4K" rel="noopener noreferrer"&gt; Outliers&lt;/a&gt;, by reminding us that &lt;em&gt;“planes are safer when the least experienced pilot is flying, because it means the second pilot isn’t going to be afraid to speak up”&lt;/em&gt;. The same is true with leadership. If your team is afraid to speak up, you better bet they won’t stop you from nose-diving.  &lt;/p&gt;

&lt;p&gt;In short, good leadership comes from those who actively invest in learning how to lead well, and without asking your team for input, you’ll never know if you’re moving in the right direction. It would be like designing a product without talking to your users. While it happens often, it rarely succeeds. &lt;/p&gt;

&lt;h2&gt;
  
  
  2.0 Drop the Agenda
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Before you are a leader, success is all about growing yourself. When you become a leader, success is all about growing others.” – Jack Welch&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With the strong foundation of humility, a good leader needs to take the next step and drop any agenda that may have once existed. As an individual contributor, people are often struggling to have their work seen or their voice heard. But once you transition into a leadership role, it no longer becomes about you. Your role is to prioritize the success of your team over your own. That is the most common thing that new leaders miss: your new role is not just a continuation of your old. You must completely realign your priorities. &lt;/p&gt;

&lt;p&gt;And this is exactly what I mean by scrapping the agenda. Reversing your priorities such that your personal gain is no longer at the top of the totem pole. Without doing this, you will never be able to establish the level of trust that you need with your team. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F0KV16IhmES8Ym9QSzIsVTEJvol3MdQuagscPwrOKBxOowBU26qvtB9usCgBpU_ECTcdviQDJP8HrT8MqI822T3hV3KbzmtZKp8RC4FSLxUsIw0H4WcE90MgdZe5K8D_Ag40BivfK" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F0KV16IhmES8Ym9QSzIsVTEJvol3MdQuagscPwrOKBxOowBU26qvtB9usCgBpU_ECTcdviQDJP8HrT8MqI822T3hV3KbzmtZKp8RC4FSLxUsIw0H4WcE90MgdZe5K8D_Ag40BivfK" alt="LinkedIn post from David Neal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So then the question becomes, how do you establish trust with your team?&lt;/p&gt;

&lt;p&gt;You need to ensure that your actions match your values. It’s a simple statement, but is easily overlooked in practice. &lt;/p&gt;

&lt;p&gt;Jeff Weiner, CEO of LinkedIn, conveyed this by explaining that &lt;a href="https://www.linkedin.com/pulse/what-i-learned-from-linkedin-ceo-jeff-weiner-zoomtopia-eric-s-yuan/" rel="noopener noreferrer"&gt;generating trust was foundational&lt;/a&gt; as he led the company through the early days, their IPO, and their subsequent acquisition. For him, trust was a function of consistency/time, both of which had no substitute in the “trust equation”. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/swlh/how-to-lead-when-you-have-no-authority-9f22206356d4" rel="noopener noreferrer"&gt;Trust also comes from the combination of things&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A belief that you have someone’s best interest at heart&lt;/li&gt;
&lt;li&gt;  The confidence that you have the ability to help that individual&lt;/li&gt;
&lt;li&gt;  Demonstrating the character that &lt;strong&gt;especially&lt;/strong&gt; in tough situations, you will do the right thing. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the end of the day, trust is a feeling. And in the case of leadership, trust comes from the faith that someone truly has your best interest at heart. That’s exactly why there can be no back-channeling. No kissing up and kicking down. No blaming. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Trust is not an action or a resume, it is a feeling that others have about you.” - &lt;a href="https://medium.com/swlh/how-to-lead-when-you-have-no-authority-9f22206356d4" rel="noopener noreferrer"&gt;Matt Russell&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"If a leader is a REAL LEADER, he will have no need to advertise that fact except by his conduct-his sympathy, understanding, fairness, and a demonstration that he knows his job." - &lt;a href="https://amzn.to/2zaz2hg" rel="noopener noreferrer"&gt;Think and Grow Rich&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;People say that “leadership starts at the top”, and that’s because leaders need to enable their peers to operate from a place of 360° trust, meaning that trust is not unidirectional, but instead above, below, and lateral. That is exactly why if a leader is operating from a place of fear, it’s nearly impossible for them to lead effectively, because that trust is likely uni-directional, if present at all. &lt;/p&gt;

&lt;p&gt;Part of “ditching your agenda” and enabling trust is to care personally (one of the fundamental pillars of &lt;a href="https://amzn.to/2zYk6TG" rel="noopener noreferrer"&gt;Radical Candor&lt;/a&gt;) to the point that you are no longer &lt;a href="http://www.lishennair.com/2013/12/empathize-dont-sympathize.html" rel="noopener noreferrer"&gt;sympathizing, but instead empathizing&lt;/a&gt;. Your team’s problems become just as much your own. The same is true for failures. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Jeff explained to me that empathy is feeling what another person feels. Compassion is empathy plus action. It’s actually doing something to help the other person. In a work environment, this involves stepping back to be a “spectator of your thoughts” and taking time to understand others. We are naturally egocentric, meaning that we see the world from our own perspective. There is nothing wrong with this per se, but it means that we tend to expect others to behave just as we would and to get frustrated when they act differently.”  - &lt;a href="https://www.linkedin.com/pulse/what-i-learned-from-linkedin-ceo-jeff-weiner-zoomtopia-eric-s-yuan/" rel="noopener noreferrer"&gt;Eric Yuan&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Although it doesn’t always come naturally, leadership is about learning to put yourself in the position of another. And any agenda is simply a roadblock to getting there, and thus must be completely removed from the equation. &lt;/p&gt;

&lt;h2&gt;
  
  
  3.0 Leading Through Influence
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Leading vs Managing
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Leadership is about influence, not control. I am not the first person to make this observation, but it is worth repeating. The truth is that control is an illusion. You can’t control anyone, even the people that report to you.” - &lt;a href="https://michaelhyatt.com/leadership-control-vs-influence/" rel="noopener noreferrer"&gt;Michael Hyatt&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We’ve experienced the types of leaders that are contagious. They inspire others to follow because they want to, not because they have to. They don’t just have their team’s consent, but also their enthusiasm; their belief.&lt;/p&gt;

&lt;p&gt;The only way to attain this relationship with your team is to systemize positive behaviour. And the best way to systemize positive behaviour is to live by it.  For example, the best way to motivate others to improve is to exhibit your own continuous improvement. &lt;/p&gt;

&lt;p&gt;This is one of the key differentiators between leaders and managers. &lt;a href="https://www.go2hr.ca/retention-engagement/understanding-the-differences-leadership-vs-management" rel="noopener noreferrer"&gt;Leaders have people who follow them, as opposed to managers that have people who work for them&lt;/a&gt;. It’s hard to admire someone that consistently asks, without ever giving back, or at least proving that they too can deliver. Good leaders recognize that their ability to inspire is not based out of the things they say, but the things they do. By leading through influence, leaders not only make things easier for their team, but also for themselves, as their team will reward their acts of camaraderie with mutual respect and effort. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“When people want to follow you they will always give you their best; while, if they only follow you because they have to, they will always give you the bare minimum that they can get away with.” - &lt;a href="https://medium.com/swlh/how-to-lead-when-you-have-no-authority-9f22206356d4" rel="noopener noreferrer"&gt;Matt Russell&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Talk Doesn’t Cook Rice
&lt;/h3&gt;

&lt;p&gt;In practical terms, leading through influence means taking the time to understand exactly what your team does. It also means stepping up to contribute individually and not just hand out tasks.&lt;/p&gt;

&lt;p&gt;This concept touches on a more significant takeaway that spans all work. As Napoleon Hill said, &lt;em&gt;“The world does not pay men for that which they "know." It pays them for what they DO, or induce others to do.”&lt;/em&gt; The idea that some leaders expect that they should be paid or lauded for what’s cooking “up there” is ludicrous. Leaders, no different from the independent contributor, are responsible for driving value and should never feel above doing exactly that. &lt;/p&gt;

&lt;p&gt;You know what says, “I’m the boss”? Literally being a boss at what you &lt;strong&gt;do&lt;/strong&gt;, not what you say. Your role as a leader is to inspire and enable your team to be the best they can be. The best way to achieve that is to lead by example; if you want someone to do something, do it first. Lead the goddamn way. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“If we could change ourselves, the tendencies in the world would also change. As a man changes his own nature, so does the attitude of the world change towards him.” - Gandhi&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Make the Tough Calls
&lt;/h3&gt;

&lt;p&gt;Life is filled with complication. As a leader, you can’t be there to make every decision for your team. So how do you ensure they’re making the tough calls when it matters most? By setting the example.&lt;/p&gt;

&lt;p&gt;One of the toughest calls that a leader will need to make is termination. And often, who a leader chooses to hire or fire is arguably the most important call they can make for their organization. And if you are truly prioritizing your team’s success over your own, you need to base your decisions on what will drive better outcomes, collectively. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“On a dream team, there are no ‘brilliant jerks.’ The cost to teamwork is just too high. Our view is that brilliant people are also capable of decent human interactions, and we insist upon that.” - Netflix Culture Deck&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example: if there is a team member who is a great individual contributor, but is a jerk to the rest of the team, this is &lt;strong&gt;not okay&lt;/strong&gt;. In addition to the intangibles, their impact on other members of the team almost always outweighs their individual contribution. In other words, an individual’s contribution cannot be viewed in a silo and if you’re leading the team, your action or inaction is a choice; a reward system. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The actual company values, as opposed to the nice-sounding values, are shown by who gets rewarded, promoted, or let go.” - Netflix Culture Deck&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you choose to prioritize someone’s siloed impact over their net influence, you are signaling what gets rewarded. This is particularly important once you recognize that some team members are &lt;a href="https://blog.stephsmith.io/best-practices-managing-remote-teams/" rel="noopener noreferrer"&gt;givers, while others are takers&lt;/a&gt;. Should you only account for the direct output of each individual, you are likely grossly underestimating the impact of the givers on your team.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
   &lt;td&gt;
   &lt;/td&gt;
   &lt;td&gt;Siloed Contribution
   &lt;/td&gt;
   &lt;td&gt;Team Impact
   &lt;/td&gt;
   &lt;td&gt;Total
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Person A
   &lt;/td&gt;
   &lt;td&gt;+100
   &lt;/td&gt;
   &lt;td&gt;-65
   &lt;/td&gt;
   &lt;td&gt;+35
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Person B
   &lt;/td&gt;
   &lt;td&gt;+70
   &lt;/td&gt;
   &lt;td&gt;+10
   &lt;/td&gt;
   &lt;td&gt;+80
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Person C
   &lt;/td&gt;
   &lt;td&gt;+65
   &lt;/td&gt;
   &lt;td&gt;-15
   &lt;/td&gt;
   &lt;td&gt;+60
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Person D
   &lt;/td&gt;
   &lt;td&gt;+95
   &lt;/td&gt;
   &lt;td&gt;+20
   &lt;/td&gt;
   &lt;td&gt;+115
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Person E
   &lt;/td&gt;
   &lt;td&gt;+45
   &lt;/td&gt;
   &lt;td&gt;+5
   &lt;/td&gt;
   &lt;td&gt;+50
   &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In the above example, you’ll notice that Person A may be the most effective when you isolate only for siloed contribution, but when you factor in team dynamics, their total contribution is the lowest. In some cases, the total contribution may even be negative. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“If you can recognize competition as a destructive force instead of a sign of value, you’re already more sane than most.”&lt;/em&gt; - &lt;a href="https://amzn.to/2XfocUP" rel="noopener noreferrer"&gt;Zero to One&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I also have heard some leaders say things along the lines of, “They’re just too good individually. I wouldn’t be able to replace them.” My answer, although admittedly simple, is that &lt;strong&gt;you can&lt;/strong&gt;. Being incredibly talented and a good teammate are never mutually exclusive.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1123197161997504513-987" src="https://platform.twitter.com/embed/Tweet.html?id=1123197161997504513"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1123197161997504513-987');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1123197161997504513&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Great leaders make the hard choice, and self-sacrifice in order to enhance the lives of others around them. - Brent Gleeson"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In conclusion, if you want your team to bite the bullet and make the right decisions, especially when they’re hard, it’s your responsibility to do the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting a New Agenda
&lt;/h2&gt;

&lt;p&gt;I recently listened to a conference talk, where the speaker asked the audience to “imagine a world without traffic jams”.&lt;/p&gt;

&lt;p&gt;It was the sort of question that seemed arbitrary at first, but invokes a very vivid image of a better future. From that image, you can think backward and conceptualize what would need to change for the world to get there.&lt;/p&gt;

&lt;p&gt;Now I want you to imagine a world without sh***y managers. A stark contrast compared to the reality we live in, but also not impossible. What are the steps that we need to take as a workforce to get there? What does that new wave of leaders look like? What must we no longer tolerate? &lt;/p&gt;

&lt;p&gt;What I didn’t realize when I first started this journey into leadership was that I never needed to rule the roost. I just needed to have the right core values and the rest would take care of itself. It’s truly amazing what a splash of humility, trust, and honesty can do for your team and your company.&lt;/p&gt;

&lt;p&gt;I believe this world can exist, but it takes a consistent look in the mirror for the leaders of today to learn to be the leaders of tomorrow.&lt;/p&gt;




&lt;p&gt;If you liked this article, I would recommend the following books:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://amzn.to/2O1je93" rel="noopener noreferrer"&gt;Radical Candor&lt;/a&gt; (Kim Scott)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://amzn.to/31yRZHb" rel="noopener noreferrer"&gt;Give and Take&lt;/a&gt; (Adam Grant)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://amzn.to/31ySiBP" rel="noopener noreferrer"&gt;Originals&lt;/a&gt; (Adam Grant)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://amzn.to/2LxAMIv" rel="noopener noreferrer"&gt;Drive: The Surprising Truth About What Motivates Us&lt;/a&gt; (Daniel Pink)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://amzn.to/2zaz2hg" rel="noopener noreferrer"&gt;Think and Grow Rich&lt;/a&gt; (Napoleon Hill)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PS: Come join the conversation &lt;a href="https://twitter.com/stephsmithio/status/1171080894138015745" rel="noopener noreferrer"&gt;on Twitter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1171080894138015745-958" src="https://platform.twitter.com/embed/Tweet.html?id=1171080894138015745"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1171080894138015745-958');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1171080894138015745&amp;amp;theme=dark"
  }



&lt;/p&gt;




&lt;p&gt;You can find me on &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, read more &lt;a href="https://blog.stephsmith.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;, or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>career</category>
      <category>management</category>
      <category>culture</category>
      <category>leadership</category>
    </item>
    <item>
      <title>A Love Letter to Excel: 34 Years of Magic ✨</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Sun, 25 Aug 2019 16:39:05 +0000</pubDate>
      <link>https://forem.com/stephsmithio/an-ode-to-excel-34-years-of-magic-bba</link>
      <guid>https://forem.com/stephsmithio/an-ode-to-excel-34-years-of-magic-bba</guid>
      <description>&lt;p&gt;This article was originally published on my &lt;a href="https://blog.stephsmith.io/history-of-excel/" rel="noopener noreferrer"&gt;blog&lt;/a&gt;, where I often write about remote work, learning to code, and technology.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In an age where "software is eating the world", what can we learn from the tool that has withstood the test of time? This piece illustrates how the fundamentals behind Excel can be used to envision the next wave of bulletproof technologies.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;2015: I love you&lt;br&gt;
2016: I love you&lt;br&gt;
2017: I love you&lt;br&gt;
2018: I love you&lt;br&gt;
2019: I love you&lt;/p&gt;

&lt;p&gt;One “I love you” for every year since I’ve fallen in love with...Microsoft Excel?&lt;/p&gt;

&lt;p&gt;You may be surprised to know that I’m not the first to write a &lt;a href="https://medium.com/@hellostephwang/a-love-letter-to-excel-278f53db130c" rel="noopener noreferrer"&gt;love letter&lt;/a&gt; to Excel (or to use it to &lt;a href="https://kottke.org/plus/misc/images/excelloveletter.gif" rel="noopener noreferrer"&gt;create one&lt;/a&gt;), nor to confess an &lt;a href="https://fortune.com/2012/10/01/confessions-of-an-excel-addict/" rel="noopener noreferrer"&gt;Excel addiction&lt;/a&gt;. But in an age where software is “eating the world”, I want to talk about the tool that has withstood the test of time.&lt;/p&gt;


&lt;h2&gt;
  
  
  A Year in Excel
&lt;/h2&gt;

&lt;p&gt;Just like many other “relationships”, I was introduced to Excel a few years prior, but the fire was lit in 2015. I jokingly say it was the “year of the spreadsheet” because I spent the greater part of that year living in one. &lt;/p&gt;

&lt;p&gt;I worked as a business analyst crunching numbers for the Fortune 500. I vividly remember being told on my first day to notice how the other, more seasoned consultants didn’t use their computer mice as they navigated their spreadsheets. Their circuitry had turned the combinations of CTRL+[insert keystroke] into muscle memory. Soon, that too would be me.&lt;/p&gt;

&lt;p&gt;In years prior, I thought my ability to create a scatter plot with a trendline meant I was &lt;a href="https://qr.ae/TWyXoM" rel="noopener noreferrer"&gt;proficient with the tool&lt;/a&gt;. But that year, I was exposed to the immense &lt;strong&gt;&lt;a href="https://qr.ae/TWyXox" rel="noopener noreferrer"&gt;power of Excel&lt;/a&gt;&lt;/strong&gt;. We used the tool to build complex models that would predict anything from the price of oil years out to the minimization of real estate cannibalization. Everything we built was deeply complicated and proprietary, yet also only with a single tool: Excel.&lt;/p&gt;

&lt;p&gt;During my 11 months in that job, I estimate that I spent over 1500 hours in Excel. For perspective, there are less than 6000 hours in total across those workdays; including sleep and whatever else I managed to fit in around Excel. (You better bet I calculated that with &lt;a href="https://docs.google.com/spreadsheets/d/1kdzj5FWP1VoC2aGTmZTpDlOv-bPecJ3yL7WXq10L3BU/edit?usp=sharing" rel="noopener noreferrer"&gt;a spreadsheet&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;To be clear, I don’t regret a minute of this. But I do want to reflect on it.&lt;/p&gt;

&lt;p&gt;As technology becomes more omnipresent in our lives, we’ve started to champion the technologists behind these inventions. We write about the latest gadgets and SaaS companies as if they will change the course of history, while VCs are willing to bet millions on the next cohort. Simply consider how Musk, Zuckerberg, Page, Bezos, and Cook have all become as common as celebrity names in the household.&lt;/p&gt;

&lt;p&gt;But I want to talk about &lt;a href="https://en.wikipedia.org/wiki/Dan_Bricklin" rel="noopener noreferrer"&gt;Daniel Bricklin&lt;/a&gt; and &lt;a href="https://www.technologyreview.com/s/543961/doug-klunder-81/" rel="noopener noreferrer"&gt;Doug Klunder&lt;/a&gt;, or the piece of software that despite being invented over 30 years ago, lives on &lt;a href="https://irishtechnews.ie/seven-reasons-why-excel-is-still-used-by-half-a-billion-people-worldwide/" rel="noopener noreferrer"&gt;hundreds of millions&lt;/a&gt; of machines. I want to talk about a tool that spurred entirely new industries and still remains the biggest competitor to many new age companies.&lt;/p&gt;

&lt;p&gt;Even after decades of innovation, &lt;strong&gt;I want to talk about Excel&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Talk About Ubiquity
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Excel is one of the most successful products in the history of software.” - &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Andy Lee, Partner Software Development Engineer at Excel&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://twitter.com/stephsmithio/status/1165290859350364160" rel="noopener noreferrer"&gt;Whether you like Excel or not&lt;/a&gt;, it’s hard to dispute that it has been a major underpinning to modern day business.&lt;/p&gt;

&lt;p&gt;Just in terms of sheer market penetration, Microsoft believes that &lt;a href="https://techcommunity.microsoft.com/t5/Excel/What-is-new-in-Excel-Ignite-2017-announcements/m-p/117029" rel="noopener noreferrer"&gt;1 in 5 adults use Excel&lt;/a&gt;. And despite recent advances by competitors like &lt;a href="https://www.techradar.com/news/g-suite-is-powering-ahead-with-4-million-customers" rel="noopener noreferrer"&gt;Google sheets&lt;/a&gt;, it is estimated that there may still be &lt;a href="https://www.windowscentral.com/there-are-now-12-billion-office-users-60-million-office-365-commercial-customers" rel="noopener noreferrer"&gt;1.2B Microsoft Office licences&lt;/a&gt; floating around. Compare the &lt;a href="https://www.reuters.com/article/us-alphabet-gsuite/googles-g-suite-is-no-microsoft-killer-but-still-winning-converts-idUSKBN1FL3ZX" rel="noopener noreferrer"&gt;$13.8B that MS Office raked in over 2016 relative to GSuite’s $1.3B&lt;/a&gt;, and you get a sense of the sustained market dominance.&lt;/p&gt;

&lt;p&gt;But what’s even more impressive about this feat is that we’re talking about software that was introduced over 3 decades ago. And despite the numerous updates and creation of now &lt;a href="https://support.office.com/en-us/article/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188" rel="noopener noreferrer"&gt;476 functions&lt;/a&gt;, the concepts behind Excel and even some of the original code still remain. (&lt;em&gt;More on this later&lt;/em&gt;)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“You’d think that there wouldn’t be any code from 15, 20, 30 years ago, but a lot of it still is.” - &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Andy Lee, Partner Software Development Engineer at Excel&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You would expect this age-old software to be obsolete by now, but instead it’s thriving. A simple search on Udemy for “Excel” generates &lt;a href="https://www.udemy.com/courses/search/?q=microsoft%20excel&amp;amp;src=sac&amp;amp;kw=excel" rel="noopener noreferrer"&gt;more than 10000 results&lt;/a&gt;, compared to the &lt;a href="https://www.udemy.com/courses/search/?src=ukw&amp;amp;q=javascript" rel="noopener noreferrer"&gt;7000 for Javascript&lt;/a&gt;. It’s also apparently the &lt;a href="https://medium.com/grid-spreadsheets-run-the-world/3-things-you-dont-understand-about-spreadsheets-part-3-eed2162d0628" rel="noopener noreferrer"&gt;number one skill mentioned in job ads&lt;/a&gt;, finding its way into every 1 in 3. And if we accept the fundamental nature of spreadsheets in that they are indeed programs, Excel remains the &lt;a href="https://medium.com/grid-spreadsheets-run-the-world/3-things-you-dont-understand-about-spreadsheets-part-1-7dfd6b3759cb" rel="noopener noreferrer"&gt;most popular software development environment in the world&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Microsoft Excel is the most familiar, flexible, and widely used business application in the world due to its capability to adapt to almost any business process.” - &lt;a href="https://www.excelhelp.com/the-history-of-microsoft-excel/" rel="noopener noreferrer"&gt;The History of Microsoft Excel&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The combination of insane backwards compatibility (30+ years!), a gentle learning curve, and almost complete interoperability has resulted in Excel being a market leader for far longer than many companies could ever imagine. Perhaps most principally, people can trust that they can use the program completely out of the box. No dependencies, no boilerplate; it &lt;em&gt;&lt;a href="https://medium.com/@oscar.baruffa/why-i-love-excel-9c689cd4f9b0" rel="noopener noreferrer"&gt;just works&lt;/a&gt;&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;So despite hundreds of new Microsoft products having been released since Excel’s inception, CEO Satya Nadella still thinks its spreadsheet product stands out.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Think about a world without Excel. That’s just impossible for me.” - &lt;a href="https://www.businessinsider.com/satya-nadella-excel-is-microsofts-best-consumer-product-2016-6?r=UK" rel="noopener noreferrer"&gt;Satya Nadella &lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Changing the Course of History
&lt;/h2&gt;

&lt;p&gt;Albeit a bit dramatic, Microsoft Excel fundamentally changed the way people run their lives and their businesses.&lt;/p&gt;

&lt;p&gt;Personally, I do everything in spreadsheets. I track my life (ranging from how often I exercise to how often I floss), I create lists, I project my finances, and much more. The beauty of spreadsheets are in the fundamentals, which is exactly why the tool can be translated into &lt;a href="https://www.goskills.com/Excel/Articles/Uses-of-Excel-in-business" rel="noopener noreferrer"&gt;dozens of practical uses&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I never know how people are using Excel, because it’s used in so many different ways.” - &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Terrence Huang, Partner Development Mangaer at Excel&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/user/ExcelIsFun" rel="noopener noreferrer"&gt;Excel is Fun&lt;/a&gt;:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FWuKOeCfo9nwHGkILcOcqKEvPNuI6KBtVG7Q_-J5tHpJ2JE-k_UgUCvim2FPPbW0b1NQfTACqnqCmIbz4C9GVLT_oPyWqZohxz0c33QBYvGuWrSE0MS6uP5UG5zKTLawMb66yUdFv" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FWuKOeCfo9nwHGkILcOcqKEvPNuI6KBtVG7Q_-J5tHpJ2JE-k_UgUCvim2FPPbW0b1NQfTACqnqCmIbz4C9GVLT_oPyWqZohxz0c33QBYvGuWrSE0MS6uP5UG5zKTLawMb66yUdFv" alt="https://www.youtube.com/user/ExcelIsFun"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;At its core, Excel did and still does something very fundamental.&lt;/strong&gt; It took something previously reserved for a select few﹣intensive numerical analysis﹣and made it accessible, and even enjoyable, for the rest of the world. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Excel actually changed the way business works, really by making it easy for people to use and to be able to make decisions and do calculations and put charts on their data” - &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Derek Burney, Corp VP Data and BI, VP - Data and Business Intelligence&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Although Excel didn’t fundamentally invent the spreadsheet (we’ll get into that later), it was the vehicle to take dynamic computation into the mainstream. Zuck wasn’t the first guy to build a social network, nor was Musk the only dude to think we can make commercial space expedition possible. But they are the ones building such things at scale, just as Excel took the concept of the spreadsheet and delivered it to the world.&lt;/p&gt;

&lt;p&gt;The advent of MS Excel was one of those era-defining innovations; one that “&lt;a href="https://twitter.com/mit_csail/status/690197180586467328" rel="noopener noreferrer"&gt;launched thousands of startups and justified millions of layoffs&lt;/a&gt;”, and has now stimulated entirely new industries. Simply consider the swath of job titles that have emerged in business analytics, just like the one I spent the greater part of 2015 in. These exact jobs didn’t exist until Excel enabled us to process and visualize data; to play around with the “what ifs”.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Corporations and organizations have a lot of information or data that’s in back-end systems, and we need to be able to empower people to look at that data, twist it around, analyze it, pivot it, and examine it in different ways so that they can uncover some insight. So, Excel plays a tremendous role in the whole business intelligence world, by virtue of the fact that it’s the tool that people use. It’s the one that they actually touch.” - &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Derek Burney, Corp VP Data and BI, VP - Data and Business Intelligence&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Entire companies are completely built off of the back of Excel. And for those where Excel isn’t mission critical, it’s almost always still part of the mission. What’s both insane yet also incredible, is that new companies are still emerging in 2019 which still have &lt;a href="https://medium.com/grid-spreadsheets-run-the-world/your-biggest-competitor-is-a-spreadsheet-fea2f0968ca3" rel="noopener noreferrer"&gt;Excel as their biggest competitor&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Most startup companies’ fiercest competitor? Personal spreadsheets already solving 90% of the problem.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-959409213389922304-593" src="https://platform.twitter.com/embed/Tweet.html?id=959409213389922304"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-959409213389922304-593');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=959409213389922304&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;And even as numerous new technologies have emerged and businesses raise $Ms of dollars, people still opt for Excel. According to &lt;a href="https://www.gartner.com/en/documents/2933817" rel="noopener noreferrer"&gt;a Gartner study&lt;/a&gt; in 2015, more than half of IT leaders said they “mostly” or “completely” &lt;a href="https://medium.com/grid-spreadsheets-run-the-world/your-biggest-competitor-is-a-spreadsheet-fea2f0968ca3" rel="noopener noreferrer"&gt;opt for spreadsheets when performing analysis&lt;/a&gt;. This only indicates the explicit competition Excel poses on the data analytics industry, but doesn’t convey the limitless application that people use the tool for: building todo lists, exercise logs, inventory sheets, and much more. Even Excel used their product to &lt;a href="https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the-odds/" rel="noopener noreferrer"&gt;generate the RSVP list for their 30th year celebration&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Spreadsheets are used for everything. From light-weight databases, to todo-lists and scheduling, data gathering, data analysis, and sophisticated business processing. These are all examples of common uses for spreadsheet software, and this is obviously by no means a comprehensive list of the things spreadsheets are used for.” - &lt;a href="https://medium.com/grid-spreadsheets-run-the-world/3-things-you-dont-understand-about-spreadsheets-part-3-eed2162d0628" rel="noopener noreferrer"&gt;Hjalmar Gislason&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Imagining a World Without Excel
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“[I was] sitting next to a person on a plane and started talking and they grabbed me by the shirt, “You work on Excel? I love Excel!”” - &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Jon Devaan, Sr. VP Windows Development&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;People (like me) don’t just use Excel. &lt;strong&gt;They love it.&lt;/strong&gt; And as I was researching for this article, I stumbled on a simple question: &lt;em&gt;“If Excel disappeared, what would you use?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For some of the simpler solutions it provides, there are certainly parallels. But for its more complicated applications, I’m not sure whether there really is a replacement. I truly wonder how many businesses would be “sh** out of luck” if Nadella woke up one day and decided to cut Excel. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;How many businesses would not be able to function?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Consider not only the number of explicit businesses that were built off of Excel, but also the sheer amount of business intelligence functioning off of the tooling. All the dashboards. All the financial decisions. All the forecasting. So much in our business ecosystem functions upon this product; certainly every job I’ve occupied over the last 5 years. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“We have financial companies that use it to crunch vast amounts of data to run simulations so they can help determine what’s going to happen in the world. They don’t just use Excel as the tool for writing formulas. They actually build solutions on top of Excel. Things that have been running for 10-15 years.”  - &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Terrence Huang, Partner Development Mangaer at Excel&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When Hiten Shah asked Twitter &lt;a href="https://twitter.com/hnshah/status/1153393614069760000" rel="noopener noreferrer"&gt;“What’s an app / product you use at work that you can’t live without?”&lt;/a&gt;, the most upvoted comment﹣beating out new age apps including Zoom, Slack, Notion, 1Pass, Webflow, and many more﹣was none other than grandfather &lt;a href="https://twitter.com/jondcarroll/status/1153398702771507206" rel="noopener noreferrer"&gt;Excel&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1153398702771507206-111" src="https://platform.twitter.com/embed/Tweet.html?id=1153398702771507206"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1153398702771507206-111');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1153398702771507206&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;So while Excel may not stick around forever, it’s truly difficult to imagine a past, present, and future without it. And during its reign, it’s certainly changed the course of history.&lt;/p&gt;

&lt;h2&gt;
  
  
  The History of Excel
&lt;/h2&gt;

&lt;h3&gt;
  
  
  34 Years of Magic
&lt;/h3&gt;

&lt;p&gt;As much as I love the product (have I told you that &lt;a href="https://twitter.com/stephsmithio/status/1164942345902665729" rel="noopener noreferrer"&gt;I love Excel&lt;/a&gt;?), I’ve also grown to love &lt;a href="https://www.versionmuseum.com/history-of/microsoft-excel" rel="noopener noreferrer"&gt;the history&lt;/a&gt; of MS Excel. &lt;/p&gt;

&lt;p&gt;If we go back to the invention of Excel (34 years ago), so much has changed in the way people communicate and work. And yet, Excel at its fundamentals has not.&lt;/p&gt;

&lt;p&gt;Before you get your panties in a knot, it’s important to note that Microsoft did &lt;strong&gt;not&lt;/strong&gt; invent the concept of the spreadsheet. If not Microsoft, then who invented the spreadsheet? We have&lt;a href="https://www.ted.com/talks/dan_bricklin_meet_the_inventor_of_the_electronic_spreadsheet" rel="noopener noreferrer"&gt; Dan Bricklin and Bob Frankston to thank for that&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Dan is commonly regarded as the inventor or &lt;a href="https://www.ted.com/talks/dan_bricklin_meet_the_inventor_of_the_electronic_spreadsheet" rel="noopener noreferrer"&gt;“father of the spreadsheet”&lt;/a&gt;, after creating the very first spreadsheet application: VisiCalc﹣standing for visible calculator﹣in 1979, together with Bob Frankston. Dan was the first person to conceptualize the grid-like structure that continues to be the backbone of the modern spreadsheet. In fact, if you search “who created Excel?” into Google, Dan’s name shows up, despite never being employed by Microsoft. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“I imagined a magic blackboard, that if you erased one number and wrote a new thing in, all the other numbers would automatically change […] I imagined that my calculator had mouse hardware on the bottom of it and a head-up display like in a fighter plane.”- &lt;a href="https://www.ted.com/talks/dan_bricklin_meet_the_inventor_of_the_electronic_spreadsheet" rel="noopener noreferrer"&gt;Dan Bricklin, TEDxBeaconStreet 2016&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FLrtwHdlDHKACxdjLslxrMu8DXz5mJ1eWADqjQFovid7qgBQkFJ1S-_jpJgE6g_tVv74P2X_oVD83hAbv7wcxrmHa6uCgu7jbcJrEW2a2dk-ivy5SdahlcSu0-VM-joQGJzn_PCrD" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FLrtwHdlDHKACxdjLslxrMu8DXz5mJ1eWADqjQFovid7qgBQkFJ1S-_jpJgE6g_tVv74P2X_oVD83hAbv7wcxrmHa6uCgu7jbcJrEW2a2dk-ivy5SdahlcSu0-VM-joQGJzn_PCrD" alt="VisiCalc, original "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a technology, the invention of the spreadsheet accelerated the entire PC industry. Steve Jobs is credited as saying that VisiCalc, &lt;a href="https://www.youtube.com/watch?v=IU96Pd_npn4" rel="noopener noreferrer"&gt;propelled the Apple II to the success it achieved more than any other single event&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“There have been two real explosions that have propelled the industry forward. The first one really happened in 1977 and it was the spreadsheet.” - Steve Jobs&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This was truly the beginning of the WYSIWYG (What You See Is What You Get) computing, something that we now largely take for granted. Bricklin and Frankston’s contributions were furthered in 1983 by another company, Lotus Software (later a part of IBM), launching a more popular Lotus 1-2-3. &lt;/p&gt;

&lt;p&gt;Around the same time, Microsoft had already launched its precursor to Excel called Multiplan (code name: Electronic Paper), which unfortunately struggled to compete with the Lotus 1-2-3. In fact, Jon DeVaan (member of Excel 1.0) recalls that in 1984 &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;the spreadsheet market was virtually 100% MS-DOS and Lotus 1-2-3&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Recalc or Die
&lt;/h3&gt;

&lt;p&gt;Microsoft decided to invest in the development of a new product under the code name: Odyssey. &lt;/p&gt;

&lt;p&gt;With the success of Microsoft now, it’s hard to imagine the company as an underdog or that Project Odyssey was one that &lt;a href="https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the-odds/" rel="noopener noreferrer"&gt;defied the odds&lt;/a&gt;, but Excel 1.0 creators were just a small team of four: &lt;a href="https://theymadethat.com/people/fjvye8/mike-koss" rel="noopener noreferrer"&gt;Mike Koss&lt;/a&gt; (team lead), &lt;a href="https://theymadethat.com/people/p8w8vg/jabe-blumenthal" rel="noopener noreferrer"&gt;Jabe Blumenthal&lt;/a&gt; (program manager), &lt;a href="https://www.technologyreview.com/s/543961/doug-klunder-81/" rel="noopener noreferrer"&gt;Doug Klunder&lt;/a&gt; (lead developer), and &lt;a href="https://theymadethat.com/people/ml008j/jon-devaan" rel="noopener noreferrer"&gt;Jon DeVaan&lt;/a&gt; (Mac expert). To get a sense of the era when Excel was created, consider that Microsoft revealed their mouse, &lt;a href="https://twitter.com/jonerlichman/status/991646501020557312" rel="noopener noreferrer"&gt;the Microsoft Mouse&lt;/a&gt;, only &lt;a href="https://www.theversed.com/86383/the-evolution-of-the-computer-mouse/#.G9I4hIo91M" rel="noopener noreferrer"&gt;two years prior in 1983&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“It was a product that Microsoft built from the ground up. Started as an underdog and had unparalleled success and is now a true mission-critical part of most businesses across the world.” - &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Andy Lee, Partner Software Development Engineer at Excel&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ironically, as Lotus 1-2-3 was beating out Microsoft on MS-DOS machines, Microsoft made the difficult decision to develop a product for the Mac, since &lt;a href="https://www.britannica.com/technology/Microsoft-Excel" rel="noopener noreferrer"&gt;Lotus wasn’t available on that OS&lt;/a&gt; and it was faster at performing the computation required. The decision wasn’t taken lightly, with Doug Klunder quitting when the decision as made.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Just imagine having this product where one of the key components of it is really only understood by this guy who will quit routinely and go be a migrant farm worker down in California. It was not necessarily the most traditional or stable of environments.” - &lt;a href="https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the-odds/" rel="noopener noreferrer"&gt;Jabe Blumenthal&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“It caused a bit of a problem when I left in the middle. Rather than trying to write everything down, I presented what was essentially a three-day lecture on Excel’s design … that was videotaped for reference.” - &lt;a href="https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the-odds/" rel="noopener noreferrer"&gt;Doug Klunder&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Luckily for all of us, Doug made it back after a stint farming lettuce fields, to create what was perhaps the most critical feature of Excel 1.0. Referring to Excel as &lt;a href="https://www.technologyreview.com/s/543961/doug-klunder-81/" rel="noopener noreferrer"&gt;“his baby”&lt;/a&gt;, Klunder estimates that he originally joined Microsoft somewhere in the span of employee number 45 and 65.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“I was literally living in my office, sleeping just a few hours a night and cranking out code around the clock, and the window office got too cold at night.” -&lt;a href="https://www.businessinsider.com/how-microsoft-excel-changed-the-world-2010-12" rel="noopener noreferrer"&gt; Doug Klunder&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Perhaps the winning feature of Excel was its recalculating capability which Doug developed. The team’s unofficial motto was “Recalc or Die” after Klunder’s “intelligent recalc”. Instead of recalculating the entire sheet as changes were made, Klunder’s algorithms only recalculated cells impacted by the change. You can imagine that in an era where &lt;a href="https://singularityhub.com/2016/03/22/technology-feels-like-its-accelerating-because-it-actually-is/" rel="noopener noreferrer"&gt;computing power was fractions of what it is today&lt;/a&gt;, this was a huge performance feat that pushed Microsoft ahead.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Those early PCs couldn’t crank through numbers the way today’s powerhouse machines can, with the result that changing a number in a spreadsheet could bring things to a halt while the change rippled through all the interconnected calculations.” - &lt;a href="https://www.thedailybeast.com/microsoft-excel-the-programs-designer-reveals-the-secrets-behind-the-software-that-changed-the-world-25-years-ago" rel="noopener noreferrer"&gt;Doug Klunder&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The release date for Excel 1.0 was September 30, 1985 and ever since it came out, Excel truly took the lead. In the years following, it has also claimed many other “firsts” including &lt;a href="https://en.wikipedia.org/wiki/Microsoft_Excel" rel="noopener noreferrer"&gt;the first to allow users to customize spreadsheet appearance, auto-fill, and the ability to intelligently copy cells.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And despite Excel seeming like the perfect name in hindsight, the code name for the project was actually Odyssey and potential product names at the time included &lt;a href="https://www.geekwire.com/2015/recalc-or-die-30-years-later-microsoft-excel-1-0-vets-recount-a-project-that-defied-the-odds/" rel="noopener noreferrer"&gt;Master Plan and Mr. Spreadsheet&lt;/a&gt;. &lt;em&gt;Can you imagine if I was writing “An Ode to Mr. Spreadsheet?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Keep in mind that this was a product made in the times when Microsoft still had yet to IPO and most product was still touched by Bill Gates. And I think largely why Excel emerged as the spreadsheet leader was the ethos behind Bill and the Excel team. In fact, Klunder gives credit to Gates himself for the idea behind how to implement the product-defining intelligent recalc feature, despite &lt;a href="https://www.thedailybeast.com/microsoft-excel-the-programs-designer-reveals-the-secrets-behind-the-software-that-changed-the-world-25-years-ago" rel="noopener noreferrer"&gt;Gates telling him he implemented something completely different&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Bill Gates was amazingly technical. He understood Variants, and COM objects, and IDispatch and why Automation is different than vtables and why this might lead to dual interfaces. He worried about date functions. He didn’t meddle in software if he trusted the people who were working on it, but you couldn’t bullshit him for a minute because he was a programmer. A real, actual, programmer.” - &lt;a href="https://www.joelonsoftware.com/2006/06/16/my-first-billg-review/" rel="noopener noreferrer"&gt;My First BillG Review&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But really the story pares down to a team that focused on long-term objectives and built up a system that could (and would be) be a market leader for decades to come.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.versionmuseum.com/history-of/microsoft-excel" rel="noopener noreferrer"&gt;Microsoft Excel 1.5 for Mac (1985)&lt;/a&gt;:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FSnRxWtyc3PqfDm-xhLxQiIPmLOw9sDMCDu2USy5DBqsUCCQYKvbdmmehJGdSNeIfAPxfFGDRfwOLNJCuyTsuv7L2NpLL-YUCrzIHchsPEHzSfjywjrJBMlm6_9qWP79lrBTTt0bs" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FSnRxWtyc3PqfDm-xhLxQiIPmLOw9sDMCDu2USy5DBqsUCCQYKvbdmmehJGdSNeIfAPxfFGDRfwOLNJCuyTsuv7L2NpLL-YUCrzIHchsPEHzSfjywjrJBMlm6_9qWP79lrBTTt0bs" alt="Microsoft Excel 1.5 for Mac (1985)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“When you think of the longevity of Excel, it’s amazing. We had this incredible ethos of being really efficient in how we programmed Excel, which I think is an excellent long-term fundamental.” &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Jon Devaan, Sr. VP Windows Development&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Of course many features have been added, but the basics of the spreadsheet are the same. And I still use spreadsheets that I created 25 to 30 years ago.” - &lt;a href="https://alum.mit.edu/slice/heres-why-creator-microsoft-excel-left-software-career-work-civil-liberties" rel="noopener noreferrer"&gt;Doug Klunder&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Spotting the Next Excel
&lt;/h2&gt;

&lt;p&gt;In an age where "software is eating the world", we must ask ourselves: “What can we learn from this story of Excel?”&lt;/p&gt;

&lt;p&gt;If I can convey anything to you in this piece, it’s not my love for Excel nor how much money Microsoft is making, but how &lt;strong&gt;spreadsheets fundamentally changed access to information&lt;/strong&gt;. It took something that only a few people could process (data) and allowed the world to touch it, see it, and manipulate it. The was no longer just a black box. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“That was really the important thing at that time, to move software from, you know, the PhD thesis user-mode into something that an average person could use.” &lt;a href="https://www.youtube.com/watch?v=qdReNKlq1oE" rel="noopener noreferrer"&gt;Jon Devaan, Sr. VP Windows Development&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The concept of enabling access is something we as users often take for granted, but a principle that technologists have been leveraging for decades. And just like Excel didn’t invent the spreadsheet, you don’t need to invent the concept, but instead build the access bridge. This access bridge simply needs to identify a constraint for many individuals and to remove it, ideally with technology, just as Klunder enabled high computation on slow machines with intelligent calc.&lt;/p&gt;

&lt;p&gt;To be more concrete, here are some new age examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Companies like Webflow or Wordpress or Squarespace make it exceptionally easy to create websites. &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://ghost.org?lmref=1305" rel="noopener noreferrer"&gt;Ghost&lt;/a&gt;, which this blog is created with, makes it exceptionally easy to launch a high-quality blog in minutes. &lt;/li&gt;
&lt;li&gt;  Stripe, makes it exceptionally easy for independent merchants to sell online, just as Shopify made it exceptionally easy for any old person to start an eCommerce business.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The world already glorifies these tools, but often doesn’t sit back and reflect on the new entirely new access they have given us. Without these tools, only a small subset of individuals with tailored experience could participate. Now, the whole world can. &lt;/p&gt;

&lt;p&gt;Amidst the “no code” revolution, we can consider Excel to be an enlightening case study featuring a similar concept: creating an access bridge to something of value. So the question now becomes: “What is something currently at the fringe﹣something only a few experts have access to﹣which would fundamentally benefit the wider population? And what can be built to enable these individuals?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It’s now our job to identify something of value that many people have assumed is inaccessible to them, and then make it accessible.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Long live Excel.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PS: Come join the conversation &lt;a href="https://twitter.com/stephsmithio/status/1165646522450677760" rel="noopener noreferrer"&gt;on Twitter&lt;/a&gt;. &lt;/p&gt;




&lt;p&gt;You can find me on &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, read more &lt;a href="https://blog.stephsmith.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;, or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>blog</category>
      <category>startup</category>
      <category>programming</category>
    </item>
    <item>
      <title>Stop Looking in a Box for People Thinking Outside of One</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Sun, 14 Jul 2019 15:20:50 +0000</pubDate>
      <link>https://forem.com/stephsmithio/stop-looking-in-a-box-for-people-thinking-outside-of-one-45b1</link>
      <guid>https://forem.com/stephsmithio/stop-looking-in-a-box-for-people-thinking-outside-of-one-45b1</guid>
      <description>&lt;p&gt;This article was originally published on my &lt;a href="https://blog.stephsmith.io/finding-top-talent/" rel="noopener noreferrer"&gt;blog&lt;/a&gt;, where I often write about personal growth, remote work, learning to code, and women in tech.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"When you're looking for innovative and action-driven talent, why not open your doors up to people that have already pioneered their own lives?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I was recently contacted about an opportunity. On many levels, this opportunity “checked all the boxes”, but there was one caveat: I’d have to move to San Francisco. For many (including a previous version of myself) that would be a dream. But for &lt;em&gt;current me&lt;/em&gt;, it would mean throwing away the very life that I had spent the last 3+ years intentionally building.&lt;/p&gt;

&lt;p&gt;Despite having spent over 10 months looking for the “right” remote job back in 2015 and now living the life I had long envisioned, I would be lying if I said that I didn’t seriously consider the switch. The lure of money, connections, and “the valley” was cogent.&lt;/p&gt;

&lt;p&gt;Yet, when I thought about what I truly wanted and prioritized in my life, it became immediately clear that I’d be trading &lt;strong&gt;down&lt;/strong&gt;. More specifically, I’d be trading the freedom to optimize my life for one that was predominantly determined &lt;em&gt;for&lt;/em&gt; me.&lt;/p&gt;

&lt;p&gt;Ultimately, I turned down the role, which of course prompted the company to continue to look for the right person to bring onsite. That response﹣while completely logical﹣got me thinking...“Will they be able to fill the role?”. The obvious and correct answer is yes. But what sparked the question was the realization that they were looking &lt;strong&gt;“inside a box” for someone who is already thinking outside of one&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Looking Outside of the Box&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In the digital age, many companies cite their greatest challenge as the imminent “war for talent”, due to the imbalance of supply and demand, resulting from the widening skill gap.&lt;/p&gt;

&lt;p&gt;With the speed of change in our workforce increasing, companies see “&lt;a href="https://www.pwc.com/gx/en/industries/industrial-manufacturing/winning-war-talent.html" rel="noopener noreferrer"&gt;winning the war&lt;/a&gt;” as the only way to stay innovative and ahead of the competition. Their solutions result in &lt;a href="https://twitter.com/rdutel/status/1040918188886827009" rel="noopener noreferrer"&gt;ping pong tables&lt;/a&gt;, salary wars, and ridiculous inflation within tech hubs, in an effort to attract top talent.&lt;/p&gt;

&lt;p&gt;As companies place higher importance on attracting, recruiting, and retaining top talent, I wonder whether some companies are missing a big puzzle piece. I ponder whether the companies that couple their highly developed vetting processes with a need for onsite talent, are not only limiting the sheer number of candidates, but perhaps the best? I can’t help but wonder if they’ve eliminated a significant chunk of individuals who are already living in the very future that these companies are hoping to create.&lt;/p&gt;

&lt;p&gt;Do &lt;em&gt;you&lt;/em&gt; see the disconnect?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Company&lt;/strong&gt;: “We need someone who has proven their ability to execute. We’re looking for people who see things differently; people who think outside of the box and create innovative solutions.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recruiter&lt;/strong&gt;: “Great, how about someone who lives in Poland? She moved there to be with her husband, so that they can raise their daughter together. Flexibility has allowed her to bootstrap a company to an 8-figure valuation, but she just sold it and is looking for her next challenge”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Company&lt;/strong&gt;: “Sorry, we can’t do remote.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F07%2Fimage.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F07%2Fimage.png" alt="Discovering gravity "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although I can certainly recognize my own bias, it confounds me that companies are willing to auto-eliminate a group that I’d consider diverse and forward-thinking; a group of people who have already creatively redefined their world.&lt;/p&gt;

&lt;p&gt;Put simply, these individuals literally looked at their lives and thought, “There must be a better way”, and then took the initiative to impact change. As more companies search for “creative ways to recruit employees”, I can’t help but wonder if they could develop a strong, yet overnight, competitive advantage by simply opening their doors up to the remote workforce.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Remote Affinity Ratio (RAR)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The first step in evaluating whether you should be more open or less open to working or hiring remotely is identifying the potential bias you may have towards this new way of working.&lt;/p&gt;

&lt;p&gt;I’ve personally been working remotely for the past 3 years. That may not be a significant amount of time for most people, but it’s actually represented 75% of my experience in the full-time workforce. In many ways, it’s all that I can remember.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1074370717376888832-864" src="https://platform.twitter.com/embed/Tweet.html?id=1074370717376888832"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1074370717376888832-864');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1074370717376888832&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;As I started to further consider the concept of quantifying someone’s affinity or openness to remote work (and perhaps new ways of thinking or living), I conceptualized the “remote affinity ratio” or RAR.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1113426598017925120-239" src="https://platform.twitter.com/embed/Tweet.html?id=1113426598017925120"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1113426598017925120-239');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1113426598017925120&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Put simply, it’s the ratio of: years worked remotely and total work experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RAR = (# of years worked remotely) / (# years in workforce)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The metric is not intended to be one born out of competition, but instead to reflect on how one’s prior experience &lt;em&gt;may&lt;/em&gt; impact one’s openness to new working norms.&lt;/p&gt;

&lt;p&gt;With this lifestyle so ingrained in the way I operate, I need to keep in mind that much of the world still does not operate this way. So while it surprises me when individuals or companies are completely closed off to the concept, when I think of the timescale that others draw their context from, it starts to make a little more sense. As a simple example, picture the life of a 55 year-old, who’s been in the workforce for 35 of those years and the comparison of their “world” compared to the picture of my own that I drew above.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1113427503371014145-400" src="https://platform.twitter.com/embed/Tweet.html?id=1113427503371014145"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1113427503371014145-400');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1113427503371014145&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Even if this individual works remotely for three years, it only represents a single digit percentage of their career and therefore a majority of their perception will still fall outside of this new approach.&lt;/p&gt;

&lt;p&gt;When compared side-by-side, it’s not surprising that it’s easier for me to visualize a different way of working and living. Not because I’m better, smarter, or more creative, but because I have lived this new approach for longer and I have fewer barriers in seeing past decades of prior experience. My viewpoint on how things &lt;em&gt;should&lt;/em&gt; work isn’t solidified yet.&lt;/p&gt;

&lt;p&gt;RAR is a metric which is purely meant for reflection; to try to understand how our experiences accumulate to form our perception of what is or isn’t possible/better/optimal.&lt;/p&gt;

&lt;p&gt;So to those who are still remote-averse in their quest towards finding and retaining talent, consider whether the concerns are founded in experience or historical perception. More importantly, is your perception a reflection of where the world is today or your RAR?&lt;/p&gt;

&lt;p&gt;With the concept of RAR in place, I started to think about some of the fundamentals of remote work and what someone with a high RAR may deeply understand, yet may be invisible to those with limited exposure. I honed in on three ideas that seem to be the most nascent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  By convention, remote workers tend to think outside of the box&lt;/li&gt;
&lt;li&gt;  Flexible work incentivizes people to optimize and improve&lt;/li&gt;
&lt;li&gt;  Survivorship bias impacts the way people view remote work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With a deeper understanding of these three points, I truly believe that hiring managers &lt;em&gt;may&lt;/em&gt; be more open to the concept of hiring remotely because of the positive tradeoffs that exist in enabling a larger, more innovative talent pool.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Innovation Nation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;TechCrunch recently published&lt;a href="https://techcrunch.com/2019/03/30/remote-workers-and-nomads-represent-the-next-tech-hub/" rel="noopener noreferrer"&gt; an article&lt;/a&gt; claiming that remote workers and nomads are the next tech hub for innovation. A few weeks later, Stripe declared that&lt;a href="https://stripe.com/gb/blog/remote-hub" rel="noopener noreferrer"&gt; their next engineering hub&lt;/a&gt; is… remote! It's no secret that companies are capitalizing on the intersection between innovation and the distributed workforce.&lt;/p&gt;

&lt;p&gt;By simply giving someone the freedom to replace a commute with other things, they not only have more time to innovate, but are left less exhausted and more inspired. These individuals have not only started thinking outside the box, but living outside of one (a cubicle) as well.&lt;/p&gt;

&lt;p&gt;Remote work enables people to start thinking creatively about how they get their work done, but also invites people to optimize past that. Many take that opportunity to consider how they can improve their mental and physical health, finances, business opportunities, and more. Consider the overlap between digital nomadism and things like financial independence, technology, entrepreneurship, minimalism, and investing&lt;a href="https://anvaka.github.io/sayit/?query=digitalnomad" rel="noopener noreferrer"&gt; here&lt;/a&gt;. The creative force of the remote revolution has pushed people to innovate across each of these domains, resulting in entirely new concepts, like&lt;a href="https://www.reddit.com/r/financialindependence/" rel="noopener noreferrer"&gt; FIRE&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FSkjlpJ9PRSdTYfZlAV7C3e_Z2mhzozJR17O-cyTZTIKTlkQEoyKh4jy2CsmDJFk38jVNG15J3qiN9Zg6JL_qcO_n_MwExuXN0fDHQlx5vZr_-jBC2f9RuWfklFr8GE7R1oDVTsym" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FSkjlpJ9PRSdTYfZlAV7C3e_Z2mhzozJR17O-cyTZTIKTlkQEoyKh4jy2CsmDJFk38jVNG15J3qiN9Zg6JL_qcO_n_MwExuXN0fDHQlx5vZr_-jBC2f9RuWfklFr8GE7R1oDVTsym" alt="Visualization of related subreddits to r/digitalnomad"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many people are familiar with Peter Thiel’s famous question from&lt;a href="https://amzn.to/2XfocUP" rel="noopener noreferrer"&gt; Zero to One&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“What important truth do very few people agree with you on?”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thiel, in effect, is attempting to isolate how individuals think. While Thiel’s question may unearth intelligent or creative minds, I would argue that an even better way of isolating those who are able to predict the future would be to find talent who are currently living it.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Wrong Incentives&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Suppose that you have a series of plants that you no longer have the capacity to take care of yourself. You have two options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You can offload your plants to individuals who will come into a specific location to water them. This location has the exact amount of water and sunlight to keep the plants alive. The plants likely won’t die, but they certainly won’t flourish. The good news is that you can watch those who you’ve hired come in and water the plants.&lt;/li&gt;
&lt;li&gt;You can opt to have other individuals take care of your plants. These individuals have more resources and can optimize them as they see fit. While you can’t watch these individuals water the plants, you can pay them based on their successful ability to get the job done well. The success of this working relationship is built on trust and impact.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F07%2Fimage-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F07%2Fimage-3.png" alt="Plant growing"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now imagine these plants as your company. These scenarios are not so unlike the comparison between hiring individuals “in-house” and giving employees the freedom to work remotely. While the second scenario &lt;em&gt;may&lt;/em&gt; result in some dead plants (or terminated hires), what is more likely to happen is that the individuals will appreciate that they have the space to operate and produce results. Meanwhile, the first scenario still has ample potential to result in dead plants and can only ever achieve the maximum potential that you’ve predetermined.&lt;/p&gt;

&lt;p&gt;Here’s the thing that a lot of people don’t acknowledge about offices: you literally have no incentive to improve. When your day is ultimately tethered to the number of hours you need to be there, why decide to be more efficient?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Why bother producing higher quality work?&lt;/li&gt;
&lt;li&gt;  Why bother improving your workflow to half the time it takes to do a task?&lt;/li&gt;
&lt;li&gt;  Why bother developing 2x complex solutions that deliver 10x impact?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why bother being better, quicker, or more optimal? Why bother.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This concept, of not giving people space to innovate and create their own path to impact, compounds further.  &lt;/p&gt;

&lt;p&gt;Why? I fundamentally believe that once you get someone to start considering how they can work more optimally, this permeates into other aspects of their life. They have now trained their brains to remove noise and optimize toward impact. This will inevitably impact the way an employee engages with problems they face across contexts.&lt;/p&gt;

&lt;p&gt;In short, by enabling remote work, you are inadvertently training your people to improve the way they think and how they can achieve more. Most importantly, you are giving them the space they need to get there.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Survivorship Bias: Searching in the Wrong Places&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Still not convinced? Let’s talk about&lt;a href="http://blog.idonethis.com/7-lessons-survivorship-bias-will-help-make-better-decisions/" rel="noopener noreferrer"&gt; survivorship bias&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When I go to coworking spaces full of nomads, I’m always impressed by quality of people that I meet. While there is always a distribution, a majority of individuals are looking to improve their lives in some way, whether it be starting a new business, learning a new skill, investing in a better diet, or looking to develop some form of a better habit.&lt;/p&gt;

&lt;p&gt;When I hear of significant swaths of industry being apprehensive of remote workers, I can’t help but wonder if some survivorship bias is at play.&lt;/p&gt;

&lt;p&gt;For those new to the term, survivorship bias is: &lt;em&gt;the&lt;/em&gt; &lt;em&gt;logical error of concentrating on the people or things that made it past some selection process and overlooking those that did not, typically because of their lack of visibility.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this context, consider that individuals with a bad experience working with remote workers will likely be the loudest. Similar to the insurance industry, people are quick to report and amplify a bad experience, while being perfectly content to tread silently when multiple positive experiences happen.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Studies have shown that the most vocal customers are the ones who’ll express their feelings. Everyone else will either give companies another chance or just leave.” - &lt;a href="http://blog.idonethis.com/7-lessons-survivorship-bias-will-help-make-better-decisions/" rel="noopener noreferrer"&gt;Walker Donohue&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of treating negative experiences as an outlier, these amplified experiences become the narrative for others. In insurance, if a few claims are processed slowly, their Trust Advisor rating is 2 stars. With remote work, if a few individuals are unaccountable, the entire distributed workforce is deemed undependable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F06%2Fimage-8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F06%2Fimage-8.png" alt="The "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once this narrative is set, it’s hard to break. Even when positive stories are shared, the “N” is too low to offset the perception.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;When you think about what examples may be forming your perception of remote work, how many of those are based out of your own experiences? What is the sample size? How does this compare to the good or bad hires onsite?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There is a false perception that all remote workers want to “go remote” to lead an easier life. The reality is that they often want to live a &lt;strong&gt;better&lt;/strong&gt; life, which is distinctly different. For example, many individuals are looking for the opportunity to spend more time with their children, to optimize their schedule, or to devote unproductive time like a commute to something more productive. In fact, according to the&lt;a href="http://assets.regus.com/pdfs/iwg-workplace-survey/iwg-workplace-survey-2019.pdf`" rel="noopener noreferrer"&gt; IWG Global Workspace Survey&lt;/a&gt;, over 50% of people would prioritize flexible working over working for a prestigious company or more holiday allowance.&lt;/p&gt;

&lt;p&gt;Founders often ask how they will find talented employees and furthermore, retain these talented employees. Here's a hint: give them the freedom that they so clearly desire. The vast majority of distributed employees are not looking to work at the beach or even live anywhere near one－they are looking simply for autonomy over their lives.&lt;/p&gt;

&lt;p&gt;What am I trying to communicate here?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Don’t let survivorship bias influence your perception of remote workers. Build up your own impression through experience.&lt;/li&gt;
&lt;li&gt;It’s important to reframe the intentions of those looking to work remotely. Often, people do not want to work remotely to do less, but instead are looking to do more. If you vet for these signs of ambition, you will likely find yourself attracting talented employees.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Hiring Outside the Box&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We’re taught from a young age to “think outside the box”, yet I think many have been trained throughout the decades to optimize within one. As hiring managers, when you’re looking for these truly disciplined thinkers, I question why so many companies automatically eliminate so many that have already proven through action their ability to think outside of the box.&lt;/p&gt;

&lt;p&gt;You may hear the “horror stories” of a company hiring a remote candidate that went exceptionally badly, yet I’m sure the same hiring managers could cite an equally misguided in-office hire. Since remote work is the newer, more innovative model, we use a few examples to push back on the more innovative model.&lt;/p&gt;

&lt;p&gt;Instead of using bad hires to discredit the entire model, I would encourage hiring managers to think about the type of individual they want to hire from the ground up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Is it someone that takes initiative to design their own life?&lt;/li&gt;
&lt;li&gt;  Is it someone that works to find creative solutions to enable this life?&lt;/li&gt;
&lt;li&gt;  Is it someone who can work dynamically and flexibly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If that’s the type of person you want in your company, don’t eliminate an entire cohort of them and open your mind to the future of work. In the “war for talent”, there is no better competitive advantage than getting access to thousands of candidates that your competitors are too fearful to explore.&lt;/p&gt;

&lt;p&gt;PS: Come join the conversation &lt;a href="https://twitter.com/stephsmithio/status/1150418749788512261" rel="noopener noreferrer"&gt;on Twitter&lt;/a&gt;. &lt;/p&gt;




&lt;p&gt;You can find me on &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, read more &lt;a href="https://blog.stephsmith.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;, or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>remote</category>
      <category>career</category>
      <category>productivity</category>
      <category>culture</category>
    </item>
    <item>
      <title>How to Be Great? Just Be Good, Repeatably</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Thu, 13 Jun 2019 16:59:45 +0000</pubDate>
      <link>https://forem.com/stephsmithio/how-to-be-great-just-be-good-repeatably-bk5</link>
      <guid>https://forem.com/stephsmithio/how-to-be-great-just-be-good-repeatably-bk5</guid>
      <description>&lt;p&gt;This article was originally published on my &lt;a href="https://blog.stephsmith.io/how-to-be-great" rel="noopener noreferrer"&gt;blog&lt;/a&gt;, where I often write about personal growth, remote work, learning to code, and women in tech.&lt;/p&gt;




&lt;p&gt;Over the years, we’ve all encountered our fair share of successes and failures. As I’ve acquired more of both under my name, I’ve started to contemplate which experiences were truly “great” and why.&lt;/p&gt;

&lt;p&gt;Interestingly enough, I realized that it was not the sporadic highs that were exceptional, but instead the long hauls; the sequences of events that seemed minimal at each juncture, but compounded into major gains. This led me to think further about what &lt;em&gt;greatness&lt;/em&gt; truly means. I’ve come to learn that it’s not about overnight successes or flashes of excellence, but periods of repeatable habits.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Perhaps “great’, is just “good”, but repeatable.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Consider This
&lt;/h2&gt;

&lt;p&gt;Before stepping into the bulk of this article, I want to clarify two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Greatness is not instantaneous&lt;/li&gt;
&lt;li&gt;  Greatness is earned&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first step in becoming great is recognizing that you’re likely not already great. In fact, it comes from recognizing that there is no such thing as greatness at a specific instance in time. Greatness is instead a reflection of a period of effort, since greatness in a single instance can be reduced to luck. &lt;/p&gt;

&lt;p&gt;Moreover, being “great” is not about being better than someone else. It is about being dependable and disciplined, and ultimately it is earned. &lt;/p&gt;

&lt;p&gt;Many people, in theory, want to be “great”. In fact, each month 1000 people search “how to be great”, 260 people search “how to become perfect”, and 2400 people search “how to be the best”, looking for discrete answers on how to get from 0 to 1. Yet, many people in life realistically do not want to put in the effort over a sustained period of time to actually get to 1. They are looking for the “secrets to success” that in many ways, do not exist. You know what brings success? Hard work brings success. &lt;/p&gt;

&lt;p&gt;So before proceeding forward in this article, I implore each of you to consider that if greatness is truly is a reflection of non-instantaneous, earned effort, ask yourself if that’s the life you’d like to live. Ask yourself whether you’d like to spend your days, weeks, months, and years in a constant uphill battle. &lt;/p&gt;

&lt;p&gt;If you ultimately find that you don’t want to do that, that’s fine! It doesn’t make you less of a person. At least you’ve broken from the holding pattern of thinking you want to do X but not understanding why you haven’t gotten there yet. And if that’s the case, go enjoy your Netflix and chill completely guilt free.&lt;/p&gt;

&lt;p&gt;With that in mind, let’s dive into what truly makes someone “great’. &lt;/p&gt;

&lt;h2&gt;
  
  
  It’s Hard to be Consistent
&lt;/h2&gt;

&lt;p&gt;There’s a false impression that success or notoriety comes with being flashy. This notion comes from the media focusing on outliers, whether it be events or personalities which diverge from the norm. Not only can this encourage people to aim for notoriety just for the sake of it (think Elizabeth Holmes), but it makes the rest of us believe that correlation (of those outliers) is causation; in other words, success of those individuals is due to their offbeat ways. But here’s another storyline: the most sure and therefore the &lt;em&gt;best&lt;/em&gt; way to “success” is through consistency.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Until you work as hard as those you admire, don’t explain away their success as luck.” - James Clear, Atomic Habits&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To be clear, consistency isn’t necessarily the easiest way to success, but one that can be achieved with a higher level of certainty, rather than hoping for a lottery win or someone to “discover” you. Continuous effort is a more thoughtful approach that leads to greatness when the following statements are true:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inputs are consistent over time&lt;/li&gt;
&lt;li&gt;Intentional inputs lead to expected outputs&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Consistency
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;“No one who can rise before dawn three hundred sixty days a year fails to make his family rich” - Outliers&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is a famous saying from Napolean Hill which says, &lt;em&gt;“If you cannot do great things, do small things in a great way”&lt;/em&gt;. I would actually argue the quote should be, &lt;em&gt;“If you cannot do great things, do small things a great number of times”.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you don’t have the opportunity to “do great things”, focus on consistently achieving small wins. These small things in fact do not need to be done in a great way, but a good way, repeatably. In fact, I would advise not to focus on perfection, as it is often the enemy of the successful. &lt;/p&gt;

&lt;p&gt;There’s glimmer and hoopla around unpredictability, but in reality, it’s much more difficult and therefore impressive, to be predictably good. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  It’s easy to wake up whenever you “feel like it”. &lt;/li&gt;
&lt;li&gt;  It’s hard to stick to a routine of getting up at 6AM.&lt;/li&gt;
&lt;li&gt;  It’s easy to pivot from side project to side project, focusing on the new shiny object of the month.&lt;/li&gt;
&lt;li&gt;  It’s hard to stick with a side project for years, many of which may not be profitable for a long while. &lt;/li&gt;
&lt;li&gt;  It’s easy to give up on someone when you hit a roadblock or the next potential partner becomes available. &lt;/li&gt;
&lt;li&gt;  It’s hard to be faithful and invest in a relationship for decades.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We normally set out in life with good intentions. We &lt;em&gt;intend&lt;/em&gt; to set a morning routine or work on a business until it's profitable or to “love someone forever”. We imagine that as we invest in something, we will naturally continue to move in the right direction. If anything, things will get easier, right?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FNQV_7RXfM2ZYDJsT4E4JAaAW2i9KphrB7-fE8XveJlrW-Msf1aIot9ayls-wSCWIroq155Fzdz6vE3d8br71E6Tc5sTQRyhnT0Zb6EJCUoV41B5EoZSczjtWcHo9KV-T9c6s16Cb" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FNQV_7RXfM2ZYDJsT4E4JAaAW2i9KphrB7-fE8XveJlrW-Msf1aIot9ayls-wSCWIroq155Fzdz6vE3d8br71E6Tc5sTQRyhnT0Zb6EJCUoV41B5EoZSczjtWcHo9KV-T9c6s16Cb" alt="The curves of life."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The described trajectory is what we perceive on the left. Predictable, linear, and a direct reflection of effort put in. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rarely does success in anything look like that.&lt;/strong&gt; Life is a series of tiny nodes that tend to look more like the right hand side. There two key elements worth calling out in the more realistic graph on the right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Compounding is always present. The earlier steps in any process will be more strenuous, yet it’s difficult to imagine the potential compounding that comes later on. &lt;/li&gt;
&lt;li&gt;  With the ups, there are always downs. This seems obvious, but we often forget this when we are in periods of down. We quit at these local minimums (the highlighted sections in red above), because we cannot see the next peak right around the corner. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1093520669286064133-79" src="https://platform.twitter.com/embed/Tweet.html?id=1093520669286064133"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1093520669286064133-79');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1093520669286064133&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1093522120536150017-704" src="https://platform.twitter.com/embed/Tweet.html?id=1093522120536150017"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1093522120536150017-704');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1093522120536150017&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;The local minima are especially psychologically taxing due to something called the &lt;a href="https://en.m.wikipedia.org/wiki/Hedonic_treadmill" rel="noopener noreferrer"&gt;Hedonic treadmill&lt;/a&gt; or hedonic adaptation. Essentially, as someone achieves new successes in various aspects of their lives, their baseline shifts to reflect that new level and therefore, their expectations and desires are re-established as well. There is no net gain in happiness and thus, it becomes even more difficult to stay “level-headed” during these down moments. &lt;/p&gt;

&lt;p&gt;That is exactly why a specific search for success can be problematic and instead of looking for unsustainable shortcuts in life, it’s much more effective (and healthy) to aim for continuous habits that bring you success as a byproduct, not as the end goal. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The only way to become excellent is to be endlessly fascinated by doing the same thing over and over. You have to fall in love with boredom.” - Atomic Habits, James Clear&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On your journey to greatness, you need to fall in love with the process which includes many local minima and maxima. Staying consistent and pushing through both of these continuously is what will truly differentiate you from those that are simply “good” and isolate you as one of the few that are “great’.&lt;/p&gt;

&lt;h3&gt;
  
  
  Inputs → Outputs
&lt;/h3&gt;

&lt;p&gt;The second important aspect of achieving greatness is acting with intention. Your actions and results will not always reflect your intentions, but as you move towards “greatness”, you should have a better idea of what inputs actually deliver output. You’ll still make mistakes﹣as we all do﹣but you’ll have a better grasp on what is more likely to work out. For example, your success rate may be 30%, versus someone flying blind with a 5% success rate. &lt;/p&gt;

&lt;p&gt;Let’s look at a simple example:&lt;/p&gt;

&lt;p&gt;Imagine company X has two sales people. Salesperson A happens to land a $1M deal in his first week. However, he struggles to land anything substantial for the next 6 months. Meanwhile, salesperson B manages to develop a process over the first month, bringing in only $100k which he’s able to scale up and double month over month.&lt;/p&gt;

&lt;p&gt;After six months, this will be the revenue generated by each party.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
   &lt;td&gt;
   &lt;/td&gt;
   &lt;td&gt;Month 1
   &lt;/td&gt;
   &lt;td&gt;Month 2
   &lt;/td&gt;
   &lt;td&gt;Month 3
   &lt;/td&gt;
   &lt;td&gt;Month 4
   &lt;/td&gt;
   &lt;td&gt;Month 5
   &lt;/td&gt;
   &lt;td&gt;Month 6
   &lt;/td&gt;
   &lt;td&gt;Total
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;A
   &lt;/td&gt;
   &lt;td&gt;$1M
   &lt;/td&gt;
   &lt;td&gt;$5k
   &lt;/td&gt;
   &lt;td&gt;$10k
   &lt;/td&gt;
   &lt;td&gt;$0k
   &lt;/td&gt;
   &lt;td&gt;$20k
   &lt;/td&gt;
   &lt;td&gt;$12k
   &lt;/td&gt;
   &lt;td&gt;$1.047M
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;B
   &lt;/td&gt;
   &lt;td&gt;$100k
   &lt;/td&gt;
   &lt;td&gt;$200k
   &lt;/td&gt;
   &lt;td&gt;$400k
   &lt;/td&gt;
   &lt;td&gt;$800k
   &lt;/td&gt;
   &lt;td&gt;$1.6M
   &lt;/td&gt;
   &lt;td&gt;$3.2M
   &lt;/td&gt;
   &lt;td&gt;$6.3M
   &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You’re probably thinking…”So what? That’s just a classic example of compounding.” &lt;/p&gt;

&lt;p&gt;Yes! That’s exactly the point. The best things in life often aren’t miracles, but well-thought out approaches that are sustainable. The same thing is true with businesses, marriages, and just about anything with repeatable elements. If you invest time into solving for what leads to success continuously, you will reap those benefits for years to come. &lt;em&gt;So even in the least quantifiable situations, reflect back on what could’ve made a previous loss a future win.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Consider the best companies over time. None of them emerged overnight, nor was there a single inflection point that determined the success or notoriety of these companies. The line of separation between the “great” companies of all time and the “not so great”, is their ability to stand the test of time. &lt;/p&gt;

&lt;p&gt;Would you rather be Juicero that &lt;a href="https://www.crunchbase.com/organization/juicero" rel="noopener noreferrer"&gt;raised $100M&lt;/a&gt; and &lt;a href="https://techcrunch.com/2017/09/01/rip-juicero-the-400-venture-backed-juice-machine/" rel="noopener noreferrer"&gt;went bankrupt&lt;/a&gt; within a year of its Series C, or Zoom, which &lt;a href="https://www.crunchbase.com/organization/zoom-video-communications/funding_rounds/funding_rounds_list#section-funding-rounds" rel="noopener noreferrer"&gt;took almost 8 years to take on more funding than $30M&lt;/a&gt; and is now one of the most profitable and highly sought after “unicorns” in the valley?&lt;/p&gt;

&lt;p&gt;On top of consistency, greatness comes from asking the right questions and iterating to learn what inputs drive favourable outputs, and ideally &lt;strong&gt;why&lt;/strong&gt;. “Greatness” comes from an identified or researched process that when followed, has some degree of certainty in the outcome. &lt;/p&gt;

&lt;p&gt;“Moving fast and breaking things” is not a strategy, unless you are clearly defining a process of learning so that in the future, you can “move fast and break less of the same things”.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Habit of Progression
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“The definition of insanity is doing the same thing over and over again, but expecting different results.” - Albert Einstein&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Understand that in order to achieve the things you want in life, you’ll need to establish a &lt;strong&gt;habit of progression&lt;/strong&gt;. You literally need to become good at being decent. &lt;/p&gt;

&lt;p&gt;There is one thing to clarify: this habit of progression must come with the right inputs. Being consistent with something leading you in the wrong direction, will &lt;em&gt;unsurprisingly&lt;/em&gt; lead you in the wrong direction. So if this is the way you are constantly moving (excluding short periods of local minima), pivot until you determine what the right inputs are. I recently stumbled upon a concept of &lt;a href="https://jdreyespaez.site/zero-acceleration/" rel="noopener noreferrer"&gt;zero acceleration, but non-zero velocity&lt;/a&gt;, which encapsulates this idea well. &lt;/p&gt;

&lt;p&gt;Before you find the path that you want to double down on, this habit of progression takes the form of iteration. I see many people who are stuck in this stage and feel like they’re moving nowhere. Perhaps they go take a degree for a year and find that wasn’t right. Maybe they go and work for a company for two more and realize that wasn’t right either. &lt;/p&gt;

&lt;p&gt;If you’re struggling to identify the right path, create more nodes of optimization. For example: if you’re making changes every year, you only have maybe 80 in your entire life to make. Instead, try testing things intentionally every month or even every week. Pilot a lot and then double down when you have found your path towards “good”. &lt;/p&gt;

&lt;p&gt;You may ask, “what makes good, good?”. Ask yourself the question: “If I were to continue this everyday for the next year, would I be in a better place?” If the answer is yes, you have a path towards “good”. &lt;/p&gt;

&lt;p&gt;Once you have found your inputs, then you’re in a good place to turn those inputs into the right habits through deliberate practice. Ie: you’ll be in a place to shift from good to great. &lt;/p&gt;

&lt;p&gt;This process of shifting between iteration and consistency is all part of developing a habit of progression. Once you make this habit your north star, you are no longer dependent on that  “one big break” or that one company to “finally give you a chance”. &lt;/p&gt;

&lt;p&gt;And finally, if you’re reading this advice and think, “I’ve heard this before”, then ask yourself whether you’ve truly acted on this advice. When is the last time you truly iterated and tried new things? When is the last time you found something &lt;em&gt;good&lt;/em&gt; and then truly stuck to it for years?&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Steps Out
&lt;/h2&gt;

&lt;p&gt;While you’re moving towards “greatness”, keep in mind that it will likely happen slowly and that’s okay.&lt;/p&gt;

&lt;p&gt;When I think about the growth trajectory of my life and similarly, anyone that I’ve been close with, changes have always happened slowly. Whether it was a close family member falling into deep mental illness or friends building businesses to near-unicorn valuations, nothing ever happened overnight. Even more notably, no one would have ever expected those outcomes years prior. &lt;/p&gt;

&lt;p&gt;In the grand scheme of things, I think it’s because you can only ever see two steps out. What do I mean by that?&lt;/p&gt;

&lt;p&gt;Say that in life there are 100 tiers of happiness. Of course, life is more complicated and dynamic than this view, but bear with me for a minute. Let’s say that you’re on “Tier 57”. I think it’s nearly impossible to fully empathize or even comprehend levels 21 and similarly 89, unless of course you’ve been there before. Even if you have, it becomes a distant memory that’s difficult to fully internalize. Remember, the Hedonic treadmill is almost always at play. &lt;/p&gt;

&lt;p&gt;Why is this important? Everyone wishes to elevate their life and in association, their happiness. For us to reach these top tiers, we cannot hope for this to &lt;em&gt;just happen&lt;/em&gt;. We must expose ourselves to various inputs that may lead to better outputs, and train ourselves to recognize what’s working. &lt;/p&gt;

&lt;p&gt;And that’s exactly the point of continuous improvement. Since I believe that we can only ever see “two levels out”, we can’t discover these new inputs without slow, but repeatable change. We must explore 58 and then 59 and then all of a sudden, 61 will appear as this new array of opportunity we had never considered before. &lt;/p&gt;

&lt;p&gt;As a more tangible example, when I started working in an office, I simply couldn’t fully visualize remote work. I knew it existed, but I couldn’t truly imagine this new way of living. And even once I started working remotely, it took years of iteration and pivoting to expand into the lifestyle that I now call my own. And of course, there’s probably many more tiers to explore that I simply haven’t visualized yet. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“To exist is to change, to change is to mature, to mature is to go on creating oneself endlessly.” - Henri Bergson&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s precisely why it’s good to continuously surround yourself with new environments and people, and to focus on slow but steady compounding. I think this tweet from Michael Nielson captures what I’m trying to communicate. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1074150124169773056-914" src="https://platform.twitter.com/embed/Tweet.html?id=1074150124169773056"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1074150124169773056-914');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1074150124169773056&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Try to remind yourself as you’re iterating, that there are new levels that you can’t even conceptualize right now. Regardless of how far along you are, know that these new levels of success will appear as you work towards the next one or two. And soon enough, you’ll be 10 levels ahead of what you could have ever imagined. &lt;/p&gt;

&lt;h2&gt;
  
  
  Stop Speculating
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;“I have seen impractical and improbable things accomplished. All it took to achieve improbable things was an optimistic attitude and a refusal to give up.” - The Woman Who Smashed Codes&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;James Clear, from Atomic Habits mentions a study in which students in Jerrey Uelsmann’s University of Florida photography class were divided into two groups. The first group would be the “quantity” group, while the second would be the “quality” group. The former would be judged solely on the number of photographs they submitted, while the latter would be graded on the excellence of a single image. &lt;/p&gt;

&lt;p&gt;The interesting outcome of the experiment was that the best photos were produced not by the quality group, but by the quantity group. Why? While the quality group spent their time speculating what perfection may have been, the quantity group took action in testing what was truly great. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It is easy to get bogged down trying to find the optimal plan for change: the fastest way to lose weight, the best program to build muscle, the perfect idea for a side hustle. We are so focused on figuring out the best approach that we never get around to taking action” - James Clear, Atomic Habits&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In other words, the “search” for greatness is often misguided, perhaps because what we imagine to be great, is in fact not that great at all. Instead of speculating what may make you great, get out there and start &lt;strong&gt;doing&lt;/strong&gt;. Do not look for perfection or even greatness, but instead signs of “good” and start making tangible progress. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1118224158020685824-682" src="https://platform.twitter.com/embed/Tweet.html?id=1118224158020685824"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1118224158020685824-682');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1118224158020685824&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do You Become Great?
&lt;/h2&gt;

&lt;p&gt;So if you’re still asking the question, “How do I become great in life?”, I would ask you to reframe the question as “How do I become good in life” or even “How do I become decent” and focus on developing those habits to repeat over time. Transform these habits to be your baseline. &lt;/p&gt;

&lt;p&gt;Remember, there is no “magic moment” when you become great, so if you are looking for your path towards greatness, stop looking for “greatness” and consider that your most probable path there is just to focus on what’s good. &lt;/p&gt;

&lt;p&gt;If you have an understanding of what inputs equal favourable outputs then continue moving in that direction. As you move past the local minima and maxima, you’ll soon be beating out the 50% that quit at X time, the 75% that quit at Y time, and the 90% that quit at Z time. Soon enough, you’ll be the great one that was once just “good” among the rest, but stuck with it and learned something along the way.&lt;/p&gt;

&lt;p&gt;Remember, &lt;strong&gt;great is just good, but repeatable.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;This article was originally inspired by me trying to more deeply understand what “made people great’, but ended up being a dive into some of the psychology I’ve been experiencing more recently. Over the last few months, I think I’ve been on one of my local minimums in terms of direct “success”, but in writing this I feel motivated to keep pushing to my next local maximum, with the understanding that there will be many more of both moving forward. &lt;/p&gt;

&lt;p&gt;If you’re interested in learning more about habit building and long-term progression, I would recommend the following books:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2Xd1MUa" rel="noopener noreferrer"&gt;Power of Habit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/31t6vQZ" rel="noopener noreferrer"&gt;Atomic Habits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2Fcnn4K" rel="noopener noreferrer"&gt;Outliers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amzn.to/2KiSWOv" rel="noopener noreferrer"&gt;Algorithms to Live By&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PS: Come join the conversation &lt;a href="https://twitter.com/stephsmithio/status/1138816442336284672" rel="noopener noreferrer"&gt;on Twitter&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;You can find me on &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, read more &lt;a href="https://blog.stephsmith.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;, or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>tips</category>
      <category>advice</category>
    </item>
    <item>
      <title>A New Age: Finding Non-Tech Remote Jobs</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Sun, 02 Jun 2019 16:57:34 +0000</pubDate>
      <link>https://forem.com/stephsmithio/a-new-age-finding-non-tech-remote-jobs-1fgo</link>
      <guid>https://forem.com/stephsmithio/a-new-age-finding-non-tech-remote-jobs-1fgo</guid>
      <description>&lt;p&gt;&lt;em&gt;I wanted to share this article here, since I know that many people learning to code have other skillsets and may be looking for remote work, while they are investing in their development skills. Additionally, many of the tactics shared here can be utilized for finding technical remote roles as well. This article was originally published on my &lt;a href="https://blog.stephsmith.io/non-technical-remote-jobs"&gt;blog&lt;/a&gt;, where I often write about remote work, learning to code, and women in tech.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: This post is &lt;strong&gt;not&lt;/strong&gt; sponsored and is unaffiliated with Toptal, where I work during the “day”.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Almost 40 years since &lt;a href="https://www.history.com/news/who-invented-the-internet"&gt;the Internet was born&lt;/a&gt;, we’ve learned to develop a completely new world. One of the more recent developments that has emerged from this connected community is the way our societies have learned to find new opportunities in distributed form. &lt;/p&gt;

&lt;p&gt;Remote work has been &lt;a href="https://lh3.googleusercontent.com/orB90xs91RsJOsvzQSM6sUjlJ_ohuj_XopDqcc2bOm5EJZKhow77G-ylM70bjp2GzlZT9OnZjpWov1c-xN9R2E0ZG2_sHRtYfP-Q3YpmNPO69TeVWw77x7qNU2zbZ0_sGKM-TC-2"&gt;inching forward for years&lt;/a&gt; as it has capitilized on our ability to connect digitally, while people open their minds to the distributed workforce. Entire industries have been built from this revolution, so it’s hard to believe that even just a few decades ago, this form of working (and living) was simply unavailable. &lt;/p&gt;

&lt;p&gt;Despite rapid change since the &lt;a href="https://www.toptal.com/insights/future-of-work/history-of-remote-work"&gt;first coworking space opened in 2005&lt;/a&gt; or since Slack was founded in 2009, there are still some misconceptions about the distributed workforce. Some people still believe this is all a fad, while others believe it’s a symptom of a cohort of non-commital millennials. After working fully remotely for over three years and meeting the hundreds (if not thousands) of other remote workers, I’ve grown to appreciate that neither is true. The workplace is shifting as it has many times prior, to accommodate the new opportunities that we as humans have made available. &lt;/p&gt;

&lt;p&gt;As we transition, I’ve noticed that many people want to participate in this future, but sometimes don’t know how. In fact, one of the more common misconceptions that I still run into is the perception that only a few roles can be done remotely, namely technical roles. &lt;/p&gt;

&lt;p&gt;This notion is born out of the expectation set by some companies that will only hire out specific positions remotely (for example: a company that employs a remote dev team, but refuses to offer remote work outside of that), and is perpetuated by individuals who say “their positions cannot be done remotely”. In this article, I’ll attempt to address why this notion is misplaced and why remote work is the future of work -- not just for our developer friends. Hopefully I’ll also provide some tangible insight into how you can search for, vet, and potentially land a non-technical remote role, should that be something you’re interested in pursuing. &lt;/p&gt;

&lt;h2&gt;
  
  
  Asking the Right Questions
&lt;/h2&gt;

&lt;p&gt;In order to understand whether a role can be done remotely, most people ask a question like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  “Where are the most remote jobs?”&lt;/li&gt;
&lt;li&gt;  “What jobs allow you to work remotely?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these are fair questions, I would encourage people to think not only about careers that typically &lt;em&gt;allow&lt;/em&gt; you to work remotely, but careers that &lt;em&gt;can&lt;/em&gt; be done remotely. I would instead ask questions like: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  “Is my work primarily done through a computer?”&lt;/li&gt;
&lt;li&gt;  “&lt;em&gt;Could&lt;/em&gt; my work be done through a computer?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With the intrinsic understanding that the “remote revolution” was spawned from the ability of the Internet to connect us, that truly becomes the right question to ask. An adjacent concept to understand is that we must start thinking outside of the box as we look to the future. As the digital age accelerates, we need to keep in mind that many of the jobs that we’ll have may not currently exist. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mCUCyZP0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/4C2vIi1Y9MeVmFHPvL6CgtlIPD_DVTPEx4_TehJ1_d0ADDrc50XhkDRRPzFTMWvNTkAjAMQUkzxZunqgHgutZ2290hx5Fb_mrNBDRTrhEALK3tKboWmuZWt-HFaVSxzPSaAtF2Wr" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mCUCyZP0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/4C2vIi1Y9MeVmFHPvL6CgtlIPD_DVTPEx4_TehJ1_d0ADDrc50XhkDRRPzFTMWvNTkAjAMQUkzxZunqgHgutZ2290hx5Fb_mrNBDRTrhEALK3tKboWmuZWt-HFaVSxzPSaAtF2Wr" alt="Career paths of the past versus the future." width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would encourage each remote job seeker to think progressively and not only within the realm of their current environment. Of course, certain positions over-index on remote work, but the key here is that opportunities are emerging every day and it’s important to realize that there are indeed remote jobs for non-technical individuals. And quite frankly, I think a majority of people would be surprised to understand the full breadth of jobs that can be done remotely. &lt;/p&gt;

&lt;p&gt;Note: As you search for a non-technical remote role, I would implore you to learn technical skills in the long-term. As mentioned above, the workforce is changing and remote or not, the digital age is upon us. By taking the initiative to pick up technical skills, you’re putting yourself in a more abundant future. On that note, here’s a series of tips for looking for non-technical remote work. &lt;/p&gt;

&lt;h2&gt;
  
  
  Job Boards
&lt;/h2&gt;

&lt;p&gt;The most obvious place to look is at remote job sites. With everyone and their best friend trying to start a job board in 2019, it’s important to identify the &lt;em&gt;best&lt;/em&gt; remote job websites. When you’re looking to establish what you’ll be doing for potentially the next few years, &lt;strong&gt;quality matters&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;My two most reliable recommendations for job boards are &lt;a href="http://remoteok.io"&gt;RemoteOK&lt;/a&gt; and &lt;a href="https://www.flexjobs.com/"&gt;FlexJobs&lt;/a&gt;. In 2015, I chose to search for remote work and was able to find non-technical positions through both of these platforms. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://remoteok.io"&gt;RemoteOK&lt;/a&gt;&lt;/strong&gt; is a free feed that segments jobs by various tags, including &lt;a href="https://remoteok.io/remote-non-tech-jobs"&gt;Non-tech&lt;/a&gt; and &lt;a href="https://remoteok.io/remote-marketing-jobs"&gt;Marketing&lt;/a&gt;. I’ve consistently found RemoteOK to have higher quality positions as compared to other remote job boards and I like the simplicity of the UI.&lt;/li&gt;
&lt;li&gt;  &lt;a href="http://flexjobs.com"&gt;FlexJobs&lt;/a&gt; is a paid platform, but in my experience, completely worth the investment. It’s approximately $50 a year, but enables you access to a large database of &lt;strong&gt;vetted&lt;/strong&gt; remote positions. The platform as a whole has various filters ranging from location-specific to “Anywhere in the World”. When I was searching years ago, I found at least 3 solid positions on FlexJobs, including my role at &lt;a href="https://www.toptal.com/about#pick-accomplished-software-freelancers-today"&gt;Toptal&lt;/a&gt; where I’ve been since. Once again, the investment of $50 to ensure a better outcome for years is one of the best I’ve made.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bCIlCCX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh4.googleusercontent.com/6-8Rri73oFh00-Q33ttoOs0f7Dm6oOY4g0YuFW-z1XwLPpxOMzE5hUWdrOndStNTdVDq8oDdmsrw7EaiyufCQhys_FiVTqc8mJmlqP94We8pzOsNuGS-axUWVsMx0o2XwIdllyuP" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bCIlCCX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh4.googleusercontent.com/6-8Rri73oFh00-Q33ttoOs0f7Dm6oOY4g0YuFW-z1XwLPpxOMzE5hUWdrOndStNTdVDq8oDdmsrw7EaiyufCQhys_FiVTqc8mJmlqP94We8pzOsNuGS-axUWVsMx0o2XwIdllyuP" alt="FlexJobs Location Search functionality." width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are many other remote job platforms that exist including &lt;a href="https://remotive.io/jobs/all-others"&gt;Remotive&lt;/a&gt; which segments by “Other”, &lt;a href="https://remote.com/"&gt;Remote&lt;/a&gt; which has search functionality, a FlexJobs alternative called &lt;a href="https://www.virtualvocations.com/"&gt;Virtual Vocations&lt;/a&gt;, and other more general platforms like &lt;a href="https://weworkremotely.com"&gt;We Work Remotely&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;When you’re faced with information overload across these job boards, here is my approach for &lt;em&gt;how&lt;/em&gt; to search for telecommuting jobs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Set a cadence where you check these boards. When I was searching 3 years ago, this timeline was every 2 days.&lt;/li&gt;
&lt;li&gt;  Set up specific filters that you check. I always checked for marketing and growth roles. &lt;/li&gt;
&lt;li&gt;  Utilize the email feature that many of them have, where you get notified about jobs that are posted within certain filters. &lt;/li&gt;
&lt;li&gt;  Set clear expectations for the types of jobs that you will even spend time on. For example, if you want to be fully remote, do not bother spending time on positions that are America-only. Similarly, if you have years of experience, do not apply to entry-level jobs just because you want to “go remote”. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Remote First Companies
&lt;/h2&gt;

&lt;p&gt;There are specific types of jobs that people typically think about when it comes to remote work. For example, developers, designers, and data scientists all come to mind and are typically the titles that take up a majority of remote job board real-estate.&lt;/p&gt;

&lt;p&gt;While this is certainly true, a great place to locate jobs that you may not find on job boards is to follow specific remote-first companies. These tend to be tech companies, but there are always non-technical jobs in IT companies! (Ie: IT companies don’t only hire developers)&lt;/p&gt;

&lt;p&gt;As you venture into the realm of “tech jobs for non-techies”, you’ll find roles that span product managers, marketers, social media managers, operations leads, and more. All of these roles can be done remotely and more companies are opting for this structure. &lt;/p&gt;

&lt;p&gt;Some examples of these remote-first companies include &lt;a href="https://www.toptal.com/careers#pick-accomplished-software-freelancers-today"&gt;Toptal&lt;/a&gt;, &lt;a href="https://journey.buffer.com/"&gt;Buffer&lt;/a&gt;, &lt;a href="https://auth0.com/careers/positions"&gt;Auth0&lt;/a&gt;, &lt;a href="https://basecamp.com/about/jobs"&gt;Basecamp&lt;/a&gt;, &lt;a href="https://zapier.com/jobs/#job-openings"&gt;Zapier&lt;/a&gt;, &lt;a href="https://automattic.com/work-with-us/"&gt;Automattic&lt;/a&gt;, &lt;a href="https://www.invisionapp.com/about"&gt;InVision&lt;/a&gt;, and &lt;a href="https://careers.mozilla.org/"&gt;Mozilla&lt;/a&gt;. Not only do these companies offer remote roles, but they tend to be full-time remote jobs, unlike some of the more part-time consulting-based remote roles that you may find elsewhere. In addition to that, these companies are entirely remote and have set up the right systems to enable successful distributed teams. &lt;/p&gt;

&lt;p&gt;You can find lists of these companies in the following places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  RemoteOK &lt;a href="https://remoteok.io/remote-companies"&gt;lists companies&lt;/a&gt; in order of the frequency that they post remote roles to its platform.&lt;/li&gt;
&lt;li&gt;  NoDesk has a list of 450+ fully remote companies &lt;a href="https://nodesk.co/remote-companies/"&gt;here&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;  Remotive put together a list of &lt;a href="https://medium.com/@rdutel/900-startups-hiring-remotely-in-2019-a82fa3f96aa7"&gt;900+ startups hiring remotely in 2019&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://remoteintech.company/"&gt;This list of 400 companies&lt;/a&gt; which can also be &lt;a href="https://github.com/remoteintech/remote-jobs"&gt;edited on GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="http://keyvalues.io"&gt;Key Values&lt;/a&gt; helps sort companies by various values that you care about, including remote work. &lt;/li&gt;
&lt;li&gt;  FlexJobs has a list of &lt;em&gt;flexible&lt;/em&gt; (not necessarily fully remote) companies &lt;a href="https://www.flexjobs.com/company-guide/best-companies-by-location"&gt;listed by state&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you identify companies that you’re interested in, go to &lt;strong&gt;their&lt;/strong&gt; career page. This is where you’ll find a multitude of roles that aren’t on every job board. For example, as of writing this article, there have been &lt;a href="https://remoteok.io/remote-companies/toptal"&gt;11 jobs posted on RemoteOK&lt;/a&gt; in the last year from Toptal, while there are over 100 jobs currently open on Toptal’s &lt;a href="https://toptal.com/careers#pick-accomplished-software-freelancers-today"&gt;careers page&lt;/a&gt;, of which a majority are not engineering roles.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3YZOVQTV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/Xmg4ON0jDyDfBMEojjgsca6lkBDdP7NtlUcObuVhZ2PdAk_tOueB22DLu9f_5Euog96vSStaRlgOq7rQImecdvyJ7iE5x6-OEdABFnSJMuCQQt3PxtqS19avWRYfXj9ubqXVIv7m" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3YZOVQTV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/Xmg4ON0jDyDfBMEojjgsca6lkBDdP7NtlUcObuVhZ2PdAk_tOueB22DLu9f_5Euog96vSStaRlgOq7rQImecdvyJ7iE5x6-OEdABFnSJMuCQQt3PxtqS19avWRYfXj9ubqXVIv7m" alt="Positions on RemoteOK for Toptal in past year." width="800" height="574"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ck0yHb6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/EISl7zsL4fCxZChfrerG3ewk_aGVJoBi5IP8v1QEyMCEE4XztIUi4ONNOP7wyAWfDRivULuoUMeOe8NJ2p3M2StDYvbtUmh8pGxPLJCNK5fw-2wXNRzhHJBn-8wHTmAbwpi03Z4H" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Ck0yHb6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/EISl7zsL4fCxZChfrerG3ewk_aGVJoBi5IP8v1QEyMCEE4XztIUi4ONNOP7wyAWfDRivULuoUMeOe8NJ2p3M2StDYvbtUmh8pGxPLJCNK5fw-2wXNRzhHJBn-8wHTmAbwpi03Z4H" alt="Open positions on Toptal's careers page." width="800" height="870"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This exercise is not intending to criticize RemoteOK. In fact, as mentioned prior, RemoteOK does much better than other job boards in reporting this data. For example, as of writing this article, I see 0 results on &lt;a href="https://remote.com/jobs/browse?keyword=toptal"&gt;remote.com&lt;/a&gt; for Toptal and &lt;a href="https://weworkremotely.com/company/toptal"&gt;0 open positions on We Work Remotely&lt;/a&gt; according to the company page (and only 10 historically). Even as a paid product, FlexJobs reports 13 positions. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nQLRK_qp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/Uwf8T6itXkcDMKpMl2k8urYOARe7C0DBtZ88GwGSd6ZubPEqFYRJ-0JzDWL6zQM1O5uhePYVeNEmFOx3kedtGDfSrwmdOGSFPVM5ZFBN6iYNd81aPL7FDm_YkVvig6ocdll7Fz7q" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nQLRK_qp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh6.googleusercontent.com/Uwf8T6itXkcDMKpMl2k8urYOARe7C0DBtZ88GwGSd6ZubPEqFYRJ-0JzDWL6zQM1O5uhePYVeNEmFOx3kedtGDfSrwmdOGSFPVM5ZFBN6iYNd81aPL7FDm_YkVvig6ocdll7Fz7q" alt="No matches for Toptal on Remote.com" width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Z63beJM3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh5.googleusercontent.com/DQDLvDphwJoJtO1p_bumpU0PyUc4kB0we3skVujs4ijmYE1G3P7C9JO8iXtmgStjUcBBt6org4-ESdpMtWlEGqpPhmN06g8oNM2U7x7eqYEw7NdDA_uSvSwGLVFcOFQuI9iQsF0C" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Z63beJM3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh5.googleusercontent.com/DQDLvDphwJoJtO1p_bumpU0PyUc4kB0we3skVujs4ijmYE1G3P7C9JO8iXtmgStjUcBBt6org4-ESdpMtWlEGqpPhmN06g8oNM2U7x7eqYEw7NdDA_uSvSwGLVFcOFQuI9iQsF0C" alt="10 historical positions on We Work Remotely for Toptal." width="800" height="123"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KlVInrTk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/GMEy1q4_zKljXdJVHcglSnUAqLSjyzxXKSiGsuUdl03NUXQf0N8DmeX_ZxaBia0HKMcoin1_BwpXCOsJZwO2yjTNwmc9G6FxwEHxAmBOLK9v982tOa5Wb537s0nkrWCDBB9vtMrn" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KlVInrTk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/GMEy1q4_zKljXdJVHcglSnUAqLSjyzxXKSiGsuUdl03NUXQf0N8DmeX_ZxaBia0HKMcoin1_BwpXCOsJZwO2yjTNwmc9G6FxwEHxAmBOLK9v982tOa5Wb537s0nkrWCDBB9vtMrn" alt="0 currently open positions on We Work Remotely for Toptal." width="800" height="105"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oPvdhPzO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/aqoW9RSiE_okjqttxJoC2korpLagri6ATL_mOFrovMrEhZWnwPUuDJ3jVHER3ezm8zehZRC8-FVHLX5RuMC7-fEGR6b_owRDoYpM0xHYTJK2sBqm5uzGwVGnMhbQ24pYIEG8e95v" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oPvdhPzO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/aqoW9RSiE_okjqttxJoC2korpLagri6ATL_mOFrovMrEhZWnwPUuDJ3jVHER3ezm8zehZRC8-FVHLX5RuMC7-fEGR6b_owRDoYpM0xHYTJK2sBqm5uzGwVGnMhbQ24pYIEG8e95v" alt="13 open positions on FlexJobs for Toptal." width="800" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea of this exercise is just to demonstrate that still, the best place to look for a wider range of non-technical remote jobs is on each company’s careers page. There is certainly an argument for browsing the job boards on a frequent basis and resorting to the careers pages during more comprehensive searches. I would do some form of this exercise monthly, should the quicker searches not be yielding the results that you hope for. &lt;/p&gt;

&lt;h2&gt;
  
  
  Remote Non-Tech Jobs
&lt;/h2&gt;

&lt;p&gt;Past these non-technical jobs in the IT industry, there are remote roles emerging in areas that many would simply not expect. There include &lt;a href="https://remote.co/remote-jobs/sales/"&gt;remote sales jobs&lt;/a&gt;, &lt;a href="https://www.workingnomads.co/remote-administration-jobs"&gt;remote admin jobs&lt;/a&gt;, &lt;a href="https://www.accountantlist.com/categories/22767-finance"&gt;remote finance jobs&lt;/a&gt;, &lt;a href="https://www.workingnomads.co/jobs?category=legal"&gt;remote legal jobs&lt;/a&gt;, and even jobs that span medical, real estate, among others. &lt;/p&gt;

&lt;p&gt;Remotive recently compiled a &lt;a href="https://docs.google.com/spreadsheets/d/1VOehQv0bOs2pY7RkKJ8RmlUbuu8UmSgzfvjR0m5hyxQ/edit#gid=1145296357"&gt;list of hundreds remote roles&lt;/a&gt; and their salaries (which I’ll get to later), which were predominantly developer or design positions, but also highlighted many other positions you can do remotely. To name a few taken directly from the sheet: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Director of Customer Success - $159,000&lt;/li&gt;
&lt;li&gt;  PR Manager - $53,300&lt;/li&gt;
&lt;li&gt;  Marketing Operations Manager - $150,000&lt;/li&gt;
&lt;li&gt;  Head of Communications and Partnerships - $67,000&lt;/li&gt;
&lt;li&gt;  Talent Lead - $90,000&lt;/li&gt;
&lt;li&gt;  Community Lead - $150,000&lt;/li&gt;
&lt;li&gt;  Product Evangelist - $70,000&lt;/li&gt;
&lt;li&gt;  Account Manager - $43,000-$100,000&lt;/li&gt;
&lt;li&gt;  Event Manager - $75,000&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of these roles fall within marketing or operations, which I’ll touch on in the next section. However, there are even more surprising roles that can be done remotely. For example, within a few weeks of me writing this article, I located these job postings on the aforementioned remote job boards. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://remotive.io/jobs/all-others/head-of-real-estate-14483"&gt;Head of Real Estate&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://remotive.io/jobs/all-others/general-counsel-14247"&gt;General Counsel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://remotive.io/jobs/all-others/pricing-strategy-manager-14551"&gt;Pricing Strategy Manager&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://remotive.io/jobs/all-others/recruiting-director-13473"&gt;Recruiting Director&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://remoteok.io/remote-jobs/68234-remote-travel-agent-takeabed"&gt;Travel Agent&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://careers.prezly.com/o/chief-storyteller"&gt;Chief Storyteller&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://remote.com/jobs/program-manager-22"&gt;Program Manager&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://remote.com/jobs/clinical-team-manager"&gt;Clinical Team Manager&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In fact, FlexJobs has a feature called “&lt;a href="https://www.flexjobs.com/jobs/surprising-jobs"&gt;100 Surprising Jobs&lt;/a&gt;”, which aggregates roles of such nature. There are postings ranging from &lt;a href="https://boards.greenhouse.io/independentmedia/jobs/1510310"&gt;Card Story Editor&lt;/a&gt; to &lt;a href="https://careers.idexx.com/us/en/job/J-005202/Radiologist"&gt;Radiologist&lt;/a&gt; to &lt;a href="https://www.writingassist.com/jobdetails/?jobcode=45588"&gt;Law School Curriculum Writer&lt;/a&gt;. I’ve linked the final job postings which I found through FlexJobs, since the FlexJobs links won’t work unless you have an account. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Depending on when you read this article, many of these will have expired, but that just means there will be new postings to explore!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Roles of such nature are less common, but so are the individuals searching for these roles. Should you be unable to find the right remote role, I would encourage you to push the envelope in your current position. I previously worked for a company in management consulting that had never had anyone on the team work remotely. As I was leaving for my role at Toptal, I was offered the opportunity to switch to a fully remote consulting role. I didn’t end up taking the offer, but it showed me that I was the one actually the limiting belief, not my company. Since then, they’ve had multiple people switch to remote positions. &lt;/p&gt;

&lt;h2&gt;
  
  
  Remote Marketing Positions
&lt;/h2&gt;

&lt;p&gt;In the “year of the IPO”, there has been such a strong focus on companies being able to sustain hypergrowth at all costs. Regardless of “product market fit”, companies achieving hypergrowth require a world class marketing/growth team to enable their success. In fact, there have been entire programs launched like &lt;a href="https://reforge.com"&gt;Reforge&lt;/a&gt; which aim to train the next group of top “growth experts” and entire industries carved out of this evolution in marketing, like search engine optimization (SEO). &lt;/p&gt;

&lt;p&gt;If you’re looking to transition to a remote online marketing job, I would first encourage you to become proficient in analytics. Having an analytical background is extremely important, regardless of which marketing niche you go into (ex: SEO, email marketing, paid advertising, etc.)&lt;/p&gt;

&lt;p&gt;Should you be looking for a remote marketing job, most remote job boards have a Marketing-specific section that you can navigate, instead of going through all postings.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://remoteok.io/remote-marketing-jobs"&gt;RemoteOK - Marketing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://remotive.io/remote-jobs/marketing-sales"&gt;Remotive - Sales and Marketing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://weworkremotely.com/categories/sales-and-marketing"&gt;We Work Remotely - Sales and Marketing&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s worth mentioning that it’s pretty common for marketers to eventually take their marketing skills, especially if they are specialized, to open a remote marketing agency or essentially serve clients directly. &lt;/p&gt;

&lt;h2&gt;
  
  
  Entry-Level Remote Jobs
&lt;/h2&gt;

&lt;p&gt;There is a common perception that in order to get a remote employment position, you need to already be relatively experienced in your field. While this helps, as it does in any interview process, it’s not essential. I’m speaking from experience, as I entered many of my marketing-related roles with little direct experience. &lt;/p&gt;

&lt;p&gt;I would encourage those “newer on the block” to consider the following points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Remote communities are powerful. Attend events and learn from others. You’ll be surprised at how quickly those relationships will become mutually beneficial. &lt;/li&gt;
&lt;li&gt;  Most remote jobs care more about your ability to perform rather than a specific degree or credential. As you’re interviewing, don’t focus on your Ivy League diploma, but instead of prior experiences that proved you can #getshitdone. &lt;/li&gt;
&lt;li&gt;  Digital skills are dynamic. What is important now will likely be moot in 5 years. Proving that you’re able to learn and adapt is essential. &lt;/li&gt;
&lt;li&gt;  It is a positive sign if you’ve worked remotely before. Consider freelancing and improving your skills before you score the “dream job”.&lt;/li&gt;
&lt;li&gt;  If you don’t have certain skills, take the time to learn them! The digital era democratizes so many skillsets. In taking the time to learn them, you are simultaneously validating your ambition. This may lead down surprising paths, like starting an online business. &lt;/li&gt;
&lt;li&gt;  Whatever you do, please do not make a living off of, as I once heard someone say, “selling useless stuff to dumb people”. Always offer value to the world. :) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve written a more thorough set of tips to consider when applying to &lt;em&gt;any&lt;/em&gt; remote job, in the Practical Tips section of my &lt;a href="https://blog.stephsmith.io/the-guide-to-remote-work/"&gt;Honest Guide to Remote Work&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Salaries: How Much Should I Make?
&lt;/h2&gt;

&lt;p&gt;Although I cannot provide any global salary advice, there is one important thing that I should mention. Don’t assume that transitioning to a remote role means that you need to downgrade your pay. &lt;/p&gt;

&lt;p&gt;Working remotely is a shift in our ability to live and create more opportunities, not less. It’s a shift that allows you to achieve more within your limited time; an opportunity to redesign your life. There is no reason why that should equate to you earning less. In fact, companies save significant overhead with remote workers, as compared to those housed in an office. &lt;/p&gt;

&lt;p&gt;As you’re trying to establish your salary range for a remote role, consider what you would be willing to take if the role wasn’t remote. Your remote range shouldn’t stray far from that, as you’ll be doing the same work, just in a location or environment conducive to your success. &lt;/p&gt;

&lt;p&gt;I would also suggest doing a quick analysis of salary ranges on Glassdoor, specifically for the remote-first companies listed earlier in this article. For example, what do marketers make at &lt;a href="https://www.glassdoor.com/Salary/Toptal-Salaries-E882070.htm"&gt;Toptal&lt;/a&gt; or &lt;a href="https://www.glassdoor.com/Salary/Auth0-Salaries-E1162798.htm"&gt;Auth0&lt;/a&gt; or &lt;a href="https://www.glassdoor.com/Salary/Buffer-Salaries-E941992.htm#"&gt;Buffer&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;Remotive has also compiled a &lt;a href="https://docs.google.com/spreadsheets/d/1VOehQv0bOs2pY7RkKJ8RmlUbuu8UmSgzfvjR0m5hyxQ/edit#gid=1145296357"&gt;list of salaries&lt;/a&gt; from hundreds of remote workers across positions, industries, and seniority. Take these as simply another data point in your triangulation for determining what you should look for. However, comparison only goes so far, so the ultimate data point is determining the amount of money that will let you achieve your baseline happiness. Never sacrifice that in your search of a new role.&lt;/p&gt;

&lt;p&gt;As for benefits, there is a pretty wide range in terms of companies offer remotely. Some offer very few, while some place benefits at a high importance. The one benefit which you’re unlikely to get if you work for a company that you are not a resident of, is healthcare. Below are two examples (&lt;a href="https://careers.ghost.org"&gt;Zapier&lt;/a&gt; and &lt;a href="https://careers.ghost.org"&gt;Ghost&lt;/a&gt;) of fully remote companies and their benefits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5kijezjylak7kvu3e5pj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5kijezjylak7kvu3e5pj.png" alt="Zapier employment benefits." width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DChYXNvj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh4.googleusercontent.com/GUlT2OpNL_sE4W3kPxomxhU5nWwbmY39m-o2aDccOqEXxN3QZI5cycmT-5Jte1AHj3ODD248guIkAkbS2VpxmHVB2MeRLNxVElvGb8zkQlNMWRoogcRJ-WhiJIOziXeoWZT-wSAw" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DChYXNvj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh4.googleusercontent.com/GUlT2OpNL_sE4W3kPxomxhU5nWwbmY39m-o2aDccOqEXxN3QZI5cycmT-5Jte1AHj3ODD248guIkAkbS2VpxmHVB2MeRLNxVElvGb8zkQlNMWRoogcRJ-WhiJIOziXeoWZT-wSAw" alt="Ghost employment benefits." width="800" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Parting Advice
&lt;/h2&gt;

&lt;p&gt;As someone who has been working in non-technical roles remotely for the past 3+ years, I have seen the world change immensely. These changes signify a new world that is enabled through technology and connectedness which simply wasn’t available in the past. This is the future of work.&lt;/p&gt;

&lt;p&gt;This isn’t just a bunch of millennials who can’t commit to a &lt;em&gt;normal&lt;/em&gt; job, it’s an entire shift in perspective, of individuals deciding that there is a better way of working. This isn’t the first time the workforce has shifted significantly and will not be the last. The most obvious positions that first made the switch were technical, but now many non-technical positions can be done online. Remember, if your role can be done digitally, it can be done remotely. &lt;/p&gt;

&lt;p&gt;As I leave you with this information, please remember to look for legitimate remote work. Legitimate means something slightly different to each individual, but the key is that you should not be trading away parts of your life (whether that be your career, your integrity, your financial stability, your passions, etc.) to work remotely. Remote work doesn’t solve your problems and if you are trading down in one major aspect of your life (something you’ll spend ~⅓ of your life on), that will only introduce additional problems.&lt;/p&gt;

&lt;p&gt;These changes are exciting and I &lt;em&gt;hope&lt;/em&gt; that in a few years time, this article will be completely extraneous, as non-technical remote roles will be so customary and common. &lt;/p&gt;

&lt;p&gt;Best of luck!&lt;/p&gt;

&lt;p&gt;💛&lt;a href="https://twitter.com/stephsmithio"&gt;Steph&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You can find me on &lt;a href="https://twitter.com/stephsmithio"&gt;Twitter&lt;/a&gt;, read more &lt;a href="https://blog.stephsmith.io"&gt;here&lt;/a&gt;, or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>remote</category>
      <category>career</category>
      <category>tips</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Using Google Sheets as a Database: 3 Ways to Connect the API to Node.js</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Sun, 12 May 2019 15:54:41 +0000</pubDate>
      <link>https://forem.com/stephsmithio/3-approaches-for-using-the-google-sheets-api-in-node-js-a-tutorial-490p</link>
      <guid>https://forem.com/stephsmithio/3-approaches-for-using-the-google-sheets-api-in-node-js-a-tutorial-490p</guid>
      <description>&lt;p&gt;This was originally published on &lt;a href="https://blog.stephsmith.io/tutorial-google-sheets-api-node-js/" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I often write about learning to code, remote work, and women in tech.&lt;/p&gt;

&lt;h1&gt;
  
  
  3 Approaches for Using the Google Sheets API in Node.js: A Tutorial
&lt;/h1&gt;

&lt;p&gt;After learning to code for the past year, I’ve recently found myself in the realm of asynchronous Javascript.&lt;/p&gt;

&lt;p&gt;Throughout the last few months, I’ve really struggled with this component of the language and have had to go over parts of &lt;a href="https://www.udemy.com/modern-javascript/" rel="noopener noreferrer"&gt;the course I had taken&lt;/a&gt; many times over. Even after doing that, I still felt pretty lost in terms of how I could take the information and translate it to something actionable.&lt;/p&gt;

&lt;p&gt;During my most recent review of the material, I realized the only way that it would truly stick would be to create something with it. So, I decided to test my knowledge by building out a tool called &lt;a href="https://progression.page" rel="noopener noreferrer"&gt;Progression Page&lt;/a&gt;. Upon creating this application, I did feel much more capable of utilizing tools in the asynchronous toolbox.&lt;/p&gt;

&lt;p&gt;Progression Page is a tool that helps people track and visualize their daily progress in learning to code, so in the spirit of helping others learn, I decided to share this tutorial to inspire others to create mini-applications using Google Sheets as their database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Google Sheets as a Database
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;I track everything that I do in Google sheets&lt;/strong&gt;. When I say everything, I mean everything.&lt;/p&gt;

&lt;p&gt;I track how often I exercise, how many books I get through, how often I learn to code, and much more. I do this to keep myself accountable because I believe in quantifying progress is such an important precursor to “success”﹣not just in my “work life”, but in all facets.&lt;/p&gt;

&lt;p&gt;Since tracking my effort has been so essential in my personal progress, I’ve always been surprised when others don’t do the same, especially when the lack of tracking tends to end with results like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ltv2iXVz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh4.googleusercontent.com/WIh9jTdWd5cXryInEeRc-x8mCKBq83dI3HzlYNyxvKGVZi1vTkINBVXUWPQnV7mR2TW-iIkeTrA0RPpmlI7F1xkLVHFI_X077ne4OeQ6CilsUHX9Z2twrH7nbCsmIZplhFKvIl46" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ltv2iXVz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh4.googleusercontent.com/WIh9jTdWd5cXryInEeRc-x8mCKBq83dI3HzlYNyxvKGVZi1vTkINBVXUWPQnV7mR2TW-iIkeTrA0RPpmlI7F1xkLVHFI_X077ne4OeQ6CilsUHX9Z2twrH7nbCsmIZplhFKvIl46" alt="An all to frequent outcome of people's journey learning to code." width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wanted a place where people could easily log their progress towards coding publicly, so people could keep them accountable. That’s exactly what &lt;a href="http://progression.page" rel="noopener noreferrer"&gt;Progression Page&lt;/a&gt; does; it allows each member to log their daily progress in terms of what they’re learning, how long, and how often in a Google sheet, in addition to their skills, goals, and more. This information is pulled directly from the sheet and displayed on the webpage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3uqgqyzwkwj3pmebam3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3uqgqyzwkwj3pmebam3.png" alt="Example of Progression Page output, with all data pulled directly from a Google sheet." width="800" height="336"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Progression Page is one of many examples of people using Google Sheets as a database. For example, &lt;a href="https://www.sheet2site.com/" rel="noopener noreferrer"&gt;Sheet2Site&lt;/a&gt; utilizes Sheets as the database for sites ranging from events to products to job boards. Although there are certainly pitfalls of using Sheets as a database.,  the beauty of it is that you (and others) can easily view, edit, and scale the information as needed. With that in mind, I can’t wait to see what people create with this technology at their fingertips. &lt;/p&gt;

&lt;h2&gt;
  
  
  Preface
&lt;/h2&gt;

&lt;p&gt;Before jumping in, I want to preface that my code may not be "optimal" or refactored exactly as it should be. Remember, I’m still a n00b (aren’t we all?).&lt;/p&gt;

&lt;p&gt;As someone still new to development, I’m focused on creating things that work, before worrying about how scalable or flawless the application may be. &lt;/p&gt;

&lt;p&gt;I also should mention that this article is created specifically for those using Node.js, although I’m sure it can be tailored for other backends. I won’t go through the steps to set up a Node.js/Express.js application from the very ground up, so it’s really for those familiar with that infrastructure.&lt;/p&gt;

&lt;p&gt;Things that this article will go over:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  How to authenticate OAuth2 in Node.js&lt;/li&gt;
&lt;li&gt;  How to connect with the Google Sheets API with Node to create a Google Spreadsheet database through 3 approaches&lt;/li&gt;
&lt;li&gt;  How to integrate data from the API into an Express.js application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Things that this article will &lt;strong&gt;not&lt;/strong&gt; go over: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  How to style or deploy a web page&lt;/li&gt;
&lt;li&gt;  How to use Node.js or Express.js from the ground up&lt;/li&gt;
&lt;li&gt;  How to use the API across other back-end languages&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;To start, you should have a basic Node application set up with npm initialized.&lt;/p&gt;

&lt;p&gt;From here, you’ll need to install the packages that you’ll be using for this application:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  express (for rendering dynamic pages)&lt;/li&gt;
&lt;li&gt;  request (for making HTTP requests)&lt;/li&gt;
&lt;li&gt;  fs (for the Google API)&lt;/li&gt;
&lt;li&gt;  readline (for the Google API)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;googleapis (for the Google API)&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="nx"&gt;ejs&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="nx"&gt;gs&lt;/span&gt; &lt;span class="nx"&gt;readline&lt;/span&gt; &lt;span class="nx"&gt;googleapis&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;39&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="nx"&gt;save&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ensure that you’ve properly required each of these dependencies at the top of your index file, as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;fs&lt;/span&gt;              &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;readline&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;readline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;googleapis&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;request&lt;/span&gt;         &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;request&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;             &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From here, you should also set your view engine to ejs so that the program recognizes EJS files that are being rendered without needing to define the file extension each time (ie: you can easily call &lt;code&gt;res.render('test')&lt;/code&gt; instead of &lt;code&gt;res.render('test.ejs')&lt;/code&gt;).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;view engine&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ejs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Setting up a Route in Node.js
&lt;/h3&gt;

&lt;p&gt;Since this particular application will send the pulled data to a webpage, we first need to set up the route that will be serving this application. For example, this can be a standard route that we’ll direct to the &lt;code&gt;test&lt;/code&gt; subdirectory, rendering the &lt;code&gt;test.ejs&lt;/code&gt; file. I’ll be editing this endpoint for each part of the tutorial.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Setting up the Rendered Page
&lt;/h3&gt;

&lt;p&gt;You’ll need to create a views directory which hosts your EJS files. I also set up a few other things that I utilize in my node applications which aren’t essential to get started, but are needed for other steps past this tutorial, like adding styling. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  I added header and footer partials, although those are not necessary for every application. If you do not know what those are, just ensure that your entire express files have all of the required information as a normal HTML file would have, like the DOCTYPE and &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; section. &lt;/li&gt;
&lt;li&gt;  I added a public directory to house styling and other files supporting the site. In order for the application to recognize this directory, the following line is required prior to any routing.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;static&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/public&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you’ve taken these steps, your directory should look something like this!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwy1tiaizsnngnw9nz9gw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwy1tiaizsnngnw9nz9gw.png" alt="Example directory set up." width="318" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, you should have the core dependencies in place for our Node application, so we can start working with the API!&lt;/p&gt;

&lt;h2&gt;
  
  
  Linking Node.js to Google Sheets
&lt;/h2&gt;

&lt;p&gt;A bulk of this tutorial will be going through how to connect with the Google API. There are multiple ways to connect with the API and I’ll be sharing three:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Google Sheets HTTP Requests Via V3&lt;/li&gt;
&lt;li&gt;  Google Sheets API v4 with OAuth2&lt;/li&gt;
&lt;li&gt;  Google Developer Console and google-spreadsheet Package with v4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You are welcome to utilize any of the methods below and skip to the approach that is most helpful to you. Before hopping in, I should mention that I would encourage most applications to use v4 for the following reasons:&lt;/p&gt;

&lt;p&gt;Reasons to use v3 HTTP method:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  It’s easier to set up &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reasons to use v4:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  v3 will get deprecated eventually&lt;/li&gt;
&lt;li&gt;  Using the v3 method requires the spreadsheet to be published&lt;/li&gt;
&lt;li&gt;  Using the v3 method only allows reading and not writing&lt;/li&gt;
&lt;li&gt;  You are dependent on the order of tabs with the v3 method&lt;/li&gt;
&lt;li&gt;  You have less flexibility in your requests with the v3 method&lt;/li&gt;
&lt;li&gt;  The output is cleaner in v4&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Method 1: HTTP Requests Via V3
&lt;/h3&gt;

&lt;p&gt;As of today, arguably the easiest way of accessing the API is through &lt;a href="https://developers.google.com/sheets/api/v3/" rel="noopener noreferrer"&gt;v3&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This version offers an endpoint that returns all of the information in a single JSON simply by accessing a designated URL. To utilize this method, it’s as simple as the following steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to your spreadsheet and click File → Publish to the Web&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g9S0_ZBX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/5ZM6NmIRriJNcPHjyobrKr-PgTANdHZRSwZ2pF9OAFnzAqdRDQy8WEMUvYIoFGGKFHsvc93RlbVuPNhV4B6xjn-L6dt3FUAeKHjMTrzWsfYUqtn4bhfMp0_FCCvdO3mRJITZKY-U" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g9S0_ZBX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/5ZM6NmIRriJNcPHjyobrKr-PgTANdHZRSwZ2pF9OAFnzAqdRDQy8WEMUvYIoFGGKFHsvc93RlbVuPNhV4B6xjn-L6dt3FUAeKHjMTrzWsfYUqtn4bhfMp0_FCCvdO3mRJITZKY-U" alt="Setting your spreadsheet to be public." width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select the parts of the document that you want to extract data from. These &lt;strong&gt;must be published&lt;/strong&gt; in order to pull data via this method.&lt;/li&gt;
&lt;li&gt;Utilize this URL structure to access the data, replacing &lt;code&gt;SPREADSHEET_ID&lt;/code&gt; and &lt;code&gt;TAB_NUMBER&lt;/code&gt; with the correct information from your sheet:

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://spreadsheets.google.com/feeds/cells/1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I/1/public/values?alt=json" rel="noopener noreferrer"&gt;https://spreadsheets.google.com/feeds/cells/SPREADSHEET_ID/TAB_NUMBER/public/values?alt=json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  For example, the following URL will return the information from the first image with a JSON depicted in the second: &lt;a href="https://spreadsheets.google.com/feeds/cells/1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I/1/public/values?alt=json" rel="noopener noreferrer"&gt;https://spreadsheets.google.com/feeds/cells/1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I/2/public/values?alt=json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  If you remove &lt;code&gt;?alt=json&lt;/code&gt; from the end, you’ll receive the data back as an XML.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NrFXgOWO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/xp8NP1SN0hlTlCYLsGuNu5QaVJilstp8aOOeDR_aHzw3EwXs-iD-ESOeL8m0b-QfMbh_29bw7kL_I3c1asPN7qW3UC4Sgq-pfqcTcVy7qZT8lls2Dwdr7O65LeLCZ0slUaXD3vdm" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NrFXgOWO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/xp8NP1SN0hlTlCYLsGuNu5QaVJilstp8aOOeDR_aHzw3EwXs-iD-ESOeL8m0b-QfMbh_29bw7kL_I3c1asPN7qW3UC4Sgq-pfqcTcVy7qZT8lls2Dwdr7O65LeLCZ0slUaXD3vdm" alt="Example data input in Google Sheets." width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hwRtI5_w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh5.googleusercontent.com/WiCQ2DfFnvfYz5io4DAjjs5B1tb3IU6oe_IOjBEkyvIZE8QiHHi-FQmMBMOOH2sGfVy2yiwBw-kjVbQx8mefU5t4oofgV_PhCriElpuqBDyJ9jemcq20PdQU0Tv6R_1yGO4NpEua" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hwRtI5_w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh5.googleusercontent.com/WiCQ2DfFnvfYz5io4DAjjs5B1tb3IU6oe_IOjBEkyvIZE8QiHHi-FQmMBMOOH2sGfVy2yiwBw-kjVbQx8mefU5t4oofgV_PhCriElpuqBDyJ9jemcq20PdQU0Tv6R_1yGO4NpEua" alt="Example data output when accessing the v3 endpoint." width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Should we want to make this request via Node, instead of the browser, we can utilize the request package that was installed at the beginning of this tutorial. If you’ve never used the request package, you can &lt;a href="https://www.npmjs.com/package/request" rel="noopener noreferrer"&gt;find the documentation here&lt;/a&gt;. Below is an example of the code that would be run in node at the URL: domain.xyz/v3, rendering the page and passing in the response object that can be used in the express ‘test’ file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/v3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

  &lt;span class="c1"&gt;// Defining the request URL&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://spreadsheets.google.com/feeds/cells/1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I/2/public/values?alt=json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// Using the request package to pull the information using the options object defined above&lt;/span&gt;
  &lt;span class="nf"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="c1"&gt;// Callback function logging the request body in the console if it was successful&lt;/span&gt;
  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;statusCode&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

      &lt;span class="c1"&gt;// Rendering test express file while passing in the response object to be used.&lt;/span&gt;
      &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Returning to the limitations outlined earlier, I should mention that although the v3 API is quite easy to use, I would recommend continuing on to learn about how to utilize v4 of the API. &lt;/p&gt;

&lt;p&gt;Outside of v3 requiring your data to be public, not allowing any writing to the spreadsheet, and less flexibility with your requests, perhaps the most compelling issue is that v3 will be deprecated at some point in the future by Google and so it’s worth moving onto a more reliable solution now. &lt;/p&gt;

&lt;h3&gt;
  
  
  Method 2: Node.js OAuth2 with V4
&lt;/h3&gt;

&lt;p&gt;Let’s get started with v4! This section will teach you to utilize v4 through the methodology that Google provides (without any third party packages). &lt;/p&gt;

&lt;p&gt;Google already provides pretty good &lt;a href="https://developers.google.com/sheets/api/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; for how to begin integrating with v4 of the Sheets API. They offer a Quickstart guide for most back-end languages including PHP, Python, Ruby, .NET, Go, Java, Go, and of course, &lt;a href="https://developers.google.com/sheets/api/quickstart/nodejs#step_3_set_up_the_sample" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;You’ll see in the quickstart section that there are four steps to follow. You can follow the instructions directly from &lt;a href="https://developers.google.com/sheets/api/quickstart/nodejs#step_3_set_up_the_sample" rel="noopener noreferrer"&gt;this page&lt;/a&gt; provided by Google, but I’ve left a couple guiding notes below. &lt;/p&gt;

&lt;h4&gt;
  
  
  Step 1: Turn on the Google Sheets API
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Once you’ve enabled the API, you’ll get a client ID and client secret that can later be managed in the API console. For the purposes of this type of authentication, you will only need the &lt;code&gt;credentials.json&lt;/code&gt; file which should be saved in your working directory (ie: wherever you have app.js or index.js running). &lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 2: Install the client library
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  If you followed the earlier steps of this tutorial, you will have already installed the dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Step 3: Set up the sample
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  If you followed the earlier steps of this tutorial, you will have already required the dependencies at the top of your &lt;code&gt;app.js&lt;/code&gt; or &lt;code&gt;index.js&lt;/code&gt; file. You can now copy the code over from the quickstart page to your working Node file. A few clarifying notes on the code:&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Authentication
&lt;/h5&gt;

&lt;p&gt;The function &lt;code&gt;fs.readFile()&lt;/code&gt; actually initiates the process of authentication via calling the &lt;code&gt;authorize()&lt;/code&gt; function, using the information in your &lt;code&gt;credentials.json&lt;/code&gt; file. &lt;/p&gt;

&lt;p&gt;The test code is set up to call &lt;code&gt;listMajors()&lt;/code&gt; as the callback function upon authentication, which we’ll change later on.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;credentials.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error loading client secret file:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// Authorize a client with credentials, then call the Google Sheets API.&lt;/span&gt;
  &lt;span class="nf"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;listMajors&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In order to perform the authentication, there is a set of functions that actually runs the process. The &lt;code&gt;authorize()&lt;/code&gt; and &lt;code&gt;getNewToken()&lt;/code&gt; functions are predefined and can be moved to the bottom of your Node file or even exported in from another file. There is no need to mess around with this code and it can actually be placed outside of your routing, in order to clean up your code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * Create an OAuth2 client with the given credentials, and then execute the
 * given callback function.
 * @param {Object} credentials The authorization client credentials.
 * @param {function} callback The callback to call with the authorized client.
 */&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;credentials&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;client_secret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;redirect_uris&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;credentials&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;installed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;oAuth2Client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;OAuth2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nx"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;client_secret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;redirect_uris&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

  &lt;span class="c1"&gt;// Check if we have previously stored a token.&lt;/span&gt;
  &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;TOKEN_PATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;getNewToken&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;oAuth2Client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;oAuth2Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setCredentials&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;oAuth2Client&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
 * Get and store new token after prompting for user authorization, and then
 * execute the given callback with the authorized OAuth2 client.
 * @param {google.auth.OAuth2} oAuth2Client The OAuth2 client to get token for.
 * @param {getEventsCallback} callback The callback for the authorized client.
 */&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getNewToken&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;oAuth2Client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;authUrl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;oAuth2Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generateAuthUrl&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;access_type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;offline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;SCOPES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Authorize this app by visiting this url:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;authUrl&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rl&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;readline&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createInterface&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stdin&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;rl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;question&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Enter the code from that page here: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;rl&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;oAuth2Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getToken&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error while trying to retrieve access token&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="nx"&gt;oAuth2Client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setCredentials&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="c1"&gt;// Store the token to disk for later program executions&lt;/span&gt;
      &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;TOKEN_PATH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Token stored to&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TOKEN_PATH&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
      &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;oAuth2Client&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Testing the API Call in Node
&lt;/h4&gt;

&lt;p&gt;The final function which Google provides as &lt;code&gt;listMajors()&lt;/code&gt; is the function that will actually be used to define what information is being manipulated using the API. &lt;/p&gt;

&lt;p&gt;ListMajors currently pulls from a predefined spreadsheet (id = ‘1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms’) that Google has set up. In this case, the code is set to pull from range A2:E and you’ll notice that the data that is returned in the response.data.values object. &lt;/p&gt;

&lt;p&gt;The listMajors function (or whatever you change it to be named) is the callback to the original authentication function and this function will be where you house your &lt;code&gt;res.render()&lt;/code&gt; and send data to your webpage. More on this later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
 * Prints the names and majors of students in a sample spreadsheet:
 * @see https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
 * @param {google.auth.OAuth2} auth The authenticated Google OAuth client.
 */&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;listMajors&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sheets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sheets&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;v4&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="nx"&gt;sheets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;spreadsheets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;spreadsheetId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Class Data!A2:E&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The API returned an error: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Name, Major:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="c1"&gt;// Print columns A and E, which correspond to indices 0 and 4.&lt;/span&gt;
      &lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;No data found.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Step 4: Run the sample
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  In the command line of your node application, run &lt;code&gt;node .&lt;/code&gt;, which will prompt you to authorize access. As you grant access, you may notice that a token.json file is created in your directory. Don’t delete this file as it is used to remember that this particular application has been authenticated. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, you should be able to test out whether everything is set up correctly, by running your app.js file in the terminal. When this happens, you should see the data from &lt;code&gt;listMajors()&lt;/code&gt; print to the console as below. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oWhIKCKP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh5.googleusercontent.com/vhxQnGKXWhFvkXIMlNeZYhKMo5Npe5RAyidjFrDj7sCghXo2LHmFPaGNQxE9ou7JbotsHiA1TD66IeX-9UPGUDWSPX9SCBSRskezhUv5EcBOsmZH7FgLZVVQWZUANJdZEK4H-0RZ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oWhIKCKP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh5.googleusercontent.com/vhxQnGKXWhFvkXIMlNeZYhKMo5Npe5RAyidjFrDj7sCghXo2LHmFPaGNQxE9ou7JbotsHiA1TD66IeX-9UPGUDWSPX9SCBSRskezhUv5EcBOsmZH7FgLZVVQWZUANJdZEK4H-0RZ" alt="Example output from the listMajors() function." width="686" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Customizing the API Call
&lt;/h4&gt;

&lt;p&gt;Now that you’ve set up the authentication layer in your application, it’s time to actually use the API! As mentioned, this means that you’ll be customizing the callback function which is currently &lt;code&gt;listMajors()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In order to pull data, you’ll continue using the &lt;code&gt;sheets.spreadsheets.values.get()&lt;/code&gt;, or if you are looking to pull multiple sections the function you can use &lt;code&gt;sheets.spreadsheets.values.batchGet()&lt;/code&gt;. The documentation for both of these methods can be found here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/get" rel="noopener noreferrer"&gt;spreadsheets.get&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/batchGet" rel="noopener noreferrer"&gt;spreadsheets.values.batchGet&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s start with the former. &lt;/p&gt;

&lt;h5&gt;
  
  
  Getting Data
&lt;/h5&gt;

&lt;p&gt;For this case, you’ll only be editing a few things from the listMajors function since it’s already set up with the &lt;code&gt;get()&lt;/code&gt; method. I’ve renamed it &lt;code&gt;datapull()&lt;/code&gt; for clarity and made the following adjustments:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Changed the spreadsheet ID to my spreadsheet’s ID&lt;/li&gt;
&lt;li&gt;Edited the range to pull only the cells that I want (‘tab2!A1:A10’ in this case)&lt;/li&gt;
&lt;li&gt;Set up the response object which I’ve named ‘rows’&lt;/li&gt;
&lt;li&gt;Passed the data from the rows object into the express file via the res.render call
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/v4-get&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

  &lt;span class="c1"&gt;// Authorization&lt;/span&gt;
  &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;credentials.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error loading client secret file:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Authorize a client with credentials, then call the Google Sheets API.&lt;/span&gt;
    &lt;span class="nf"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;datapull&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// Callback function pulling data&lt;/span&gt;
  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;datapull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sheets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sheets&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;v4&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// Pulling the data from the specified spreadsheet and the specified range  &lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sheets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;spreadsheets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="c1"&gt;// (1) Changed spreadsheet ID&lt;/span&gt;
    &lt;span class="na"&gt;spreadsheetId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="c1"&gt;// (2) Changed the range of data being pulledd&lt;/span&gt;
    &lt;span class="na"&gt;range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tab2!A1:A10&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The API returned an error: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// (3) Setting data for daily tracking&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// (4) Rendering the page and passing the rows data in&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Getting Batch Data
&lt;/h5&gt;

&lt;p&gt;Should you need to pull multiple sections from a spreadsheet, you can keep most of the code the same while replacing &lt;code&gt;.get()&lt;/code&gt; with &lt;code&gt;.batchGet()&lt;/code&gt;, while making the following changes to the request:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Updated the function to be a &lt;code&gt;batchGet()&lt;/code&gt; function&lt;/li&gt;
&lt;li&gt;Updated “range” to plural “ranges”, while inputting the series of cells that you want to grab&lt;/li&gt;
&lt;li&gt;Setting the output of each range to a constant&lt;/li&gt;
&lt;li&gt;Organizing the output data into two arrays&lt;/li&gt;
&lt;li&gt;Rendering the express file while passing through both arrays (in this example: “rows” and “data”)
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/v4-batch-get&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

  &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;credentials.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error loading client secret file:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Authorize a client with credentials, then call the Google Sheets API.&lt;/span&gt;
    &lt;span class="nf"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;datapull&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;datapull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sheets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sheets&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;v4&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// (1) Updating function to use batchGet()&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;sheets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;spreadsheets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;batchGet&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;spreadsheetId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

    &lt;span class="c1"&gt;// (2) Updating "range" to "ranges" and inputting the series of cells to grab within the array&lt;/span&gt;
    &lt;span class="na"&gt;ranges&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tab2!A2:A12&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tab2!B2:B12&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
             &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tab3!A2:A&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;tab3!B2:B&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The API returned an error: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// (3) Pulling first two ranges into arrays - data format changes from.values to .valueRanges[range defined above].values&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rows1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;valueRanges&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rows2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;valueRanges&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// Pulling last two ranges into arrays- same data format as above&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;valueRanges&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;valueRanges&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// (4) Organizing the data output into two arrays: rows and data&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;rows1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;rows2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;data1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;// (5) Rendering the page and passing both the rows and data arrays through&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hopefully, it’s clear that using the &lt;code&gt;.get()&lt;/code&gt; and &lt;code&gt;.batchGet()&lt;/code&gt; methods in v4 enable you to have much more control over the requests that you hope to make. There are many other methods that the Google API enables via v4, including the ability to write via the &lt;a href="https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update" rel="noopener noreferrer"&gt;update()&lt;/a&gt; and &lt;a href="https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/batchUpdate" rel="noopener noreferrer"&gt;batchUpdate()&lt;/a&gt; methods. With this in mind, let’s jump into the final approach for using the Google API which utilizes a third-party package. &lt;/p&gt;

&lt;h3&gt;
  
  
  Method 3: Node.js OAuth2 - Google Developer Console and npm google-spreadsheet Package
&lt;/h3&gt;

&lt;p&gt;The final method utilizes the Google Developer Console and a third party npm package called google-spreadsheet which arguably is much cleaner than the functions outlined in the Google documentation. In order to utilize this approach, the first step is to install google-spreadsheet and to require the modules at the top of your file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;npm&lt;/span&gt; &lt;span class="nx"&gt;install&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;spreadsheet&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt;     &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;fs&lt;/span&gt;              &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;readline&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;readline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;        &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;googleapis&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;request&lt;/span&gt;         &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;request&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;GoogleSpreadsheet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;google-spreadsheet&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;creds&lt;/span&gt;             &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./client_secret.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;               &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are a few administrative steps in order to enable authentication through this approach. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;a href="https://console.developers.google.com/apis/dashboard" rel="noopener noreferrer"&gt;Google Developers Console&lt;/a&gt; and navigate to the API section. You should see a dashboard.&lt;/li&gt;
&lt;li&gt;Click on  “Enable APIs” or “Library” which should take you to the library of services that you can connect to. Search and enable the Google Sheets API. &lt;/li&gt;
&lt;li&gt;Go to Credentials and select “Create credentials”. &lt;/li&gt;
&lt;li&gt;Select “Service Account” and proceed forward by creating this service account. It can be named whatever you want. &lt;/li&gt;
&lt;li&gt;Under “Role”, select Project &amp;gt; Owner or Editor, depending on what level of access you want to grant. &lt;/li&gt;
&lt;li&gt;Select JSON as the Key Type and click “Create”. This should automatically download a JSON file with your credentials. &lt;/li&gt;
&lt;li&gt;Rename this credentials file as &lt;code&gt;client_secret.json&lt;/code&gt; and copy it into your working directory. &lt;/li&gt;
&lt;li&gt;The final administrative step is &lt;strong&gt;super important&lt;/strong&gt;! Take the “client email” that is in your credentials file and grant access to that particular email in the sheet that you’re working in. You can do this by clicking “Share” in the top left of your spreadsheet and then pasting that email in the field, enabling with “Can edit”. If you do not do this, you will get an error when trying to pull the data. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In order to test whether the code works, we can start working with the API! Below is some example code which effectively authenticates and gets the data from the second tab of the identified spreadsheet. I've left notes identifying where the authentication is taking place, what is being requested, and where the response is being returned. &lt;/p&gt;

&lt;p&gt;While you’re testing, make sure to take a look at the output in the console which will either log the error or the response object. If you are getting a 403 error, this means that something probably went wrong in setting up the authentication.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/google-spreadsheet&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

  &lt;span class="c1"&gt;// Identifying which document we'll be accessing/reading from&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleSpreadsheet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Authentication&lt;/span&gt;
  &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;useServiceAccountAuth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;creds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="c1"&gt;// Getting cells back from tab #2 of the file&lt;/span&gt;
  &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getCells&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="c1"&gt;// Callback function determining what to do with the information&lt;/span&gt;
  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

    &lt;span class="c1"&gt;// Logging the output or error, depending on how the request went&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;// Rending the test page while passing in the response data through "rows". Can access specific data points via: rows[i]._value&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nx"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;  
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this package, it becomes even easier to start writing to the spreadsheet as well. For example, perhaps you want to write to the spreadsheet daily with your progress. Here is an example of how you might do that:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/google-spreadsheet&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;

  &lt;span class="c1"&gt;// Identifying which document we'll be accessing/reading from&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;GoogleSpreadsheet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="c1"&gt;// Authentication&lt;/span&gt;
  &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;useServiceAccountAuth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;creds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

  &lt;span class="c1"&gt;// Adding a row in tab #4 with the date and the number 1&lt;/span&gt;
  &lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addRow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;=today()&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;progress&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;You added your progress for the day.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 

      &lt;span class="c1"&gt;// Rendering test page&lt;/span&gt;
      &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="p"&gt;});&lt;/span&gt;  
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From here, you can utilize the functions within the docs of the &lt;a href="https://www.npmjs.com/package/google-spreadsheet" rel="noopener noreferrer"&gt;google-spreadsheet package&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting the Google Sheets Database to Express
&lt;/h3&gt;

&lt;p&gt;Hopefully the last few sections were helpful in identifying different approaches that you can take to connect with, authenticate, and pull data from the Google API. The final step in utilizing the database to produce a website/application that uses this information in real time is to pass through the data to the rendered EJS file. &lt;/p&gt;

&lt;p&gt;At this point, you should have a few routes set up which pull data that you need from the API and which pass this data through to the express file of your choice (via your &lt;code&gt;res.render()&lt;/code&gt; call). Within the express file itself, you are able to utilize this data through &lt;a href="https://ejs.co/" rel="noopener noreferrer"&gt;EJS (embedded javascript) tags&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;These tags allow you to render Javascript in-line or alongside your HTML. For example, if you were pulling from a &lt;code&gt;batchGet()&lt;/code&gt; function which passed data through to the express file as “data” and “rows”, you can use the EJS tags to loop through your data and print it directly to the page. &lt;/p&gt;

&lt;p&gt;Input (pulling from &lt;a href="https://docs.google.com/spreadsheets/d/1UIV4RkOx8KJK2zQYig0klH5_f8FCOdwIWV8YF2VyF8I/edit?usp=sharing" rel="noopener noreferrer"&gt;this file&lt;/a&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="na"&gt;include&lt;/span&gt; &lt;span class="na"&gt;partials&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="na"&gt;header&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;This is a tutorial for using the Google Sheets API!&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;This data is pulling from the second tab:&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!--Looping through the 'rows' array and printing the output within the EJS tags--&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="na"&gt;for(i=&lt;/span&gt;&lt;span class="s"&gt;0;&lt;/span&gt; &lt;span class="na"&gt;i&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;10;&lt;/span&gt; &lt;span class="na"&gt;i&lt;/span&gt;&lt;span class="err"&gt;++)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        Rows data: &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;rows&lt;/span&gt;&lt;span class="err"&gt;[0][&lt;/span&gt;&lt;span class="na"&gt;i&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;, &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;rows&lt;/span&gt;&lt;span class="err"&gt;[1][&lt;/span&gt;&lt;span class="na"&gt;i&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;    

    &lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;hr&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;This data is pulling from the third tab:&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

    &lt;span class="c"&gt;&amp;lt;!--Looping through the 'data' array and printing the output within the EJS tags--&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="na"&gt;for(i=&lt;/span&gt;&lt;span class="s"&gt;0;&lt;/span&gt; &lt;span class="na"&gt;i&lt;/span&gt;&lt;span class="err"&gt;&amp;lt;10;&lt;/span&gt; &lt;span class="na"&gt;i&lt;/span&gt;&lt;span class="err"&gt;++)&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        On &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="err"&gt;[0][&lt;/span&gt;&lt;span class="na"&gt;i&lt;/span&gt;&lt;span class="err"&gt;]&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;, I made the following progress: &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%=&lt;/span&gt;&lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="err"&gt;[1][&lt;/span&gt;&lt;span class="na"&gt;i&lt;/span&gt;&lt;span class="err"&gt;]%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;    

&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="err"&gt;%&lt;/span&gt; &lt;span class="na"&gt;include&lt;/span&gt; &lt;span class="na"&gt;partials&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="na"&gt;footer&lt;/span&gt; &lt;span class="err"&gt;%&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output (rendering from the EJS file):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y3iCyFJ7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/IA2rn_WrwNihFHSpmXJXS3fRm2JOZmd5SA2M-1Rfbn4up9B7qMmEDc46IrAnf8qnfIqvfatm-CZUg7xwKA6AB1pQWPQe303kq70ihUNhJqnLGdbhCn_YguKbllpUA9rZudjND3ZA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y3iCyFJ7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://lh3.googleusercontent.com/IA2rn_WrwNihFHSpmXJXS3fRm2JOZmd5SA2M-1Rfbn4up9B7qMmEDc46IrAnf8qnfIqvfatm-CZUg7xwKA6AB1pQWPQe303kq70ihUNhJqnLGdbhCn_YguKbllpUA9rZudjND3ZA" alt="Output from the rendered EJS file, displaying the data from the rows and data variables passed through." width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you set up the right database-link, you are free to style the page and add additional functionality, just like any other HTML page, since EJS is essentially HTML with Javascript embedded. &lt;/p&gt;

&lt;h3&gt;
  
  
  Over and Out
&lt;/h3&gt;

&lt;p&gt;I hope that the information provided gives you enough of a backbone for understanding how to make requests and then actually embed requests within your Node/Express application. You’ll have to think through your individual approach for setting up the data structures you may need,  but the method still remains the same.&lt;/p&gt;

&lt;p&gt;As demonstrated, the Google API provides multiple methods for accessing data from Google Spreadsheets and I encourage you to use whichever method best suits your needs. I would also encourage you to dive into the documentation to learn more about the possible solutions available. I'm really excited to see what you create and as always, if you have any questions as you’re learning, feel free to&lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt; shoot me a message&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;PS: Come &lt;a href="https://twitter.com/stephsmithio/status/1127584436130701312" rel="noopener noreferrer"&gt;discuss on Twitter&lt;/a&gt; or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>My Journey: Learning to Code and Launch in Months</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Mon, 29 Apr 2019 13:10:15 +0000</pubDate>
      <link>https://forem.com/stephsmithio/one-person-s-story-learning-to-code-and-launch-in-months-1np4</link>
      <guid>https://forem.com/stephsmithio/one-person-s-story-learning-to-code-and-launch-in-months-1np4</guid>
      <description>&lt;p&gt;This was originally published on &lt;a href="https://blog.stephsmith.io/finding-programming-inspiration-by-learning-to-code/" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I often write about remote work, learning to code, and women in tech. I wrote this article in particular based on questions I had received from people thinking of taking the programming plunge. Hope you enjoy!&lt;/p&gt;




&lt;h2&gt;
  
  
  My “Story”
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;4 years ago&lt;/strong&gt;: Sitting in a lecture hall learning about thermodynamics and pipe sizing. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3 years ago&lt;/strong&gt;: Sitting in an office creating Excel models for the Fortune 500.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2 years ago&lt;/strong&gt;: Obtained by first Macbook and began diving into the world of SEO, product, and digital advertising.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1 year ago&lt;/strong&gt;: Decided it was finally time to learn to code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6 months ago&lt;/strong&gt;: &lt;a href="https://twitter.com/stephsmithio/status/1047412484812894208" rel="noopener noreferrer"&gt;Launched my first project&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1047412484812894208-873" src="https://platform.twitter.com/embed/Tweet.html?id=1047412484812894208"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1047412484812894208-873');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1047412484812894208&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h2&gt;
  
  
  February 2018
&lt;/h2&gt;

&lt;p&gt;After many years of working on the fringe of technology, February 2018 was when I finally decided that it was time to stop watching with my nose pressed up to the glass window. I wanted to be part of this world.&lt;/p&gt;

&lt;p&gt;Up until February 2018, I had always watched technology emerge in awe, but continuously made excuses as to why &lt;em&gt;“I couldn’t do that”&lt;/em&gt; or justified why that world &lt;em&gt;“was for other people”&lt;/em&gt;. February of 2018 was the start of my journey to make this world less of a black box and instead start creating, slowly but surely.&lt;/p&gt;

&lt;p&gt;Specifically, this is a story about my year finding the right inspiration to finally learn to code and eventually launch four projects over the course of 2018, leading to a nomination for Maker of the Year and a Maker’s Fest Golden Kitty. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1069630528981164033-620" src="https://platform.twitter.com/embed/Tweet.html?id=1069630528981164033"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1069630528981164033-620');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1069630528981164033&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1083403514599100417-0" src="https://platform.twitter.com/embed/Tweet.html?id=1083403514599100417"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1083403514599100417-0');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1083403514599100417&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Hopefully, if you’re in a similar place - one where you’re on the verge of taking the leap - this article will push you over the edge. &lt;/p&gt;




&lt;h2&gt;
  
  
  You = Your Worst Enemy
&lt;/h2&gt;

&lt;p&gt;There have been and always will be blockers in my life. Upon reflection, the process of finally learning to code taught me one important thing: I was often my own biggest blocker.&lt;/p&gt;

&lt;p&gt;For years, many of the excuses I had made were rarely based in reality, but instead justification not to start. I told myself narratives that others succeeding in ways that I had always wanted were cut from a different cloth, were given different opportunities than I, or were simply too far ahead. While some of these may notions may hold truth in specific scenarios, I had built a habit of making these assumptions without properly vetting their accuracy.&lt;/p&gt;

&lt;p&gt;Most of the stories I told myself were myths. Specifically, these &lt;a href="https://blog.stephsmith.io/learning-to-code-apps/" rel="noopener noreferrer"&gt;7 myths of learning to code&lt;/a&gt; prevented me from thinking coding was accessible, when in reality it was right there at my fingertips. Whether I was wrapped up in finding the perfect idea or in identifying the perfect stack to learn, I was always doing those things instead of actually making any process. In the age where education is cheaper and more accessible than ever, all I needed to do was start.&lt;/p&gt;

&lt;p&gt;Thankfully, a year ago I finally wrapped my head around this. I didn’t do anything revolutionary: I picked up a &lt;a href="https://www.udemy.com/the-web-developer-bootcamp/" rel="noopener noreferrer"&gt;Udemy course&lt;/a&gt;, picked a project to build, and started tracking whether I was making progress every single day.&lt;/p&gt;

&lt;h2&gt;
  
  
  8 months → 1 month → 24 hours
&lt;/h2&gt;

&lt;p&gt;Before you can launch a product, you need to build a product. And before you can build a product, you’ll need to learn &lt;em&gt;how&lt;/em&gt; to build a product.&lt;/p&gt;

&lt;p&gt;Learning to code isn’t as difficult as many make it out to be, but I don’t want to give the false impression that it is “easy”. Taking on any skill or industry takes a significant amount of dedication and programming is no different. However, it is beneficial to know that similar to other skill acquisition, learning to code accelerates with continuous effort. &lt;/p&gt;

&lt;p&gt;For example, this was a brief overview of my timeline: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  8 months learning to code and launching my &lt;a href="https://nomadhubb.com" rel="noopener noreferrer"&gt;first project&lt;/a&gt; (which is objectively my least impressive)&lt;/li&gt;
&lt;li&gt;  1 month coding my &lt;a href="https://begreat.me" rel="noopener noreferrer"&gt;second project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  24 hours coding my &lt;a href="https://eunoia.world" rel="noopener noreferrer"&gt;third project&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  10 days coding my &lt;a href="https://femake.tech" rel="noopener noreferrer"&gt;fourth project&lt;/a&gt; (30x quicker than my first project, yet similar in complexity)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although Product Hunt isn’t necessarily the best indicator for success, &lt;a href="https://begreat.me" rel="noopener noreferrer"&gt;MYGA&lt;/a&gt; made it to #1, &lt;a href="https://eunoia.world" rel="noopener noreferrer"&gt;Eunoia&lt;/a&gt; made it to #2, and &lt;a href="https://femake.tech" rel="noopener noreferrer"&gt;FeMake&lt;/a&gt; made it to #4. The point is not that applications should take 24 hours or even 1 week to create. Instead, the reason I’m telling you this is to emphasize the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Each time you launch, you will learn something which will better inform any other project you work subsequently on. Put simply, you will learn from your mistakes through either direct or indirect feedback. More on this later.&lt;/li&gt;
&lt;li&gt;Although learning to code may take a while to grasp, things will get much faster. For example, my fourth project was similar in complexity to my first, yet was many times shorter. It wasn’t until my third project where I felt that I could truly ship quickly. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The idea here isn’t revolutionary, but simply that a lot of the heavy lifting will happen at the beginning, in the form of learning. Learning is powerful and exactly what has enabled me to build every single one of my applications, yet I realize that it can be overwhelming and difficult to stick to. There is always going to be chaos before order, and that’s why it’s essential to be aware of exactly what you’re diving into. &lt;/p&gt;

&lt;h2&gt;
  
  
  1, 2, 3, 4
&lt;/h2&gt;

&lt;p&gt;Learning to code was a central goal for me in 2018. I can attribute my “success” in actually achieving my goal to a few things, which I’ll dive into further:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Clearly identifying &lt;em&gt;“why”&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  Consistently tracking progress&lt;/li&gt;
&lt;li&gt;  Creating while learning&lt;/li&gt;
&lt;li&gt;  Starting small&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Start with Why
&lt;/h3&gt;

&lt;p&gt;Before you jump into development, you should identify why the hell you’re making the leap. Hint: if it’s to “get rich”, you’ll never make your way through the long and continuous learning process. &lt;/p&gt;

&lt;p&gt;There are many reasons as to why someone may learn to code. Here are a few examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Becoming a paid developer&lt;/li&gt;
&lt;li&gt;  Launching your own products&lt;/li&gt;
&lt;li&gt;  Working more effectively with your coworkers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While there is no correct answer, I encourage you to identify a reason that will continuously motivate you and as you go through the process, ask yourself whether the actions you’re taking are leading towards that goal. &lt;/p&gt;

&lt;p&gt;For me, it was being able to build and launch products, so I would ask myself questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  “Will learning this technology enable me to create my first project?”&lt;/li&gt;
&lt;li&gt;  “Am I learning valuable skills that I can build upon for years to come?”&lt;/li&gt;
&lt;li&gt;  “Am I adding to the ecosystem that I hope to be a part of moving forward?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Make sure that your goals accompany you throughout the process and aren’t just a simple “end goal”. For example, if your singular goal is to “Hit #1 on Product Hunt”, you may find yourself disappointed if you don’t manage to hit that particular metric, regardless of how beneficial your journey may have been. &lt;/p&gt;

&lt;p&gt;Remember: If you define better goals, you will have better outcomes and ultimately, dissatisfaction is only based out of your expectations which are inherited from your goals.&lt;/p&gt;

&lt;h3&gt;
  
  
  300 Hours
&lt;/h3&gt;

&lt;p&gt;When I began to learn, I decided that the best way to hold myself accountable was to track my progress over time. Therefore, I tracked whether I was (or wasn’t) learning development every single day. Ultimately, I can look back on the past year and quantify my progress - specifically, I can say that I spent approximately 300 hours learning and launching applications.&lt;/p&gt;

&lt;p&gt;Although this number will differ for each individual, it also provides a basic understanding of the level of commitment needed to get there. For example, if you’re planning on only dedicating an hour a week to this endeavour, it takes a really long time - 6 years! Just like anything in life, continuous yet consistent efforts will get you there quicker than you expect.&lt;/p&gt;

&lt;p&gt;For example: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  1 hour per day (7h/week) will get you there in &amp;lt;1 year!&lt;/li&gt;
&lt;li&gt;  ~2 hours per day (15h/week) will get you there in &amp;lt;5 months!&lt;/li&gt;
&lt;li&gt;  A full-time commitment (if possible) will get you there in &amp;lt;2 months!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2Fk7ybDpBepFZgtYy-4bJhvt_Pl16vy56ZL_4R17YVDlHLxcku8P20gBMoFHKZuK0ZWyqoqQims4YGQ6oWMUjr0Ko0zrs540ZR2bXusbQEwAH72Wzv2TwzqBvp58_yAENd2lCawW9t" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2Fk7ybDpBepFZgtYy-4bJhvt_Pl16vy56ZL_4R17YVDlHLxcku8P20gBMoFHKZuK0ZWyqoqQims4YGQ6oWMUjr0Ko0zrs540ZR2bXusbQEwAH72Wzv2TwzqBvp58_yAENd2lCawW9t" alt="An approximation of the time it takes to learn to code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m sure that many people think that these timelines sound unlikely or incorrect, but I would emphasize that development is not unique to other skills. Input equals output. And regardless of the exact accuracy, we are very quick to set these KPIs in our daily lives, but strangely against implementing them in our daily lives. By simply measuring how much time you’re spending learning to do X, you have a much more objective view of your progress.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create While Learning
&lt;/h3&gt;

&lt;p&gt;Since the initial phase of learning can take time, I would encourage people to break it up into steps. At each major node (ex: HTML → CSS → beginner JS → intermediate JS → etc), make sure that you’re creating something, regardless of how simple it is. For example, your projects could be a simple personal page → a todo list → a small directory. &lt;/p&gt;

&lt;p&gt;By adding small projects along the way, you’re essentially reinforcing what you are learning, while also lightening the psychological load of absorbing information prior to utilizing it. &lt;/p&gt;

&lt;p&gt;I would also encourage people to come up with a larger project that they hope to accomplish as they start to acquire the requisite knowledge. The concept doesn’t have to be revolutionary (mine certainly was not), but it should be a project that you can continuously work towards as you’re learning. The act of creating will not only motivate you throughout, but also enable you to test your learning and ultimately learn more effectively.&lt;/p&gt;

&lt;h3&gt;
  
  
  Start Small: Launching is Learning
&lt;/h3&gt;

&lt;p&gt;All of us are guilty for thinking our ideas are better than they actually are, so the only path to objective validation is launching. &lt;/p&gt;

&lt;p&gt;For that reason, I would really encourage makers to launch sooner rather than later. You do not need to have been learning development for years to launch and in many scenarios, you should launch before you feel ready. This is partially true because you will never truly feel ready, but also to get your product to the point of receiving valuable feedback ASAP. This will inherently prohibit you from going down a path that isn’t validated (making features no one cares about, polishing a site no one will ever use, etc.).&lt;/p&gt;

&lt;p&gt;As you’re learning development, focus on getting “shit out the door”, since &lt;strong&gt;launching is learning&lt;/strong&gt;, Keep in mind that making a product is all about constantly learning and pivoting, and it’s extremely hard to do this objectively (ie: not just based on your own singular opinion) without launching. &lt;/p&gt;

&lt;p&gt;Once you launch, you get immediate feedback on what people care about. Based on both data and &lt;strong&gt;specific&lt;/strong&gt; feedback (not vague comments like "this is a great app!"), you can determine whether a project is worth proceeding forward with. Try your best to look at a launch objectively and tease out flaws in your original thinking. Remember: launches are free feedback!&lt;/p&gt;

&lt;p&gt;As you’re building, don’t get too hung up on whether your product is 100% perfect or utilizing the most scalable stack. Do you know what stack the number #1 product yesterday was made with? Yeah, me neither. &lt;/p&gt;

&lt;p&gt;That is another reason why I encourage those who are unsure about learning development to opt for that instead of building with “no code” or hiring the work out. The ability for you as a creator to make small, yet meaningful tweaks quickly is underrated. Similarly, your ability to pivot to a new project without searching for the perfect “no-code” tool or dropping another few $k on developers, is going to allow both you and your wallet to stay lean and agile. &lt;/p&gt;

&lt;p&gt;In other words, you'll be able to create and pivot more quickly, and in the future not need to rely so heavily on others to create your visions. Even past that, just having a technical background helps you work more effectively with developers and understand the tech industry at a deeper level.&lt;/p&gt;

&lt;h2&gt;
  
  
  No One “Knows” What They’re Doing
&lt;/h2&gt;

&lt;p&gt;If I haven’t convinced you to start learning to code yet, I will leave you with this bit of wisdom: no one truly “knows” what they’re doing. Those that are further ahead than you in a certain space have likely just been doing it from longer and are not smarter or more capable than you. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-16258463969-200" src="https://platform.twitter.com/embed/Tweet.html?id=16258463969"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-16258463969-200');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=16258463969&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;In a world ruled by dichotomies, people are viewed as “technical” and “non-technical”, when in reality, everyone is just somewhere along a &lt;a href="https://blog.stephsmith.io/when-do-you-become-a-developer/" rel="noopener noreferrer"&gt;curve of technical ability&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;It’s helpful to recognize that many makers are still learning and often feel like imposters, even if they’ve been creating for years. The only thing that separates those who are successful from those who aren’t, is the few that are willing to continuously build, iterate, and learn from their mistakes. So if you’re unsure about starting, my encouragement is to just &lt;em&gt;try it out&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;Don’t consider yourself technical? Try development before writing it off.&lt;/p&gt;

&lt;p&gt;Unsure of your ideas? Share them and get feedback.&lt;/p&gt;

&lt;p&gt;Afraid to launch? Do it anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build Your Own Path
&lt;/h2&gt;

&lt;p&gt;I hope that my story helped provide some inspiration in you potentially taking the leap in learning to code on your own. However, with anything in life, remember to build your own path. Just because you see everyone on Twitter saying that X industry is “next” or you see the media glamourizing venture capital, that doesn’t mean that you need to go down that route. Remember that we live in a world where the most clickable headlines make the most money and thus the way the world is represented by the media often isn’t the reality of how things work.  &lt;/p&gt;

&lt;p&gt;So instead of focusing on what you know now, focus on what you can learn for the future. Don’t get overwhelmed by the concept of 300 hours or how far ahead someone else may be. Focus on continuous investment in the things that will bring you opportunity and happiness along the marathon that is life. &lt;/p&gt;

&lt;p&gt;And most of all, remember that there is a start to any process. So just start. :) &lt;/p&gt;

&lt;p&gt;If you have questions at any point throughout the process, feel free to &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;send me a message&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;You can also &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>motivation</category>
      <category>learning</category>
      <category>tips</category>
    </item>
    <item>
      <title>When Do You Become A Developer?</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Wed, 10 Apr 2019 16:36:00 +0000</pubDate>
      <link>https://forem.com/stephsmithio/when-do-you-become-a-developer-377e</link>
      <guid>https://forem.com/stephsmithio/when-do-you-become-a-developer-377e</guid>
      <description>&lt;p&gt;This was originally published on &lt;a href="https://blog.stephsmith.io/when-do-you-become-a-developer/" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I often write about remote work, learning to code, and women in tech.&lt;/p&gt;

&lt;h1&gt;
  
  
  When do you &lt;em&gt;become&lt;/em&gt; a developer?
&lt;/h1&gt;

&lt;p&gt;Over the past year I've taught myself to code. I've built and launched four web applications, taken courses from front-end to back-end, can work with APIs, and know what a Promise is.&lt;/p&gt;

&lt;p&gt;Yet for some reason, I still don't feel like a developer.&lt;/p&gt;

&lt;p&gt;I thought this feeling would slowly fade over time as I learned more, built more, and code no longer looked so foreign. But to this day, this identity still doesn't seem to fit and it's unclear when it ever will. I'm left wondering...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;When will I feel like a developer? When will I "become" one?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've been thinking more about &lt;em&gt;why&lt;/em&gt; I still feel like an imposter. Is it due to a personal perception, an external one, or another reason entirely? I decided to reach outside of my own world to find out.&lt;/p&gt;

&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;When do you become a developer? &lt;strong&gt;No one knows!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101602217205862400-513" src="https://platform.twitter.com/embed/Tweet.html?id=1101602217205862400"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101602217205862400-513');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101602217205862400&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  The Golden Question
&lt;/h3&gt;

&lt;p&gt;I decided to &lt;a href="https://twitter.com/stephsmithio/status/1101501592652537858" rel="noopener noreferrer"&gt;poll hundreds of people&lt;/a&gt; to see when they thought this inflection point happened. Was it when you…&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Wrote your first line of code?&lt;/li&gt;
&lt;li&gt;  Got your first user?&lt;/li&gt;
&lt;li&gt;  Created your first project?&lt;/li&gt;
&lt;li&gt;  Got hired as a developer?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101501592652537858-414" src="https://platform.twitter.com/embed/Tweet.html?id=1101501592652537858"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101501592652537858-414');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101501592652537858&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Or perhaps it could be something else entirely? When you...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Understood the difference between X and Y?&lt;/li&gt;
&lt;li&gt;  Could teach another person development?&lt;/li&gt;
&lt;li&gt;  Moved past "Mount Stupid"?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F04%2Fimage.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F04%2Fimage.png" alt="Dunning-Kruger Effect"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Candidly, I was expecting the responses to fall more heavily within "Woah IDK", since I was so unsure of the answer myself. Interestingly enough, many people seemed to have concrete views on this. However, what was perhaps just as telling was that those views diverged from one another. All answers received ~20-30% of the votes and from a quantitative perspective there wasn't any more clarity as to what the "right" answer was. &lt;em&gt;Perhaps that was the answer in itself.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A "Developing" Perspective
&lt;/h3&gt;

&lt;p&gt;First, I'd like to share some of the responses from those who did have a defined point of view. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write first line of code (17%)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.quora.com/When-can-you-call-yourself-a-programmer" rel="noopener noreferrer"&gt;From Quora&lt;/a&gt;: "You can consider yourself as a programmer when you are able to write at least one line of code. We don't care about the length of the line, but this line of code should produce something which is correct."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create first app (33%)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101529916842090497-359" src="https://platform.twitter.com/embed/Tweet.html?id=1101529916842090497"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101529916842090497-359');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101529916842090497&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1101521440665464832-107" src="https://platform.twitter.com/embed/Tweet.html?id=1101521440665464832"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101521440665464832-107');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101521440665464832&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get hired as one (22%)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101506715353313280-232" src="https://platform.twitter.com/embed/Tweet.html?id=1101506715353313280"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101506715353313280-232');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101506715353313280&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Woah IDK (28%)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101542594763505664-861" src="https://platform.twitter.com/embed/Tweet.html?id=1101542594763505664"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101542594763505664-861');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101542594763505664&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101505465706532864-709" src="https://platform.twitter.com/embed/Tweet.html?id=1101505465706532864"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101505465706532864-709');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101505465706532864&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101580599779885056-103" src="https://platform.twitter.com/embed/Tweet.html?id=1101580599779885056"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101580599779885056-103');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101580599779885056&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Save the World
&lt;/h3&gt;

&lt;p&gt;The results of this thought experiment reminded me of a video that I saw in the earlier days of the social media﹣back when &lt;a href="https://vine.co/" rel="noopener noreferrer"&gt;Vine&lt;/a&gt; was a thing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=oiarjJG74bs" rel="noopener noreferrer"&gt;The video&lt;/a&gt; was titled "How to save the world". Naturally, you'd expect something highly enlightening about the state of the world and/or our future, but instead you get a boy who says:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  How to save the world:&lt;/li&gt;
&lt;li&gt;  Search for world&lt;/li&gt;
&lt;li&gt;  Click on an image&lt;/li&gt;
&lt;li&gt;  And "save" the world (as he's saving the image to his computer)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Obviously this is a joke, but perhaps an unintentional lesson that we don't always need to take things at face value. Perhaps there are more interesting interpretations of what "a developer" is that we can dream up and maybe learn a thing or two while we're at it. &lt;/p&gt;

&lt;h3&gt;
  
  
  "What do you do?"
&lt;/h3&gt;

&lt;p&gt;Upon further consideration, it became apparent that software development often doesn't have the same enforced credentials as some other occupations. For example, there are rarely self-taught doctors or open source construction projects.&lt;/p&gt;

&lt;p&gt;Sure, there are many software engineering degrees, but there are also a significant number of paid/non-paid contributors in the software industry that do not have any sort of certification. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1080865130966142983-906" src="https://platform.twitter.com/embed/Tweet.html?id=1080865130966142983"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1080865130966142983-906');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1080865130966142983&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;I've put some thought into &lt;em&gt;why&lt;/em&gt; some roles require a degree and others do not. I came to the following two thoughts. A profession that requires a degree...&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Has an agreed upon, correct approach to get to a specific outcome&lt;/li&gt;
&lt;li&gt;Has a certain set of steps required to learn said approach&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For example, someone who is a doctor needs to learn a discrete set of theory, do a discrete set of surgical procedures, and when push comes to shove, they need to know the "right" answer. Of course, there are some situations with ambiguity, but in many cases there is a correct order. &lt;/p&gt;

&lt;p&gt;What I find so interesting with software is that there are a myriad of approaches that can be taken to get to a myriad of solutions. In other words, there are many wrong methods, but also many correct methods﹣and you can get to these correct methods without being formally trained. This is partially due to the democratization of information, but also that software development is in many ways the act of problems solving without a single correct answer. Therefore, there is no single approach to learning it.&lt;/p&gt;

&lt;p&gt;For example, there are software engineers who can create similar solutions with completely different inputs (ex: languages, frameworks, tools, functions, etc.), while others are also creating wildly different solutions with the same inputs (ex: unique applications with the same underlying tooling). This rings true for other creative industries as well. For example, if you gave two people a canvas and paint, they could create wildly different things in which neither would necessarily be incorrect. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"So, are you a coder? Well, are you a problem solver?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Nth Degree of Correctness
&lt;/h3&gt;

&lt;p&gt;I think we can further this idea, through the concept of certain roles having an "Nth degree of correctness". What I mean by this, is the varying degree of approaches that will get you to a "correct" solution. For example, with data entry there is one correct solution: the data getting input correctly. Sure there are variables like speed, but ultimately, there is only one correct outcome. As we've already identified, software engineering almost always has multiple correct solutions. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"In fact, no one understands as well as a computer scientist that in the face of a seemingly unmanageable challenge, you should neither toil forever nor give up, but as we'll see, try a third thing entirely." – Algorithms to Live By&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can start to visualize some of these roles and their "degrees of correctness" in an effort to gain some clarity regarding how jobs or industries may evolve. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F03%2Fimage-7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F03%2Fimage-7.png" alt="Nth degree of correctness"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The further to the left (the fewer "correct" solutions), the more that particular skill can be trained and repeated. This is also similarly true for the skills which can eventually be trained by a computer to learn and repeat. &lt;/p&gt;

&lt;p&gt;On the contrary, the skills on the right rely more on problem solving, discretion, and ultimately the lower barrier to entry opens up new approaches to learning which we're seeing in many spaces like design, development, and marketing.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Beauty of Development
&lt;/h3&gt;

&lt;p&gt;As aforementioned, in order to participate in some industries, you need clear accreditation. This in itself has compounding effects on the difficulty for independent parties to contribute and advance the space. &lt;/p&gt;

&lt;p&gt;Perhaps that's something so beautiful and optimal about software development. Its lower barrier to entry is what enables so many people to contribute and perpetually keep the industry growing and thriving.  &lt;/p&gt;

&lt;p&gt;That's inherently why no other industry can keep up with the level of innovation that software allows, not just due to its function, but it's openness. When you have millions of people openly contributing to something, those contributions inevitably result in progress and with that constant evolution, there will always be something new to learn. This results in an infinite learning curve which I think is beautiful. &lt;/p&gt;

&lt;h3&gt;
  
  
  Keep Your Identity Small
&lt;/h3&gt;

&lt;p&gt;The concept of "becoming a developer" also had me thinking about identity. Paul Graham, well-known YC co-founder, has given the advice to "keep your identity small". Perhaps we can utilize that idea to further understand the implications of the original question. &lt;/p&gt;

&lt;p&gt;Starting with a definition taken directly from the WWW, a software developer is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A programmer, developer, dev, coder, or software engineer is a person who creates computer software.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Notice that the definition doesn't include any information about degrees or projects or status, but instead focuses on the act of creating. If software development doesn't require a formal degree and all it really means is to create software, why do so many people have trouble considering themselves one.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101506708973776901-519" src="https://platform.twitter.com/embed/Tweet.html?id=1101506708973776901"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101506708973776901-519');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101506708973776901&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1101519782959071232-553" src="https://platform.twitter.com/embed/Tweet.html?id=1101519782959071232"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101519782959071232-553');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101519782959071232&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Perhaps that's because more often than not, a different picture is painted. Instead, there's an image that to be a "developer" you need 10+ years of experience and can code with your eyes closed. I'm being facetious here, but you get the point. There's some degree of gatekeeping that exists, whether intentional or unintentional, and I believe that plays into our ability to see ourselves as developers, even as we are indeed developing.&lt;/p&gt;

&lt;p&gt;For example, someone on &lt;a href="https://qr.ae/TWTGne" rel="noopener noreferrer"&gt;Quora&lt;/a&gt; mentioned:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I had a professor who once said, "you can't really call yourself a programmer until you understand recursion."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While it's good to understand the fundamentals, these sentiments often prevent people from being able to identify with a subject and not everyone is able to effectively "keep their identity small".&lt;/p&gt;

&lt;p&gt;The act of gatekeeping or drilling home the fact that someone is not a developer until X step, results in people (like myself) feeling like imposters. And when someone feels like an imposter, they're unsurprisingly less likely to continue or even start in the first place. &lt;/p&gt;

&lt;h3&gt;
  
  
  Redefining a Developer
&lt;/h3&gt;

&lt;p&gt;Hopefully I've convinced you by this point that there is no specific instance when someone becomes a developer. More importantly, building these barriers can be potentially damaging for people as they're unable to view themselves in the lens of that identity.&lt;/p&gt;

&lt;p&gt;Two concepts emerged from this thought experiment that I like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A reflection on the beauty of development. The open source nature of both learning and creating is what I believe will continue to make the software industry thrive for many years to come, due to the systems in place which allow for open contribution.&lt;/li&gt;
&lt;li&gt;The concept that perhaps we should remove "titles" or base them on your level of contribution versus your level of prior knowledge. In other words, your affinity to learn, create, and build. Whether it's through open source projects, creating tools for the community, writing articles, or mentoring someone, I think that the act of engaging more accurately defines a developer.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1101516298629066753-197" src="https://platform.twitter.com/embed/Tweet.html?id=1101516298629066753"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1101516298629066753-197');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1101516298629066753&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;In short, it's now clear to me that especially in software development, titles do not matter. Instead of a one-time designation like a degree, being a "developer" should be measured by whether you're still adding value. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Perhaps that's why the word &lt;strong&gt;development&lt;/strong&gt; is so synonymous with &lt;strong&gt;evolution&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;PS: Come &lt;a href="https://twitter.com/stephsmithio/status/1115996061481492480" rel="noopener noreferrer"&gt;discuss on Twitter&lt;/a&gt; or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>culture</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>A Step by Step Guide to Installing a Ghost Blog and $5 Digital Ocean Droplet to Serve 100k+ Readers</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Sun, 31 Mar 2019 14:52:10 +0000</pubDate>
      <link>https://forem.com/stephsmithio/step-by-step-setting-up-ghost-with-a-digital-ocean-droplet-1nb8</link>
      <guid>https://forem.com/stephsmithio/step-by-step-setting-up-ghost-with-a-digital-ocean-droplet-1nb8</guid>
      <description>&lt;p&gt;This was originally published on &lt;a href="https://blog.stephsmith.io/setting-up-blog-with-ghost-and-digital-ocean-droplet/" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I often write about remote work, learning to code, and women in tech. I specifically decided to write this article after a few friends had asked what platform I was running my blog on, after finding out that it had endured 100k pageviews in its first 90 days.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Return of the Blog
&lt;/h2&gt;

&lt;p&gt;Earlier this year, I decided to launch a blog. Just like everyone else in the world, their mom, and &lt;a href="http://www.dougthepugtherapydog.com/" rel="noopener noreferrer"&gt;their dog&lt;/a&gt;, I wanted an outlet to share my thoughts. &lt;/p&gt;

&lt;p&gt;However, when it came to actually launching my blog, I didn't know where to start. With about  2847 platforms ready to power your blog, I was running into the paradox of choice. Should I choose Wordpress, a custom site, or just hand over my publishing to Medium?&lt;/p&gt;

&lt;p&gt;The only thing that I became quickly sure of was that I wanted to host the blog on my own domain. I started off by looking for headless CMS tools, but quickly came to the determination that it wasn't an optimal use of my time to design an entirely new front-end.&lt;/p&gt;

&lt;p&gt;I asked a few friends for suggestions and the name &lt;a href="https://ghost.org" rel="noopener noreferrer"&gt;Ghost&lt;/a&gt; kept coming up. Apparently, it was a well-optimized platform with a Medium-like UI that was made by an independent developer - all things that I loved hearing. So I decided to give it a try and upon doing some additional research, I settled on utilizing a $5 Digital Ocean droplet to serve it up.&lt;/p&gt;

&lt;p&gt;Fast forward to 3 months later and my blog has seen &lt;a href="https://twitter.com/stephsmithio/status/1110195057586589696" rel="noopener noreferrer"&gt;over 100k pageviews&lt;/a&gt; with the Ghost and Digital Ocean combination totally holding up. It's safe to say that I'm happy with my choice. &lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1110195057586589696-405" src="https://platform.twitter.com/embed/Tweet.html?id=1110195057586589696"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1110195057586589696-405');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1110195057586589696&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;More recently, a couple readers have reached out looking for help in setting up the same publishing duo. The process is relatively quick, but not necessarily intuitive, so I thought I would compile the instructions into one easy blog post!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PS: This blog post is &lt;strong&gt;not&lt;/strong&gt; sponsored by any third parties.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;PPS: If you would prefer to write your own front-end, I would suggest &lt;a href="https://buttercms.com" rel="noopener noreferrer"&gt;Butter&lt;/a&gt;, a tool that I stumbled upon during my research which allows you to easily integrate into any backend. I actually implemented Butter into my Node application in a matter of minutes since their documentation is pretty solid, but ultimately wanted the Ghost front-end.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ghost Premium?
&lt;/h2&gt;

&lt;p&gt;Ghost is a "full-stack" publishing platform that allows you to set-up the front-end and back-end of your blog. Ghost also provides server support should you choose, which you can easily opt into with Ghost Premium. It's simple and can be set up quickly, but &lt;a href="https://ghost.org/pricing/" rel="noopener noreferrer"&gt;costs $29/month&lt;/a&gt; for the most basic plan and as far as I know, most other features in Ghost Premium are available in the non-premium option, including integrations, code injection, and themes. The main differentiator is the lack of server set-up. &lt;/p&gt;

&lt;p&gt;So, this article assumes that you don't want to choose Premium and would prefer a cheaper server option like the $5 Digital Ocean Droplet One Click setup. Although not quite "one-click", the following steps should also enable your new blog to be up and running in a matter of minutes. Let's jump in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Ghost Setup with the Digital Ocean Droplet
&lt;/h2&gt;

&lt;p&gt;Please note that this section will go through a step-by-step process of setting up self-hosted Ghost for &lt;strong&gt;domains (ex: domain.xyz) or subdomains (ex: blog.domain.xyz)&lt;/strong&gt;, but &lt;strong&gt;not subdirectories (domain.xyz/blog)&lt;/strong&gt;. There are additional steps that will not be covered in this article related to subdirectories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up the Digital Ocean Droplet
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  The first step to setting up Ghost is hopping over to the &lt;a href="https://marketplace.digitalocean.com/" rel="noopener noreferrer"&gt;Digital Ocean Marketplace&lt;/a&gt;. Search for "Ghost" and navigate to the Ghost droplet page. If you're signed in, you can also find this in the platform by navigating to "Marketplace" in the left-hand navigation.&lt;/li&gt;
&lt;li&gt;  Click "Create Ghost Droplet". This is the "Digital Ocean One Click" setup that will build and launch a server just for you!&lt;/li&gt;
&lt;li&gt;  Prior to creation, Digital Ocean will bring you to a page where you need to choose your droplet size. I would recommend that you start at the lowest tier which is: &lt;strong&gt;Standard $5/month&lt;/strong&gt;. Note that this option doesn't show up immediately, so you'll need to navigate to the left to find it. Unless you already have a &lt;strong&gt;huge&lt;/strong&gt; blog, I would not be concerned about traffic or the server holding up. My $5/month droplet held up with an article trending across the top of Hacker News for over 24h with hundreds of active readers and absolutely no glitches.&lt;/li&gt;
&lt;li&gt;  As for the other setup conditions, you can enable these at your discretion and are mostly optional. You will need to choose your datacenter region, which should be closest to where you expect most of your users/readers are. I did not select any additional add-ons or SSH key, as it's not mandatory for set-up and my routing is done through Cloudflare which provides my security layer.&lt;/li&gt;
&lt;li&gt;  Once you've selected a name for your droplet (this can be anything), Digital Ocean will take a couple minutes to create the droplet. Once the droplet is created, you should see an IP address (for example: 134.209.253.151). &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FP4mKOqg6x9sjcDYGai5M2idfVm7Nsrlk7HiUYzxnhR-9SEtvjgqhucIKKq6o-UBczotPZugMNTbkUxGqSAoDonJlwRWfqbQjO2P68HMd2o_z-LWO7I3i5HHZo3ZHgwdGpZ2dNHQ_" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FP4mKOqg6x9sjcDYGai5M2idfVm7Nsrlk7HiUYzxnhR-9SEtvjgqhucIKKq6o-UBczotPZugMNTbkUxGqSAoDonJlwRWfqbQjO2P68HMd2o_z-LWO7I3i5HHZo3ZHgwdGpZ2dNHQ_" alt="Once the droplet is set up, you can access your individual IP."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If you navigate to that IP in your browser, you'll see the below view of the Ghost Installation page, which means the droplet is set up and hosted by Digital Ocean at that IP address. If you don't see this page, the droplet has not been set up properly. If you do see this page, you've set up your droplet and can now connect it to a domain!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fh6rzlKXHtC4owbnGwyVrEr1qNGJoYLzGtG8HZWXzSzKeOWoNJNVAOME5DZoOMMQbd5XuoqybTlKHP_yvj6MxVmkdGwkrEiE-u-MPscDESvjtV0zWXtUq2EvCTcBqQ8Ocuvu_Z_Ss" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fh6rzlKXHtC4owbnGwyVrEr1qNGJoYLzGtG8HZWXzSzKeOWoNJNVAOME5DZoOMMQbd5XuoqybTlKHP_yvj6MxVmkdGwkrEiE-u-MPscDESvjtV0zWXtUq2EvCTcBqQ8Ocuvu_Z_Ss" alt="If you see this page at your IP, this means that you've installed the droplet properly."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Connecting to Custom Domain
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  If you haven't already purchased a custom domain for your Ghost blog, you'll need to do that first. Remember, this process will work for either a completely new domain that you hope to use (ex: blog.xyz) or adding a subdomain to an existing domain hosted elsewhere (ex: blog.domain.xyz). &lt;/li&gt;
&lt;li&gt;  First, you'll need to add the domain to Digital Ocean and set up your Digital Ocean DNS records. To do so, click the right-hand toggle to "Add a domain".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F03%2Fimage-6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F03%2Fimage-6.png" alt="Add your domain in Digital Ocean."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Type your domain name in the input field and then click "Add Domain". You should see DNS records populate similar to the below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FzXFmtMHSpLwh4hbyKZNFfM4-s_MVz-LVYZLEK9SqfhKn7t9jJ2OYqviXKK86hCgKEBjjfbw4SJ4Pd2FeLIblbp2Zjq56CJ8EIMP9-OnRa-PaF-yY9ZD9Qf2bDymirziNAUVQ2u3Q" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FzXFmtMHSpLwh4hbyKZNFfM4-s_MVz-LVYZLEK9SqfhKn7t9jJ2OYqviXKK86hCgKEBjjfbw4SJ4Pd2FeLIblbp2Zjq56CJ8EIMP9-OnRa-PaF-yY9ZD9Qf2bDymirziNAUVQ2u3Q" alt="Once your domain is added in Digital Ocean, you should see the DNS records populate.&amp;lt;br&amp;gt;
"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Once you've set up your DNS records on the Digital Ocean side, you'll need to configure the A-record within your external domain settings. Depending on how you've set up your domain previously, but may be found within your domain registrar (ex: Namecheap, GoDaddy, etc.) or if you've already re-routed your DNS to a third party like Cloudflare, you would be updating the DNS records there. Within your non-Digital Ocean DNS records, you'll need to direct your A-record to the IP given to your droplet with the "name" being the domain or subdomain where you hope to host your blog home.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, if you wanted blog.domain.xyz to house the blog, you would set up the A-record for "blog" that to point towards the IP (ex: 134.209.253.151).&lt;/p&gt;

&lt;p&gt;Use the examples below as an example, but note that you should only set up **one **or the other.    &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FQdEU5pMk7MleDxbjYwHxSbzlcYpQjZLAcMiWlfIQZORYfrwThwI2i4dgY3MqgDpw5RDz9t1P0AaGjyihGXjkVUxfZuNKuphyMw05osgJlTO9WdB7D5vBLaNHNa3QKe1rw4f4A3YZ" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FQdEU5pMk7MleDxbjYwHxSbzlcYpQjZLAcMiWlfIQZORYfrwThwI2i4dgY3MqgDpw5RDz9t1P0AaGjyihGXjkVUxfZuNKuphyMw05osgJlTO9WdB7D5vBLaNHNa3QKe1rw4f4A3YZ" alt="An example of the DNS records in your third-party settings."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Once you've set up your DNS records on both ends, they may take some time to propagate. Some third parties indicate that it can take up to 48 hours, but normally this happens within minutes. &lt;/li&gt;
&lt;li&gt;  Once the DNS records have propagated, you should once again see the same Ghost installation page &lt;strong&gt;at the domain or subdomain&lt;/strong&gt; that you just configured. For example, this page would now show up not only at 134.209.253.15, but also makerstats.com. If you do not see this page, you may have to investigate whether the DNS settings have properly been set up and propagated.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fh6rzlKXHtC4owbnGwyVrEr1qNGJoYLzGtG8HZWXzSzKeOWoNJNVAOME5DZoOMMQbd5XuoqybTlKHP_yvj6MxVmkdGwkrEiE-u-MPscDESvjtV0zWXtUq2EvCTcBqQ8Ocuvu_Z_Ss" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fh6rzlKXHtC4owbnGwyVrEr1qNGJoYLzGtG8HZWXzSzKeOWoNJNVAOME5DZoOMMQbd5XuoqybTlKHP_yvj6MxVmkdGwkrEiE-u-MPscDESvjtV0zWXtUq2EvCTcBqQ8Ocuvu_Z_Ss" alt="You should see this page on your domain or subdomain if the DNS is set up and propagated."&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Installing Ghost
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  The final section of this 3-step installation process is to install the Ghost software. To do so, hop back into Digital Ocean and open the console over on the right-hand side. This should open the console in a new tab that is requesting a login.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2Fd_PTZ-EFCqk3PdbgkzGdPepgeiAh0L8XQDA7EReLdRJ9OjYaBGaWCqWc4LZ2Jqorm9_zQMlH9CrAj-_Sf4qK8yFlsfYFIXvi0XAN3XJpuLbovByA3_FuCkW0vPJZy855avqwGNn4" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2Fd_PTZ-EFCqk3PdbgkzGdPepgeiAh0L8XQDA7EReLdRJ9OjYaBGaWCqWc4LZ2Jqorm9_zQMlH9CrAj-_Sf4qK8yFlsfYFIXvi0XAN3XJpuLbovByA3_FuCkW0vPJZy855avqwGNn4" alt="Access the Digital Ocean Console."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Enter your username (always "root") and then the password sent to you by email from Digital Ocean, when you initiated the droplet. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FVDP-l_1P2JKQGLVSDubllNSCLKCzF1Ti2ONKVPefynN7DzFODmhar8xkGFN8T9FzwFTASOA-pBD8O58PUuxKJWF_2Hum2Wn1L-Ijg01kVJxITIUeenmZ2JNzpO2IDFVzeJAWVrQg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FVDP-l_1P2JKQGLVSDubllNSCLKCzF1Ti2ONKVPefynN7DzFODmhar8xkGFN8T9FzwFTASOA-pBD8O58PUuxKJWF_2Hum2Wn1L-Ijg01kVJxITIUeenmZ2JNzpO2IDFVzeJAWVrQg" alt="Enter your login details into the Digital Ocean console."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The terminal will then prompt you to update your password immediately. This is mandatory.  It'll first prompt you to enter your current UNIX password (same as password in your email) and then add a new password twice. If this is done correctly, you should see the installation initialize and after a few seconds, you should see the below screen. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2F3zM9ritj_7_vU2lYnnnb1iuC-jxmez_s6_IaiqW0gS_sLXO8uWdogbyP5EWHOMeZjNJLMmF_TSEm902cvOnzxQ3MDjxvIqpFTpvRVmUHxjExbu8B0HIdpX7-aKOFhwpRGhtT46RL" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2F3zM9ritj_7_vU2lYnnnb1iuC-jxmez_s6_IaiqW0gS_sLXO8uWdogbyP5EWHOMeZjNJLMmF_TSEm902cvOnzxQ3MDjxvIqpFTpvRVmUHxjExbu8B0HIdpX7-aKOFhwpRGhtT46RL" alt="The Ghost installation initializing."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Press enter to begin the installation to which you should see the program downloading.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F_Af5MB6xIKSrrc524Wbf7NV0mvSh13pRe3myaBYrDd6zmFBPoHvWBdDXzgumwo4arzuLsfwX7xElk0v6mL7TTstxgZhOCogsUsrSodX5uRTz3FTBf7A_FpKbkh2JKlpyYAs3kNci" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2F_Af5MB6xIKSrrc524Wbf7NV0mvSh13pRe3myaBYrDd6zmFBPoHvWBdDXzgumwo4arzuLsfwX7xElk0v6mL7TTstxgZhOCogsUsrSodX5uRTz3FTBf7A_FpKbkh2JKlpyYAs3kNci" alt="You should see the prompts indicating that Ghost is installing."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The program will prompt you to enter your domain (in this case - make sure it's your actual domain or subdomain and not the IP) and your email address. The email address can be any of your emails and is just used for the SSL process.&lt;/li&gt;
&lt;li&gt;  If everything is done correctly, this is what you will see!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FDnURN3yqibeTfcwqHeF8o5VXKzISJTBfNSPuJcMXusI2CEV3Gdwj_dOdGwFPB3GjNXXa4eOF8ILhGiMezCrN54N9T-phbh52GWxkPFK87vEcbljeczB8VJ14CAzFmmshh3YKeTWD" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FDnURN3yqibeTfcwqHeF8o5VXKzISJTBfNSPuJcMXusI2CEV3Gdwj_dOdGwFPB3GjNXXa4eOF8ILhGiMezCrN54N9T-phbh52GWxkPFK87vEcbljeczB8VJ14CAzFmmshh3YKeTWD" alt="Ghost has been installed!"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  To ensure that everything is set up properly, you can now go to your domain or subdomain and you should see a basic blog template from Ghost (example below). Note that if you're routing through Cloudflare and you're getting problems related to routing or too many redirects, you may be having problems related to your SSL. I was able to fix this in the Crypto tab, by setting SSL from Flexible to &lt;strong&gt;Full&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FRSu80GjOcz9UUmNwyedGRti2VXKfSZvuPj3Tp_ZYT4GTV8iAXHoW47V3c7Bj01x_iB2bMRySGaot7ec8gX8BHbJCrqOK3mvuTuQPFvMQRRSfzK3KU58XVfZ-s2tEoSSU6ECkMWSG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FRSu80GjOcz9UUmNwyedGRti2VXKfSZvuPj3Tp_ZYT4GTV8iAXHoW47V3c7Bj01x_iB2bMRySGaot7ec8gX8BHbJCrqOK3mvuTuQPFvMQRRSfzK3KU58XVfZ-s2tEoSSU6ECkMWSG" alt="Template blog that should be found at your domain or subdomain."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Now, if you navigate to yourdomain.xyz/ghost or the subdomain.domain.xyz/ghost, you should see the setup page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FCwomhZUa6BRyc4YxaWg3QVq3HQH0G7Dd3xItmtN86_kc_a6OJ30x_eQgSuM8F6h6axjGtrgcAn5X-G-9zDKJYHh6ZyUHOWQ1ie3jXXXQHRhJbOMlM6ffeF7dd_LgsjAJz__IY_S4" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FCwomhZUa6BRyc4YxaWg3QVq3HQH0G7Dd3xItmtN86_kc_a6OJ30x_eQgSuM8F6h6axjGtrgcAn5X-G-9zDKJYHh6ZyUHOWQ1ie3jXXXQHRhJbOMlM6ffeF7dd_LgsjAJz__IY_S4" alt="Ghost's sign-up page."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Once you go through the steps of the sign-up process, you should get to this page! This is your Ghost portal where you can customize, upload content, add integrations, and more. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fx7FQJkCzdGSM-TSPwcWKJtwLEBKOyMsjSrlLqecP0vvZbLT5GpaSJJGrljFUIxclkhqpN2Yu45ZZFeCL77vtVAo75gtV9viByNobpgS6A3MbssIcH1WsaoTjleCdigGUQOrdb94t" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2Fx7FQJkCzdGSM-TSPwcWKJtwLEBKOyMsjSrlLqecP0vvZbLT5GpaSJJGrljFUIxclkhqpN2Yu45ZZFeCL77vtVAo75gtV9viByNobpgS6A3MbssIcH1WsaoTjleCdigGUQOrdb94t" alt="The Ghost portal that can be found at anytime through your domain/ghost or subdomain/ghost."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congrats! You've successfully set up Ghost. You will be able to access your editing platform at anytime through your link yourdomain.xyz/ghost or subdomain.domain.xyz/ghost. It's time to get your blog up and running!&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting Started with Ghost: Customization
&lt;/h2&gt;

&lt;p&gt;In your portal, there are multiple tabs in the left-hand sidebar which allow you to further customize you blog. I'll be going through some tips across each one of these below. &lt;/p&gt;
&lt;h3&gt;
  
  
  General
&lt;/h3&gt;

&lt;p&gt;In this tab, you'll enter a pretty standard set of information including your publication name, cover, logo (favicon), timezone, and more. &lt;strong&gt;Don't forget to update your social accounts!&lt;/strong&gt; I forgot to do this at first and had the Ghost social accounts as my default for over a week. &lt;/p&gt;

&lt;p&gt;Another thing worth noting is that Ghost automatically adds a filter over cover images that are on the lighter end, in order for the text to show up clearly. You can edit this later in the code injection section. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FryOhpxUR21K-hzuCkICV6-FbWaMBJj0rLHOacwOhQAKlWEK7TxtC5UOnXAQHEoaKuxybqv3-frCzD0XG_0LBiOt2s5iEfEQRto_l0woje8SHKQ3a050-EofqG6DT_OyPvnX7Cm1H" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FryOhpxUR21K-hzuCkICV6-FbWaMBJj0rLHOacwOhQAKlWEK7TxtC5UOnXAQHEoaKuxybqv3-frCzD0XG_0LBiOt2s5iEfEQRto_l0woje8SHKQ3a050-EofqG6DT_OyPvnX7Cm1H" alt="General settings page."&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Design
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Navigation
&lt;/h4&gt;

&lt;p&gt;The navigation section is pretty straight-forward and allows you to set up your navigation bar, which is present on all pages of your blog. You're able to set up links to any pages, whether internal or external to your blog, but most people utilize this to navigate to tags/category pages. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FNhxlEB60f-agz3p6Qp6gwVqo4tgDxKBIgPvSWb3MTz704oYKjNxd1BW_UZiG2igyfv3dMjcpJvIT-oML3qk5nTFtHE4w1e3Mt2a4qjZtMHEty2G765hAXOoFscP2Ffy2hD2L7bkj" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FNhxlEB60f-agz3p6Qp6gwVqo4tgDxKBIgPvSWb3MTz704oYKjNxd1BW_UZiG2igyfv3dMjcpJvIT-oML3qk5nTFtHE4w1e3Mt2a4qjZtMHEty2G765hAXOoFscP2Ffy2hD2L7bkj" alt="Navigation bar."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FzyHdXMGY4z_M26iuhLyy323-sfLiwisuyCo1nXjIYJ8tQ9BikiPRpKpgn-L9exXa4emtalvoeB6uvAx5QrBafSC9JE_HPbTA-faHUKYyXqKdyeR7gzy2bsbY16YEb5MUX__o_ufs" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FzyHdXMGY4z_M26iuhLyy323-sfLiwisuyCo1nXjIYJ8tQ9BikiPRpKpgn-L9exXa4emtalvoeB6uvAx5QrBafSC9JE_HPbTA-faHUKYyXqKdyeR7gzy2bsbY16YEb5MUX__o_ufs" alt="Navigation settings."&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Ghost Themes
&lt;/h4&gt;

&lt;p&gt;I'd say the one minor pitfall of Ghost currently is that customization is limited from a design standpoint. You &lt;em&gt;can&lt;/em&gt; go and download the entire template, make changes, and then re-upload it. I decided to opt out of that approach and I have a feeling that many going through this tutorial will do the same. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2Fj5nYPkcJvPuc2DB8L_mgZCz2TSdbQDWhW-yYkl5huusDXgES5jOVLl57ZndtV3-LUm4BM2QcaMPlR-4VRk2CQAzzamzFAK088MwahkGwYjrfesfUvqTH74yce5p-U-fYJ5zrb6KL" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2Fj5nYPkcJvPuc2DB8L_mgZCz2TSdbQDWhW-yYkl5huusDXgES5jOVLl57ZndtV3-LUm4BM2QcaMPlR-4VRk2CQAzzamzFAK088MwahkGwYjrfesfUvqTH74yce5p-U-fYJ5zrb6KL" alt="Ghost themes available in the portal."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For those of you who also don't want to edit an entire template, you do have the option to explore the &lt;a href="https://marketplace.ghost.org/#" rel="noopener noreferrer"&gt;Ghost theme marketplace&lt;/a&gt;. There are a couple dozen paid Ghost themes ranging from $19-$59, in addition to six free themes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://demo.ghost.io/" rel="noopener noreferrer"&gt;Casper&lt;/a&gt; (this blog)&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://massively.ghost.io/" rel="noopener noreferrer"&gt;Massively&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://london.ghost.io/" rel="noopener noreferrer"&gt;London&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://editorial.ghost.io/" rel="noopener noreferrer"&gt;Editorial&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://zvikov.hauntedthemes.com/" rel="noopener noreferrer"&gt;Zvikov&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="http://v" rel="noopener noreferrer"&gt;Attila&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the grand scheme of things, the cost of the paid themes is affordable and comparable to paid themes across other sites like Wordpress, but are much easier to install with Ghost. &lt;/p&gt;
&lt;h3&gt;
  
  
  Tags
&lt;/h3&gt;

&lt;p&gt;You'll need to select tags for your articles. These will be the categories which:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Articles are grouped by&lt;/li&gt;
&lt;li&gt;Can be added to your navigation bar&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FJRyEOKypcVp1vNoCtVLZ7RD0XgTiH2aAIITfTUmvdkMUR-m4bxnQ95zuXpVzMrI_jpeZUaM0Br6c-5HlmGzFHQesADTbvP7rqoqL3RTohUGF0C_5e28sgwYoBWrdqObGAEqQyUH4" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FJRyEOKypcVp1vNoCtVLZ7RD0XgTiH2aAIITfTUmvdkMUR-m4bxnQ95zuXpVzMrI_jpeZUaM0Br6c-5HlmGzFHQesADTbvP7rqoqL3RTohUGF0C_5e28sgwYoBWrdqObGAEqQyUH4" alt="Setting up tags in the portal."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can add as many tags as you would like, along with a unique URL and description. For example, &lt;a href="https://blog.stephsmith.io/tag/remote-work/" rel="noopener noreferrer"&gt;here is the Remote Work category&lt;/a&gt; for my blog. You'll also be able to set up meta data, which is the information that will appear when the page is shared or shows up in search results.&lt;/p&gt;

&lt;p&gt;I personally chose to select the same background image for all of my category pages. Instead of uploading them individually, I decided to set the image globally using CSS in the code injection section of the platform.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.site-header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nl"&gt;background-image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;-webkit-image-set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sx"&gt;url(https://images.unsplash.com/photo-1501769214405-5e5ee5125a02?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=998&amp;amp;q=80)&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="sx"&gt;url(https://images.unsplash.com/photo-1501769214405-5e5ee5125a02?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=998&amp;amp;q=80)&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;
&lt;span class="p"&gt;)}&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Code Injection
&lt;/h3&gt;

&lt;p&gt;Speaking of code injection, there are a few other ways to customize your design without directly editing the theme, but styling or adding scripts in your header/footer. Here are some things that I've chosen to do with code injection. &lt;/p&gt;

&lt;h4&gt;
  
  
  Google Analytics
&lt;/h4&gt;

&lt;p&gt;Make sure that you add your Google Analytics tracking ID in your header. You can copy the script directly from Google Analytics.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;async&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://www.googletagmanager.com/gtag/js?id=UA-ID"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
      &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
      &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;&lt;span class="nx"&gt;dataLayer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;);}&lt;/span&gt;
      &lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
      &lt;span class="nf"&gt;gtag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;config&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;UA-ID&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Additional Scripts
&lt;/h4&gt;

&lt;p&gt;I also added a script to my Mailchimp modal and I'm sure that you can use your imagination for other scripts potentially worth adding. &lt;/p&gt;

&lt;h4&gt;
  
  
  Trust Bar
&lt;/h4&gt;

&lt;p&gt;I decided to add a Trust Bar of places I had been featured. In order to do this, I added a div that was at the bottom of the header (under the styling and script tags). Below is some basic HTML to get you started along with the styling which can be found underneath.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"trustbar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
As seen in:
&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://www.producthunt.com/@stephsmith"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://stephsmith.io/featured/producthunt.png"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"trust-img"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://news.ycombinator.com/item?id=19163316"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://stephsmith.io/featured/hackernews.png"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"trust-img"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://hackernoon.com/a-year-of-sponge-3b4f48d00042"&lt;/span&gt; &lt;span class="na"&gt;target=&lt;/span&gt;&lt;span class="s"&gt;"_blank"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://stephsmith.io/featured/hackernoon.png"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"trust-img"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Additional Styling
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;/* Styling the trust bar */&lt;/span&gt;
    &lt;span class="nc"&gt;.trust-img&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.trust-img&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;22px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;#trustbar&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;/* Editing styles for description and nav bar */&lt;/span&gt;
    &lt;span class="nc"&gt;.site-description&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;500&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;    
    &lt;span class="nc"&gt;.site-nav&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;800&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;text-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;    
&lt;span class="c"&gt;/* Editing colour of bottom footer */&lt;/span&gt;
   &lt;span class="nc"&gt;.site-footer&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;rgb&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;245&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;248&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;251&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nc"&gt;.site-footer-content&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;.site-footer-content&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;grey&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="err"&gt;}&lt;/span&gt;
&lt;span class="c"&gt;/* Editing filter over cover image */&lt;/span&gt;
    &lt;span class="nc"&gt;.site-header&lt;/span&gt;&lt;span class="nd"&gt;:before&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;122&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;237&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.23&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;style&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Footer
&lt;/h4&gt;

&lt;p&gt;The only thing that I've put in my Footer is the script to my Disqus comments. It'll look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- disqus --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class="c1"&gt;// Only inject comments if you're on a post page.&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;article&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.post-template main article&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;disqusSite&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_ACCOUNT&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;article&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;after&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;div id="disqus_thread"&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="c1"&gt;// this is the code you get from disqus&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;script&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;//&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;disqusSite&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.disqus.com/embed.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-timestamp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
            &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;})();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Integrations
&lt;/h3&gt;

&lt;p&gt;Ghost is known for being developer friendly and that includes easy access to integrations. In the Integrations tab, you can find a suite of Integrations. Feel free to explore them yourself, but I would specifically encourage you to set up the Integration with Zapier, which helps you "zap" any new subscribers from Ghost straight to your third-party list (ex: MailChimp). Simply click to configure the Zap and you will be brought straight to Zapier to set this up. Once set up, your set of steps should look something like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F03%2Fimage-3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F03%2Fimage-3.png" alt="Ghost and Mailchimp integration utilizing Zapier."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;And that's it! Hopefully, if you went through each step of this process, you'll have a fully set up Ghost blog app running on a kickass $5 Digital Ocean droplet. From here, it's up to you to populate your beautiful new blog with some material. If any of the steps were unclear or did not work, feel free to send me a message - I'd love to help!&lt;/p&gt;

&lt;p&gt;Happy writing!&lt;/p&gt;

&lt;p&gt;PS: If you enjoyed this post, come say hello on &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; or consider subscribing to my &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;weekly blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>tips</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Managing Remote Teams: A Psychological Perspective</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Wed, 13 Mar 2019 16:07:15 +0000</pubDate>
      <link>https://forem.com/stephsmithio/managing-remote-teams-a-psychological-perspective-36if</link>
      <guid>https://forem.com/stephsmithio/managing-remote-teams-a-psychological-perspective-36if</guid>
      <description>&lt;p&gt;This was originally published on &lt;a href="https://blog.stephsmith.io/best-practices-managing-remote-teams" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;, where I often write about remote work, learning to code, and women in tech.&lt;/p&gt;




&lt;p&gt;It's 2019 and it's clear that remote work is here to stay. Each year,&lt;a href="https://remote.co/10-stats-about-remote-work/" rel="noopener noreferrer"&gt; more individuals are opting to work remotely&lt;/a&gt; and more organizations are opening their minds to this trend. Countless remote trends and indicators are demonstrating that this is in fact not a fad, but instead the &lt;em&gt;future of work&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;As more of the population engages in this shift, we should consider that remote work often is not just a way of work, but a way of life.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Remote work isn't just a different way to work – it's a different way to live... we need to acknowledge that isolation, anxiety, and depression are significant problems when working remotely, and we must figure out ways and systems to resolve these complex issues." - Amir Salihefendic is CEO of Doist, &lt;a href="https://buffer.com/state-of-remote-work-2019" rel="noopener noreferrer"&gt;State of Remote Work 2019&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What comes with this new lifestyle are commonly-cited positive impacts, ranging from higher productivity to greater employee happiness, along with individual challenges of remote work as cited above by Salihefendic. Moving beyond the individual, we should also consider how remote work may more deeply influence the dynamics of our workplaces: more discretely, our teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote People
&lt;/h2&gt;

&lt;p&gt;At the heart of any organization, distributed or otherwise, is its people. So naturally as remote organizations grow in number, I ponder the following questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;em&gt;How does remote work influence how people interact with others?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;em&gt;How does it impact the social fabric and culture of a company that decides to embark on a remote workforce?&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;em&gt;Perhaps most importantly, how do these considerations impact how leaders should operate at these organizations?&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article, I'll attempt to answer some of these questions. The purpose here is not to ascertain whether remote work is a net positive or negative, nor predict how ubiquitous it will be in coming years. What it is aiming to achieve is a new set of considerations or best practices for those managing remote teams. Moreover, it's a thought piece that isolates dynamics which may be subtle, but can greatly influence the culture of any distributed company. Over the next few sections, I'll touch on concepts like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;em&gt;How remote work may influence giving and taking behaviour&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;em&gt;How we can design systems to incentivize people to act in their best interest&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;em&gt;How we can try to make remote work sustainable&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;em&gt;The archetype of a remote worker&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I attempt to address some of these through the lens of three of my favourite books and their frameworks: &lt;a href="https://www.amazon.com/Give-Take-Helping-Others-Success-ebook/dp/B00AFPTSI0/ref=tmm_kin_swatch_0?_encoding=UTF8&amp;amp;qid=&amp;amp;sr=" rel="noopener noreferrer"&gt;Give and Take&lt;/a&gt;, &lt;a href="https://www.amazon.com/Algorithms-Live-Computer-Science-Decisions-dp-B01D24NAL6/dp/B01D24NAL6/ref=mt_audio_download?_encoding=UTF8&amp;amp;me=&amp;amp;qid=" rel="noopener noreferrer"&gt;Algorithms to Live By&lt;/a&gt;, and &lt;a href="https://www.amazon.com/Four-Tendencies-Indispensable-Personality-Profiles/dp/B071L426J6/ref=sr_1_1?ie=UTF8&amp;amp;qid=1541756506&amp;amp;sr=1-1&amp;amp;keywords=the+four+tendencies+gretchen+rubin" rel="noopener noreferrer"&gt;the Four Tendencies&lt;/a&gt;. This article is also an extension of my&lt;a href="https://blog.stephsmith.io/the-guide-to-remote-work/" rel="noopener noreferrer"&gt; original guide to remote work&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3 Years Without a Desk
&lt;/h2&gt;

&lt;p&gt;Before jumping in, I wanted to address why I chose to write this piece. Through 3+ years of working remotely across multiple organizations, teams, and positions, I've observed a variety of dynamics. More specifically, I've seen how some parties completely thrive, while others have collapsed under the challenges that can come with a distributed team.&lt;/p&gt;

&lt;p&gt;Of course, we can place blame on the individual or company when these things happen, but I'd like to imagine a better option; one where our systems progress alongside the workforce. In order to achieve this, we need a deeper understanding of the fundamentals of remote work and how we can better adjust to changing conditions.&lt;/p&gt;

&lt;p&gt;When I search for terms like "remote teams best practices", "tips for managing virtual teams", or "flexible workforce tips", I get articles back that tell me to "hire well", "engage often", and "trust my team". While these points are valid, they're incredibly unclear and indistinct. They leave me feeling just as lost as before my query.&lt;/p&gt;

&lt;p&gt;So, instead I wanted to exercise some deeper thinking about the dynamics that are impacting our new world of work and present a new set of considerations﹣call them best practices if you will, for the leaders of this revolution to consider. I'm hoping that this piece gives thought to and provides actionable steps for us to enable a more intentional, healthier, and happier future of work.&lt;/p&gt;

&lt;p&gt;I should clarify that these views are my own and don't necessarily represent the views of &lt;a href="https://www.toptal.com/#pick-accomplished-software-freelancers-today" rel="noopener noreferrer"&gt;Toptal&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Emerging Values
&lt;/h2&gt;

&lt;p&gt;Let's first cover values. Remote work is founded on specific core principles that govern this distinct way of operating which tend to be organization agnostic. They are the underlying foundation which enables us to believe that this approach is indeed better, more optimal, and thus the way we should live:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Output/Impact &amp;gt; Input&lt;/li&gt;
&lt;li&gt;Autonomy &amp;gt; Administration&lt;/li&gt;
&lt;li&gt;Flexibility &amp;gt; Rigidity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These values do not just govern individuals, but also the way that companies operate and how processes are formed. And like almost anything in life, although they sound resoundingly positive, they have potential pitfalls if not administered with care.&lt;/p&gt;

&lt;p&gt;Let's jump into some examples using three well-known frameworks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give and Take: Who Are Your Team Players?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Givers, Takers, and Matchers
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Givers succeed in a way that creates a ripple effect, enhancing the success of people around them. You'll see that the difference lies in how giver success creates value, instead of just claiming it." – Give and Take, Adam Grant&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com/Give-Take-Helping-Others-Success/dp/0143124986" rel="noopener noreferrer"&gt;Give and Take&lt;/a&gt; is an excellent book by Adam Grant which outlines 3 types of individuals defined by their reciprocity style: givers, matchers, and takers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;As their names indicate, &lt;strong&gt;takers&lt;/strong&gt; visualize life as a zero-sum game and prioritize getting more value out of exchanges, compared to what they invest. Their ability to interact and work with others is hindered by this approach to life.&lt;/li&gt;
&lt;li&gt;On the other spectrum, &lt;strong&gt;givers&lt;/strong&gt; see the world differently and believe in mutually beneficial situations. They are happy to give without the intention of receiving something back.&lt;/li&gt;
&lt;li&gt;Finally, &lt;strong&gt;matchers&lt;/strong&gt; fall somewhere in between, with the key differentiator being that they expect reciprocity and operate in a domain of "fairness".&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In life, there will always be a distribution of givers, matchers, and takers, but it may surprise some to find that the &lt;a href="https://www.inc.com/leigh-buchanan/adam-grant-leadership-give-and-take.html" rel="noopener noreferrer"&gt;most successful leaders are givers&lt;/a&gt;. Giving doesn't just benefit the individual, but also companies that embrace givers, as they model their behaviours and create mutually beneficial situations across the organization.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FTGjzHYG4Oz4sGAYVyy0-myhkxJ9EcqrVess0vmtYu5ZxtNvrX0nM8-fP5fdjI6CNh2mvn4OfNfhcHcBacRz_C9915-qQvpYIx77_-GrXUXrQs32zegyBBoLMGOi2QQOGGSZxDDN5" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FTGjzHYG4Oz4sGAYVyy0-myhkxJ9EcqrVess0vmtYu5ZxtNvrX0nM8-fP5fdjI6CNh2mvn4OfNfhcHcBacRz_C9915-qQvpYIx77_-GrXUXrQs32zegyBBoLMGOi2QQOGGSZxDDN5" alt="The success distribution of givers, takers, and matchers according to Grant's Give and Take"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Under this premise, I've considered how the giver | matcher | taker framework may translate into distributed or virtual teams. Is there the same proportion of each persona and does the act of working remotely sway people toward any particular behavior style?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While I don't have data supporting this yet, I believe that there &lt;em&gt;may&lt;/em&gt; be a sway in the taking direction while working remotely. This is not just in the case of freelancers, but across core teammates as well. Let me explain why I think this is:&lt;/p&gt;

&lt;p&gt;Say that you work in an office. If we return to the unspoken values of said office, impact isn't always king. There's other factors at play, like facetime. Any office manager would like to say that impact prevails, but we all know from experience that you don't want to be the first one out of the office. This in itself, supports the initial claim.&lt;/p&gt;

&lt;p&gt;While everyone in an office has their own KPIs, they are similarly judged by the hours they clock in and their interaction within the community workplace. As most are, this community is somewhat self-regulating. For example, if someone chooses to spend some of their face time staying late and helping a coworker out with their problem, that's "+5 bonus points".&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Everyone knows who the team players are in an office.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With no "face time", remote companies naturally rely solely on "impact" and clear KPIs to judge their employees. This makes sense. But how does that impact someone's natural inclination to support others, both within their function and across the company?&lt;/p&gt;

&lt;p&gt;I believe the remote equivalent of "staying late", perhaps helping someone complete a project or doing work that doesn't directly impact your KPIs, is diluted and less likely for two key reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;With no set hours, "staying on for longer" is difficult to quantify. More importantly, any help that you do provide outside of your core responsibilities is represented only through personal [Slack] messages. Of course, people shouldn't help others only to be "seen" as givers, but it's only natural that as givers are not recognized for their giving behavior, they may inch toward something that Grant defines as "giver burnout". I've seen this happen throughout my years working remotely and not necessarily to anyone's &lt;em&gt;fault&lt;/em&gt;, but perhaps the lack of systems in place to recognize and champion these hidden givers in distributed organizations.&lt;/li&gt;
&lt;li&gt;Moreover, since individuals in remote organizations are more likely to have individual KPIs to meet, they must balance their ambition to help others with their performance. Working towards a quarterly raise versus helping another person who will be the sole witness for your actions isn't an easy ongoing decision, even for the most giving individual.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In other words, regardless of your intentions, values, or morals, when you have the unconscious choice between your KPIs and helping another who will likely be the only one aware of your actions, I think less giving is naturally going to happen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Give and Take: Best Practices
&lt;/h3&gt;

&lt;p&gt;Since we can all testify that giving is not inexistent across remote teams, what am I really trying to say here?&lt;/p&gt;

&lt;p&gt;I'm saying that remote workforces and particularly remote team leads should be hyper aware of this lack of "water cooler", not just for community building, but for ensuring healthy collaboration dynamics.&lt;/p&gt;

&lt;p&gt;Although I don't have a comprehensive solution, here are a few starting points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Ask your team who helped them that particular week or month.&lt;/li&gt;
&lt;li&gt;  Intentionally build KPIs that encourage teamwork or potentially can only be achieved through teamwork.&lt;/li&gt;
&lt;li&gt;  Start a Slack #shoutouts channel to acknowledge the hidden givers at the organization  while also openly celebrating and therefore encouraging this behaviour&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm sure there are numerous other methods (please let me know if you have them!), but I think the key here is that companies operating remotely need to intentionally design systems to acknowledge these hidden givers before they lose them.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We need to expose giving behaviour, since it doesn't come automatically and it needs to be discrete; it needs to be tangible.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I would also encourage leaders and hiring managers to consider this framework during the recruiting process and actively seek givers. Grant has already identified which interview question that you need to add to your roster, in order to easily determine if someone is a giver:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Can you give me the names of four people whose careers you have fundamentally improved?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can &lt;a href="https://www.inc.com/betsy-mikel/1-interview-question-that-cuts-through-the-bs-to-reveal-someones-true-character.html" rel="noopener noreferrer"&gt;learn more here&lt;/a&gt; about why this question provides insight into a person's giving tendency. Regardless, the core takeaway is to actively solicit more of givers into your organization as they will impact the social fabric of how others operate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remote Work Best Practice&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;em&gt;Take steps to intentionally discover, hire, promote, and acknowledge givers in remote environments.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Algorithms to Live By - Where are the Boundaries?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tragedy of the Commons
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The equilibrium for a set of players all acting rationally in their own interest may not be the outcome that is actually best for those players" - Algorithms to Live By, Brian Christian and Tom Griffiths&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com/Algorithms-Live-Computer-Science-Decisions/dp/1627790365" rel="noopener noreferrer"&gt;Algorithms to Live By&lt;/a&gt; has quickly become one of my favorite books. Gifted to me by a [remote] teammate, this book identifies various ways that we can learn and take insight from computer science in order to better our lives.&lt;/p&gt;

&lt;p&gt;Among topics like caching theory, how to make unsolvable (intractable) problems solvable (tractable), or effectively utilizing the concept of annealing – this book closes out with some thoughts on game theory and its ramifications on life.&lt;/p&gt;

&lt;p&gt;One particular example covered in this context is the concept of the "unlimited vacation policy". While this "perk" is becoming more prominent across distributed companies, the authors point out that despite altruistic intentions, the policy ultimately fails to reach the intended goal of achieving additional employee satisfaction.&lt;/p&gt;

&lt;p&gt;Why? There is a concept in game theory and economics called the Nash equilibrium. It is "a stable state of a system involving the interaction of different participants, in which no participant can gain by a unilateral change of strategy if the strategies of the others remain unchanged". In simpler terms, it is the optimal outcome of a game when there is no incentive to deviate.&lt;/p&gt;

&lt;p&gt;Perhaps surprising to some, the Nash equilibrium of an unlimited vacation policy is zero. Why? The natural tendency for employees is to want to take as much vacation as possible, while simultaneously taking slightly less than their peers in order to seem more dedicated.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"To be perceived as more loyal, more committed, and more dedicated, hence more promotion worthy", as Christian and Griffiths put it, "They look to others for a baseline and take just slightly less than that."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can see this play out clearly in data, gathered by &lt;a href="https://buffer.com/state-of-remote-work-2019" rel="noopener noreferrer"&gt;Buffer's State of Remote Report&lt;/a&gt;, which quantified the difference between how much vacation was offered by remote organizations versus how much was taken. Despite 32% of companies offering "unlimited vacation", you can see that most of the individuals with this option opted to take two weeks or less.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FBofKlT05oK5vbXioA_Xl9KOg6rkTvmXm6Ws7_2d8oTSLE9uOeoHBFhf-CpoCvlndrAJANzjspBa_FQdsuP-l2nEHkX8y12wZYLB1XdLet_fiFFArGT7mwT0BMmi-vEyBAn4G5a3F" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FBofKlT05oK5vbXioA_Xl9KOg6rkTvmXm6Ws7_2d8oTSLE9uOeoHBFhf-CpoCvlndrAJANzjspBa_FQdsuP-l2nEHkX8y12wZYLB1XdLet_fiFFArGT7mwT0BMmi-vEyBAn4G5a3F" alt="The difference between how much remote work is offered versus how much is taken."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same concept is similarly true for office hours. Employees truly want to leave at a reasonable hour, but certainly do not want to be the first to depart. So naturally, this psychology converges at some number (the Nash equilibrium) that each office thinks is acceptable, but often past what employees truly want.&lt;/p&gt;

&lt;p&gt;Game theory teaches us that when all players act independently on their best course of action, this does not always result in the best course of action for the group: commonly known as the tragedy of the commons.&lt;/p&gt;

&lt;p&gt;As "players" of the game, we can't always do much to change the way the system operates, as you only have control over a single "player". Instead, we must look to those defining the game to change it, through mechanism design. While game theory focuses on asking which behaviours emerge from a given set of rules, mechanism design does the opposite. It seeks to understand the rules that need to be developed to generate the behaviour that is being sought out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Algorithms to Live By: Best Practices
&lt;/h3&gt;

&lt;p&gt;The above information begs the question once more regarding how remote leaders should consider setting their KPIs or policies. We cannot simply copy and paste the set of rules from a typical workplace and just assume they'll produce the results we're looking for, especially since remote work can be integrally more vague.&lt;/p&gt;

&lt;p&gt;For example, the same Buffer study indicated that the #1 difficulty for remote workers is not being able to unplug, topping things like loneliness, motivation, and even the lack of vacation time which we discussed above.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FgUS6Rnro_5tY5e0JD9bFr5WEk7qvh0U_xAncWkiYThA0bY9ulAsESGnDXVXUVhN-HiUTcEYr8fhH2e_5vVdHwVM5DU5EoOKhliOLX81qDVRfx3svSk89g5D30DbdmyqlVrbeU5Sj" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FgUS6Rnro_5tY5e0JD9bFr5WEk7qvh0U_xAncWkiYThA0bY9ulAsESGnDXVXUVhN-HiUTcEYr8fhH2e_5vVdHwVM5DU5EoOKhliOLX81qDVRfx3svSk89g5D30DbdmyqlVrbeU5Sj" alt="The number one difficulty for remote workers is being unable to unplug"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember, if we don't intentionally design, we start to see the Nash equilibrium of virtual work hours become abnormally high, where remote workers essentially don't know how or when to switch off. Currently, individuals are left to define these limits for themselves. So, I would opt toward mechanism design and ask those leading remote teams this question:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you actively designing KPIs or rules to encourage a life-work balance outside of the "freedom" given to define your own?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of looking for the best ways to "manage" distributed teams, perhaps we should think about the ways that we design beneficial outcomes instead. Leaders should think backwards and intentionally design rules that not just encourage, but &lt;strong&gt;cause&lt;/strong&gt; those actions. In this case, intentionally setting up structures that cause an individual to act in ways that are beneficial to both themselves and the commons.&lt;/p&gt;

&lt;p&gt;This is where, contrary to the autonomy which is so welcomed in the remote world, it may be beneficial to consider adding back some more administration. Positive administration of course, to ensure that you're truly designing the remote workplace to foster positive outcomes.&lt;/p&gt;

&lt;p&gt;For example, implementing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A "minimum vacation policy"&lt;/li&gt;
&lt;li&gt;  A mandatory set of holidays to take off&lt;/li&gt;
&lt;li&gt;  A system that allows employees to "take back their calendars" and avoid &lt;a href="https://m.signalvnoise.com/what-my-calendar-looks-like/" rel="noopener noreferrer"&gt;calendar tetris&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  Facilitating open discussions about how to work remotely effectively and successfully&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I recently saw one &lt;a href="https://twitter.com/remotiveio/status/1104646033336877056?s=21" rel="noopener noreferrer"&gt;great example&lt;/a&gt; of this, where a leader made it mandatory for his team to take off a particular Friday and rewarded them with $50 to go to their favourite restaurant.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FTqXFe16QXLed6Usegtau48GmoBdjaAIQhSad0wqJ6yzEeN_ZbgSZER-H5suH8tHAmx1Jj22ZCCQ7ut5bgKJ8AE7-ksTwaiFxnGpI3phwUE4y6bnbJ-zj2_nm2Al5MmG0xULz_OUR" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh6.googleusercontent.com%2FTqXFe16QXLed6Usegtau48GmoBdjaAIQhSad0wqJ6yzEeN_ZbgSZER-H5suH8tHAmx1Jj22ZCCQ7ut5bgKJ8AE7-ksTwaiFxnGpI3phwUE4y6bnbJ-zj2_nm2Al5MmG0xULz_OUR" alt="A manager who enforced that his team take Friday off."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The point here is that things cannot always be enforced through carrots and as our workforce becomes less binary, intentional "mechanism design" becomes more important. Consider that even Wall Street, of the most capitalist hubs, has mandatory "off hours" so that brokers don't push towards the infinite, sleepless Nash equilibrium.&lt;/p&gt;

&lt;p&gt;With few restrictions, remote work has the potential to be productive, healthy, and optimal, if the right game is designed. So let's actively design it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remote Work Best Practice&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Design systems which enable people to easily act in beneficial ways. This may mean some degree of positive administration which did not exist before.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Four Tendencies: Do You Know Your Team?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A Hypothesis
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The happiest, healthiest, most productive people aren't those from a particular Tendency, but rather they're the people who have figured out how to harness the strengths of their Tendency, counteract the weaknesses, and build the lives that work for them."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Gretchen Rubin has developed an insightful framework called&lt;a href="https://quiz.gretchenrubin.com/" rel="noopener noreferrer"&gt; The Four Tendencies&lt;/a&gt;, which effectively captures how people respond to expectations. Ultimately, these tendencies have a close relationship with how we make decisions.&lt;/p&gt;

&lt;p&gt;The framework's tendencies include the Upholder, Questioner, Rebel and Obliger, with overlap between adjacent tendencies. The allocation of a particular tendency is represented by one's response to inner and outer expectations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FL2g_2rQfvbz7amYL8iE7LoVOh5SggbCp4cyVQl6CBqqSEPTjCvoVv-5_2dW4Ykws--SMwERqRSSF2USPdgOhmpwng7jxlfrpAMoVmX6E82pYWBqVo2v1PzrVaYFTkit6v7Lan3ju" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh3.googleusercontent.com%2FL2g_2rQfvbz7amYL8iE7LoVOh5SggbCp4cyVQl6CBqqSEPTjCvoVv-5_2dW4Ykws--SMwERqRSSF2USPdgOhmpwng7jxlfrpAMoVmX6E82pYWBqVo2v1PzrVaYFTkit6v7Lan3ju" alt="The Four Tendencies: Upholder, Questioner, Rebel and Obliger"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although the Four Tendencies framework itself is certainly not scientific or even quantifiable, I do believe there are some takeaways that permeate into remote environments. As a questioner, I've found great value in understanding that I'm motivated by internal expectations, while struggling to meet external expectations.&lt;/p&gt;

&lt;p&gt;Naturally, I &lt;strong&gt;questioned&lt;/strong&gt; whether there was a trend across remote workers, based upon self-selection. Since there is rarely someone pushing you to work remotely, I suspected that those who are less externally accountable and more internally accountable may more often work remotely.&lt;/p&gt;

&lt;h3&gt;
  
  
  Questioners and Rebels
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.forbes.com/sites/danschawbel/2017/09/12/gretchen-rubin-how-to-use-the-four-tendencies-to-improve-our-lives/#7207d2956d2b" rel="noopener noreferrer"&gt;According to Rubin&lt;/a&gt;, the two most common tendencies across the wider population are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Questioners&lt;/li&gt;
&lt;li&gt;Obligers&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Of the Four Tendencies, my research shows that most people are either Questioners or Obligers — and Obliger is the largest Tendency of all (for both men and women). Of the Four Tendencies, Rebel is the smallest category, and Upholder is also a small category. Not many people are Rebels or Upholders."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I decided to conduct this research myself, through a &lt;a href="https://twitter.com/stephsmithio/status/1093132192522354688" rel="noopener noreferrer"&gt;Twitter poll of over 400 remote workers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1093132192522354688-678" src="https://platform.twitter.com/embed/Tweet.html?id=1093132192522354688"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1093132192522354688-678');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1093132192522354688&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;The results?&lt;/p&gt;

&lt;p&gt;By far, the two most prominent tendencies were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rebels (40%)&lt;/li&gt;
&lt;li&gt;Questioners (37%)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What went from the least common tendency skyrocketed to the most common across remote workers. And perhaps more interestingly, over ¾ of respondents fit into the two categories with a common thread: resisting outer expectations. &lt;em&gt;If&lt;/em&gt; we take this data at face value, that means that there are more than 3x as many rebels and questioners as compared to upholders and obligers in the remote workforce.&lt;/p&gt;

&lt;p&gt;To me, this wasn't surprising at all. Those who actively self-select, identify that "there is a better way", and then proceed forward to go and redesign their way of living. I hypothesize that they choose this out of:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A misalignment with the outer expectations of society at least in terms of work norms&lt;/li&gt;
&lt;li&gt;An internal vision and motivation do find something better&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For these reasons, while there is no doubt that all four tendencies are represented in distributed teams, this disproportion seems to "add up".&lt;/p&gt;

&lt;h3&gt;
  
  
  The Four Tendencies: Best Practices
&lt;/h3&gt;

&lt;p&gt;I recently published&lt;a href="https://blog.stephsmith.io/the-guide-to-remote-work/" rel="noopener noreferrer"&gt; an article&lt;/a&gt; which touched on this analysis lightly and got some backlash from Upholders and Obligers who were successful remote workers. To be clear, just like any type of job, I think that all four tendencies &lt;em&gt;can&lt;/em&gt; be successful in nearly any work environment. I simply think there is a greater distribution of questioners and rebels as they actively seek this environment out. In other words, I don't think upholders and obligers feel the same "pull" into remote work as they can satisfy external expectations in more typical work environments.&lt;/p&gt;

&lt;p&gt;So what are the core takeaways here? Remote employees seem to fall within certain tendencies more frequently. With that knowledge, leaders should be able to tailor their leadership styles to understand and motivate their employees more effectively. For example, instead of instilling outer accountability through deadlines or repercussions, emphasize why a task is important to a questioner.&lt;/p&gt;

&lt;p&gt;On a wider scale, if companies want the "best talent", they should embrace that significant chunks of the workforce operate better when they can design their own lives. In many ways I feel as though this data validates that working remotely is not about relaxing, but questioning or rebelling from societal structure and then looking to redefine/optimize.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remote Work Best Practice&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Learn about the motivation styles of your team members and tailor your leadership to be most effective for them&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Onward and upward&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With the workforce evolving quickly, it's not enough to just remove the office and CTRL+C, CTRL+V the existing approach. While embracing remote work with open arms, we should also have a critical eye for enduring that we truly create the best possible outcomes for both individuals and companies. Perhaps if we were more open to address some of these problems at the root instead of putting perk bandaids on top, we'd have to worry less about how to motivate, keep, or engage remote employees.&lt;/p&gt;

&lt;p&gt;To summarize, if you're building a remote team or company, consider how you can introduce more givers or encourage giving behavior. Consider how you can design flexible working practices or rather, restructure the "game" so that its oriented to achieve the best outcomes that are best for all (ie: find the right Nash equilibrium). Finally, consider that everyone is unique, but your remote team or company may over-index in certain tendencies. Acknowledge this and enable your team to thrive by supporting their affinity to specific expectations or assisting them to harness their unique strengths.&lt;/p&gt;

&lt;p&gt;The values of remote work: output, autonomy, and flexibility are powerful. Let's make sure to embrace them with care and build stronger, yet more self-aware organizations.&lt;/p&gt;

&lt;p&gt;You can find me on &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, read more &lt;a href="https://blog.stephsmith.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;, or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>remote</category>
      <category>career</category>
      <category>productivity</category>
      <category>culture</category>
    </item>
    <item>
      <title>Understanding Inclusion in Making</title>
      <dc:creator>Steph Smith</dc:creator>
      <pubDate>Fri, 08 Mar 2019 09:14:11 +0000</pubDate>
      <link>https://forem.com/stephsmithio/understanding-inclusion-in-making-109m</link>
      <guid>https://forem.com/stephsmithio/understanding-inclusion-in-making-109m</guid>
      <description>&lt;p&gt;&lt;em&gt;You can read this article, along with my other posts &lt;a href="https://blog.stephsmith.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I decided to revive this article for International Women's Day, to shine a light on the status of women in technology and some of my thoughts on where we have to go. It uses data from a project that I created last year, &lt;a href="http://femake.tech" rel="noopener noreferrer"&gt;FeMake&lt;/a&gt;, which touches close to home as it represents my personal experience as a maker and as a woman in tech. More importantly, it draws focus toward gender inclusivity that I believe can only gain significance as we design the upcoming digital age.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F03%2FScreen-Shot-2019-03-08-at-5.16.47-PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fblog.stephsmith.io%2Fcontent%2Fimages%2F2019%2F03%2FScreen-Shot-2019-03-08-at-5.16.47-PM.png" alt="Female representation across industries."&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Why Behind FeMake&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As a relatively new addition to the maker community (my &lt;a href="https://www.producthunt.com/posts/nomad-hubb" rel="noopener noreferrer"&gt;first product&lt;/a&gt; was launched a few months ago), I wanted to know how many people there were &lt;em&gt;like me&lt;/em&gt;. More specifically, I wanted to know how present women were in this community.&lt;/p&gt;

&lt;p&gt;Having worked in tech for a few years now and as an executive at a tech company for most of this year, I've personally experienced my fair share of bias, ranging from subtle to shocking. Since my recent entry into the maker community however, things felt different. Although not perfect, I felt supported by my male counterparts and was introduced almost immediately to &lt;a href="https://womenmake.com/" rel="noopener noreferrer"&gt;Women Make&lt;/a&gt;, one of the most supportive communities I've been lucky enough to be a part of.&lt;/p&gt;

&lt;p&gt;With all that said, the gender ratio seemed unsurprisingly familiar to my day job, and I wanted to know — where did the maker community really stand in terms of inclusion, and more importantly, why might that be?&lt;/p&gt;

&lt;p&gt;I started by tweeting this out, inspired by a recent read of Brotopia and the news that &lt;a href="https://twitter.com/stephsmithio/status/1059914722894524416" rel="noopener noreferrer"&gt;ProductHunt had never analyzed this data&lt;/a&gt; themselves:&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1060091638511353861-915" src="https://platform.twitter.com/embed/Tweet.html?id=1060091638511353861"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1060091638511353861-915');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1060091638511353861&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Almost immediately, it was clear that I wasn’t the only one who wanted to see this data:&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1060187007169765376-803" src="https://platform.twitter.com/embed/Tweet.html?id=1060187007169765376"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1060187007169765376-803');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1060187007169765376&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1060178376307073030-373" src="https://platform.twitter.com/embed/Tweet.html?id=1060178376307073030"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1060178376307073030-373');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1060178376307073030&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1060391153944547329-820" src="https://platform.twitter.com/embed/Tweet.html?id=1060391153944547329"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1060391153944547329-820');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1060391153944547329&amp;amp;theme=dark"
  }



&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1060264914802028544-295" src="https://platform.twitter.com/embed/Tweet.html?id=1060264914802028544"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1060264914802028544-295');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1060264914802028544&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;My &lt;strong&gt;why&lt;/strong&gt; here wasn't to "out" the maker community or isolate a single statistic as not being 50:50. I think we all knew that the results would be reflective of the gender imbalance in technology, but as an analytical person, I wanted to know the numbers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Without data in any situation, you're flying blind. There is nothing to tether to, nothing to question, and ultimately nothing to celebrate if you are making positive changes. Moreover, if the women paving the way for future makers aren't recognized for their early adoption, they may never get the positive reassurance to continue.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;How I Went Through 40k Names&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I began by pulling all the maker and product data from ProductHunt from the beginning of time (aka 2013). This was done much more quickly due to help from &lt;a href="https://www.producthunt.com/@tcodinat" rel="noopener noreferrer"&gt;Toni Codina&lt;/a&gt;, a fellow female maker, sending me a customizable PHP script for their API. Very quickly, I had 40 thousand unique maker names that I somehow needed to align to a gender.&lt;/p&gt;

&lt;p&gt;Unable to manually go through all 40k, I decided to feed the names through &lt;a href="http://genderize.io/" rel="noopener noreferrer"&gt;Genderize&lt;/a&gt;, which indicated the likelihood that the individual was "female" or "male". For example, the name Brenden returned {"MALE, Probability: 1, Number:46"}.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1061573124850761729-56" src="https://platform.twitter.com/embed/Tweet.html?id=1061573124850761729"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1061573124850761729-56');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1061573124850761729&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;I knew that if I was going to report on this data, I wanted it to be as accurate as possible. So, I utilized a formula to identify certain names as most likely correct, by the following logic: if the Genderize probability was &amp;gt;95% and N&amp;gt;3, I trusted the output. Similarly, if the probability was &amp;gt;80% and N&amp;gt;10, I &lt;em&gt;mostly&lt;/em&gt; trusted the data.&lt;/p&gt;

&lt;p&gt;I say &lt;em&gt;mostly&lt;/em&gt; because I still ended up manually checking 8000+ names that didn't parse in Genderize, names that seemed to need an extra eye, or hundreds of gender agnostic names like Eli, Jordan, Pat, Sam, Charlie, Jamie, Morgan, Taylor, etc…&lt;/p&gt;

&lt;p&gt;Naturally, there were a few cases where even when I checked the maker manually, I wasn't able to determine the gender. Those individuals have been removed from this study.&lt;/p&gt;

&lt;p&gt;After manually checking 8k names for too many hours, I'm confident that the accuracy of this "study" is 95%+, or at least high enough that there is now a window into the presence of female makers on ProductHunt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who Cares?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, let's take a step back before analyzing the output and quickly clarify why this even matters. As we move into the next decade, the digital products that are created will have an even greater impact on society. It's safe to say that technology will likely have the biggest impact on human prosperity, equality, and change over the next decade.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;As with anything, the more that we can achieve diversity in the people creating these products, the more diversity we will see in the products and our future as a society. Some may dismiss the importance of gender, racial, and other forms of equality, but I would argue that &lt;strong&gt;it is essential&lt;/strong&gt;. And unfortunately, inclusivity does not happen naturally.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Let's Talk Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First and foremost, if you haven't already taken a look at the data, you can do so at &lt;a href="https://femake.tech/" rel="noopener noreferrer"&gt;FeMake&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A few clear things jumped out at me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The percentage of female makers (13.9% in 2018) was actually less than the tech industry overall. This is also improving.&lt;/li&gt;
&lt;li&gt;  The percent of solo female makers (9.3% in 2018), ie: women submitting on their own, is even lower and not really improving.&lt;/li&gt;
&lt;li&gt;  Average stats across upvotes, comments, products launched, and % launching multiple times are all lower than our male counterparts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, what does this mean? Quite honestly, I don't have a clear answer on this. The number of women contributing is increasing, which is obviously positive and a testament to active efforts to welcome women into the community. However, the lower number of solo female makers and the lack of movement there makes me think that there is still a big psychological gap. Let me explain why.&lt;/p&gt;

&lt;p&gt;In tech overall, there are many reasons that people often cite for the gender imbalance. (1) The pipeline, (2) psychological factors, and (3) gender bias in hiring, are three things that stick out to me and it's unclear which of these contribute more heavily to the complex pie.&lt;/p&gt;

&lt;p&gt;However, I hypothesize that the act of being an indie or independent maker limits the potential influence of (1) pipeline and (3) gender bias. They are certainly not removed entirely, but any person — male or female — can wake up one morning and start learning to code for $10 on Udemy or launch a no-code product. Similarly, there is no one "hiring" an indie maker or giving them VC funding; so once again, the act of being an indie maker is one that is mostly restricted by the individual itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Psychology of Inclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thus, although this is certainly not scientific, the findings lead me to believe that (2) &lt;strong&gt;Psychology&lt;/strong&gt; is even more prominent in tech (and making) than we give credit.&lt;/p&gt;

&lt;p&gt;I recently learned of &lt;a href="https://www.thoughtworks.com/insights/blog/born-it-how-image-software-developers-came-about" rel="noopener noreferrer"&gt;the Cannon-Perry test that was facilitated in 1966&lt;/a&gt;, which forever changed the way that people stereotyped programmers (and consequently also non-programmers). In 1966, this study decided that programmers "don't like people", and despite this only coming from one model, it became a mechanism that self-prophesied for decades to come.&lt;/p&gt;

&lt;p&gt;With the data pulled from &lt;a href="https://femake.tech/" rel="noopener noreferrer"&gt;FeMake&lt;/a&gt; and the knowledge of the skewed history of technical recruiting, we cannot stop placing importance on welcoming communities for women like &lt;a href="https://womenmake.com/" rel="noopener noreferrer"&gt;Women Make&lt;/a&gt; and &lt;a href="https://leap.ycombinator.com/" rel="noopener noreferrer"&gt;Leap&lt;/a&gt;, or showcasing female role models in tech. That's one of the reasons as to why I included a resource section which you can find &lt;a href="https://femake.tech/resources" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On that note, I found it extremely inspiring to go through some of the top female contributors to ProductHunt. Not to focus on competition, but instead to center on some of the amazing products that women have brought to life, either individually or as part of a team.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/@collinmathilde" rel="noopener noreferrer"&gt;Mathilde Collin&lt;/a&gt;, for example, is an independent female maker who has created 20 products of which most were successful, including her keystone product &lt;a href="https://frontapp.com/" rel="noopener noreferrer"&gt;FrontApp&lt;/a&gt;. &lt;a href="https://www.producthunt.com/@stephliverani" rel="noopener noreferrer"&gt;Steph Liverani&lt;/a&gt; was one of the co-founders of &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;, while &lt;a href="https://www.producthunt.com/@ktzhu" rel="noopener noreferrer"&gt;Katie Zhu&lt;/a&gt; works on product and engineering at &lt;a href="https://medium.com/" rel="noopener noreferrer"&gt;Medium&lt;/a&gt; (where you're likely reading this).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parting Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;People will have different opinions on &lt;a href="http://femake.tech/" rel="noopener noreferrer"&gt;FeMake&lt;/a&gt;, but at the very least, I hope this puts a marker in the ground representing where the maker community stood in terms of inclusivity at this time. Let's celebrate the progress which is represented in the data, celebrate women like &lt;a href="https://www.producthunt.com/@collinmathilde" rel="noopener noreferrer"&gt;Mathilde&lt;/a&gt;, &lt;a href="https://www.producthunt.com/@stephliverani" rel="noopener noreferrer"&gt;Steph&lt;/a&gt;, and &lt;a href="https://www.producthunt.com/@ktzhu" rel="noopener noreferrer"&gt;KT&lt;/a&gt;, and &lt;strong&gt;push for more&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I hope that today, just like every other day, we can continue to celebrate women in technology and understand the degree of progress we're making.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can find me on &lt;a href="https://twitter.com/stephsmithio" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, read more &lt;a href="https://blog.stephsmith.io" rel="noopener noreferrer"&gt;here&lt;/a&gt;, or &lt;a href="https://mailchi.mp/3e320512ed0b/stephsmith" rel="noopener noreferrer"&gt;subscribe to my blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wecoded</category>
      <category>culture</category>
      <category>diversity</category>
      <category>inclusion</category>
    </item>
  </channel>
</rss>
