<?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>DEV Community: Glenn Stovall</title>
    <description>The latest articles on DEV Community by Glenn Stovall (@gsto).</description>
    <link>https://dev.to/gsto</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%2F98658%2F86dcc49c-062e-4e3e-aca0-4f571da4b24d.jpeg</url>
      <title>DEV Community: Glenn Stovall</title>
      <link>https://dev.to/gsto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gsto"/>
    <language>en</language>
    <item>
      <title>10 ways to thrive as an egotistical developer</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Thu, 10 Feb 2022 12:16:19 +0000</pubDate>
      <link>https://dev.to/gsto/10-ways-to-thrive-as-an-egotistical-developer-2ik4</link>
      <guid>https://dev.to/gsto/10-ways-to-thrive-as-an-egotistical-developer-2ik4</guid>
      <description>&lt;p&gt;You don't want to find the company where you're a good fit, you need to find the job that's a good fit &lt;em&gt;for you.&lt;/em&gt; Here are ten tips to help you land your next gig:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Consider job titles
&lt;/h2&gt;

&lt;p&gt;Only accept titles of 'senior' or higher. It doesn't matter if you graduated from codingbootcamp.biz six months ago. Some people get the same one year of experience ten times!&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Pick the right technologies
&lt;/h2&gt;

&lt;p&gt;Stick to cutting-edge technologies. Any framework more than thirty days old is legacy and therefore bad. For example, Ruby on Rails is dead so avoid sad sack companies such as  Bloomberg, Soundcloud, Zendesk, Basecamp, Shopify, Airbnb, Kickstarter, Twitch, GitHub, or Urban Dictionary.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Work on the best projects
&lt;/h2&gt;

&lt;p&gt;Only work on projects you want to work on. Remember that doing work that isn't your favorite is a one-way path to burnout city!😫 Staying in your comfort zone hides your weaknesses and protects your personal brand.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Show initiative
&lt;/h2&gt;

&lt;p&gt;Apply to jobs with unsolicited feedback and redesigns of their website. What you lack in context and restraints they had when working on it, you make up for in CSS animations you copy/pasted from Codepen that add pizazz.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Avoid coding puzzles
&lt;/h2&gt;

&lt;p&gt;Click that "leave meeting" button when they ask you to code &lt;em&gt;anything&lt;/em&gt;. If they want to judge your quality, they can read all of your blogs, review your sample projects from coding school, or take another gander at your resume. You even rated your skills on a 10 scale to make it easy to scan! Companies that don't read every piece of content by every applicant clearly have an understaffed recruiting department, and is that the kind of place you want to work?&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Build a personal brand
&lt;/h2&gt;

&lt;p&gt;Don't practice coding puzzles. You know what you know, you shouldn't have to "prepare" for an interview. Instead, tweet threads about how all those graph riddles aren't an accurate metric for evaluating you. You build a brand by sharing, not learning. All that engagement might get you leads! Besides, you wouldn't have dropped out of college if you wanted to study for quizzes.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Learn in public
&lt;/h2&gt;

&lt;p&gt;After leaving a company, write a think piece explaining how you left a $100 billion company after five months because "there was nothing to learn there." Use that newfound free time to establish expertise by writing think pieces on how &lt;em&gt;other&lt;/em&gt; people should be interviewing (#branding!). The comments Hacker News will surely validate your decision to walk away from a remote job with a six-figure salary.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Practice self-care
&lt;/h2&gt;

&lt;p&gt;Quit jobs where they expect you to receive feedback. You're too stoic to be around that kind of negativity. Be sure to quit via text so you can post screenshots on /r/antiwork.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Stay up to date
&lt;/h2&gt;

&lt;p&gt;Stay current via extreme onlineness. Follow people who work 45 minutes per week (never on Fridays!)  and make $245,000/year (plus benefits!) Keep up with people on round 13 of their interview process and can no longer even. Reflect on how everyone in the tech industry is so great (source: YouTube) and so horrible(source: Twitter) in parallel. Reflect on why you aren't doing as good as everyone else seems to be, if things will ever get better, or if you'll ever stop feeling like an impostor. Wonder if making career decisions attempting to make your reality match the filtered artifice you see online was maybe not be the correct tactic.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Start a Substack
&lt;/h2&gt;

&lt;p&gt;Newsletters are the new self-actualization.&lt;/p&gt;

</description>
      <category>career</category>
      <category>motivation</category>
    </item>
    <item>
      <title>Name Your Next Product With This Exercise</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Mon, 08 Mar 2021 13:20:52 +0000</pubDate>
      <link>https://dev.to/gsto/name-your-next-product-with-this-exercise-4h7h</link>
      <guid>https://dev.to/gsto/name-your-next-product-with-this-exercise-4h7h</guid>
      <description>&lt;p&gt;How do you come up with a product name? or a business name? Naming products is a hard but learnable skill. There are &lt;a href="https://www.zinzin.com/"&gt;agencies that provide names-as-a-service.&lt;/a&gt; ZinZin’s existence corroborates the idea that naming can be distilled into a repeatable process.&lt;/p&gt;

&lt;p&gt;When you’re feeling stuck, it helps to have a process. &lt;strong&gt;Prolific creation&lt;/strong&gt; is the play here: When you’re stuck trying to come up with a name, it’s easier to come up with 100.&lt;/p&gt;

&lt;p&gt;This is my current iteration on a naming process. It’s based on prior work from &lt;em&gt;&lt;a href="https://www.zinzin.com/guides/zinzin-naming-guide_v5.1.pdf"&gt;The ZinZin Naming Guide&lt;/a&gt;&lt;/em&gt;, the article &lt;a href="https://www.ribbonfarm.com/2016/04/14/a-good-name-points-to-you/"&gt;A Good Name Points to You&lt;/a&gt; from Ribbonfarm, and Jane Portman’s guide to &lt;a href="https://uibreakfast.com/name-your-book/"&gt;Naming your next book&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;After reading this guide, you should have a process you can use next time you are coming up with a name for your next product, website, article, or creative project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create an 7-column table or mindmap
&lt;/h2&gt;

&lt;p&gt;You’ll need somewhere to collect your ideas. Use whatever style works for you; I prefer mindmaps on paper. Y can use a tool like &lt;a href="https://coggle.it/"&gt;Coggle&lt;/a&gt; or a spreadsheet. Then, create 7 sections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Similar products&lt;/strong&gt; – names of competitive books, apps, whatever&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mechanisms&lt;/strong&gt; – how your product works&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implications&lt;/strong&gt; – what your product does&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consequences&lt;/strong&gt; – the result of your product&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pain points&lt;/strong&gt; – pain your products solve&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jargon&lt;/strong&gt; – related terms from your audience that could relate to your product.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metaphors&lt;/strong&gt; – potential metaphors that you could tie to any of the previous 6&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The steps here aren’t ordinal. You can bounce back and forth; ideas from one may inspire others.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://glennstovall.com/wp-content/uploads/2021/03/Product_Name_Brainstorming.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BZvVKMFO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://glennstovall.com/wp-content/uploads/2021/03/Product_Name_Brainstorming-1024x636.png" alt="" width="880" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Playing Creative Offense &amp;amp; Defense
&lt;/h2&gt;

&lt;p&gt;On &lt;em&gt;The Knowledge Project,&lt;/em&gt; &lt;a href="https://fs.blog/knowledge-project/sendhil-mullainathan/"&gt;Sendhil Mullainathan&lt;/a&gt; talked about the idea of creative offense and defense. Creative Offense is coming up with as many unfiltered ideas as you can. Creative Defense is filtering those ideas down into the best actionable ideas from earlier.&lt;/p&gt;

&lt;p&gt;By decoupling your creative mind from your critical eye, you empower both to work at their best.&lt;/p&gt;

&lt;p&gt;That’s the approach I’m recommending here: coming up with several names, then filtering down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Decomposition
&lt;/h2&gt;

&lt;p&gt;Start by breaking down your product idea. How does it work? What does it do? What results does it deliver? You can decompose your product to fill out the first three sections:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Things decompose into mechanisms, implications, and consequences. The mechanism is how it works. The implication is what it does. The consequence is what it means for the lives of the audience you’re trying to reach.&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;Carlos Bueno, &lt;em&gt;&lt;a href="https://www.ribbonfarm.com/2016/04/14/a-good-name-points-to-you/" rel="noreferrer noopener"&gt;A Good Name Points to You&lt;/a&gt;&lt;/em&gt;, Ribbonfarm&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Identifying these parts of your application will inform the &lt;strong&gt;mechanisms_,_ implications, and consequences&lt;/strong&gt; sections.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mechanisms&lt;/strong&gt; : S3, aka &lt;em&gt;&lt;a href="https://aws.amazon.com/s3/"&gt;Simple Storage Service&lt;/a&gt;.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implications&lt;/strong&gt; : &lt;em&gt;&lt;a href="https://logsentinel.com/sentineldb/"&gt;SentinelDB&lt;/a&gt;.&lt;/em&gt; The metaphor implies that it stands in front of your data, protecting it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consequences:&lt;/strong&gt; &lt;em&gt;&lt;a href="https://doubleyourfreelancing.com/rate/"&gt;Double Your Freelancing Rate&lt;/a&gt;&lt;/em&gt;. A crispy definition of what happens to your career. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Research
&lt;/h2&gt;

&lt;p&gt;Step two is to look inward for ideas. The next step is to look outward. What are others doing in your niche? You shouldn’t plagiarize, but you can get an idea of how your audience talks and use that data to come up with ideas you could connect with. There are three data points here: &lt;strong&gt;similar products, pain points,&lt;/strong&gt; and &lt;strong&gt;jargon.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Similar Products –&lt;/strong&gt; Start looking at naming schemas from similar products. For example, let’s say I was making a tech podcast. I see patterns of including “cast”, “show”, “podcast”, and “talk” in the name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pain Points –&lt;/strong&gt; What problem does your product solve? You’ll see this technique often in book subtitles. For example, &lt;em&gt;&lt;a href="https://www.amazon.com/gp/product/B07FLNFRGK/ref=ppx_yo_dt_b_d_asin_title_o04?ie=UTF8&amp;amp;psc=1"&gt;How to Do Nothing: Resisting the Attention Economy&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jargon –&lt;/strong&gt; How does your audience talk? What are their terms of art? When Adam Wethan &amp;amp; Steve Schoger named their book teaching design in developers, they were translators between two worlds. They need to describe design techniques in geek-speak. They landed on the brilliant moniker &lt;em&gt;&lt;a href="https://refactoringui.com/"&gt;Refactoring UI&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Metaphors –&lt;/strong&gt; New ideas are more resonant when you can connect them to existing ideas with your audiences’ minds. For example, Steven Pressfield’s &lt;em&gt;&lt;a href="https://www.amazon.com/dp/B007A4SDCG/"&gt;The War of Art&lt;/a&gt;&lt;/em&gt; connects &lt;a href="https://en.wikipedia.org/wiki/The_Art_of_War"&gt;Sun Tzu’s classic work&lt;/a&gt; to the inner struggle of creative work.&lt;/p&gt;

&lt;p&gt;Go through each of the sections, and come up with examples for each. Hopefully, one column will inspire another and give you plenty of creative clay to work with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Connect &amp;amp; Create
&lt;/h2&gt;

&lt;p&gt;Once you have your ideas, it’s time to start synthesizing new ideas from them. Mix, match, combine and write down whatever comes to you.&lt;/p&gt;

&lt;p&gt;Add a new section of your document, or start a new document.&lt;/p&gt;

&lt;p&gt;Remember that you are aiming for &lt;em&gt;quantity&lt;/em&gt;, not quality here. Go wide. Big, blue ocean thinking. The beauty of creative offense is that the quantity will get you to the quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Filter &amp;amp; Decide
&lt;/h2&gt;

&lt;p&gt;Once you have your name, it’s time to filter down into something that works. Maybe in the exercise, you came up with something that really makes your heart sing.&lt;/p&gt;

&lt;p&gt;To help you decide, you could set some constraints on the name. This will vary depending on your niche and type of product, but here are some potential rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Can you get a decent domain?&lt;/strong&gt; If you need a domain for the product, are you able to get one? &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the name simple enough?&lt;/strong&gt; Clear &amp;gt; clever. Will people understand your name? Is it too wordy, complex, or hard to spell?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Will it get you in trouble?&lt;/strong&gt; Be aware that if your name is &lt;em&gt;too&lt;/em&gt; inspired by a competitor, you could find yourself on the receiving end of a cease &amp;amp; desist. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can you say it out loud?&lt;/strong&gt; Call it word of mouth optimization. Imagine someone recommending your product to a friend. How does it sound? For an anti-example, see &lt;a href="https://www.mmhmm.app/"&gt;mmhmm&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may have other constraints. Consider those and eliminate names that don’t work. Eventually, you should be able to find something that works. If not, you can always repeat the previous steps and come up with more ideas.&lt;/p&gt;

&lt;p&gt;Did you come up with a good idea using this system? Let me know what it is over Twitter &lt;a href="http://twitter.com/gsto"&gt;@GSto&lt;/a&gt; , I’d love to hear it.&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://glennstovall.com/name-your-next-product/"&gt;Name Your Next Product With This Exercise&lt;/a&gt; appeared first on &lt;a href="https://glennstovall.com"&gt;Glenn Stovall&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>product</category>
      <category>writing</category>
    </item>
    <item>
      <title>SaaS Under The Surface</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Tue, 29 Dec 2020 14:24:32 +0000</pubDate>
      <link>https://dev.to/gsto/saas-under-the-surface-1kjb</link>
      <guid>https://dev.to/gsto/saas-under-the-surface-1kjb</guid>
      <description>&lt;h2&gt;
  
  
  The Unknown Unknowns of Building a SaaS Application
&lt;/h2&gt;

&lt;p&gt;Some vital parts of a sustainable software business easily get overlooked.&lt;/p&gt;

&lt;p&gt;Building a Software-as-a-service(SaaS) is much more complicated than it looks on the surface. Creating a piece of software that you charge other people money for means that you have added an order of magnitude more complex than an application used for internal purposes.&lt;/p&gt;

&lt;p&gt;SaaS products are like an iceberg.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--diP6DK7h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://glennstovall.com/wp-content/uploads/2020/12/saas-berg-final.001-1024x576.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--diP6DK7h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://glennstovall.com/wp-content/uploads/2020/12/saas-berg-final.001-1024x576.jpeg" alt="" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Application Lives Above The Surface
&lt;/h2&gt;

&lt;p&gt;You see the core functionality and value at the top. The business value. The fun stuff. What people see and think, “This is it. Easy peasy.” When the truth is, the application is only what’s visible above the surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Code Lives On The Surface
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Service code&lt;/strong&gt; is the functionality that turns “software” into “software as a service: &lt;strong&gt;Authentication&lt;/strong&gt; so people can log in, and &lt;strong&gt;billing&lt;/strong&gt; so they can pay you monthly for the privilege. The happy path of these lives above the surface. What people tend to forget is all other administration parts of the features when customers run into problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How can users reset their passwords?&lt;/li&gt;
&lt;li&gt;How do they update their email address? &lt;/li&gt;
&lt;li&gt;Do you need to consider &lt;a href="https://authy.com/what-is-2fa/"&gt;Two-factor authentication&lt;/a&gt;? some company have security policies which require that applications they use to have two-factor authentication, so this is something to heavily consider if you sell B2B software to companies of any scale&lt;/li&gt;
&lt;li&gt;What happens when someone upgrades or downgrades their plan?&lt;/li&gt;
&lt;li&gt;What if someone wants to cancel? &lt;/li&gt;
&lt;li&gt;How do you handle refunds? No matter what you do, managing customers who want their money back is inevitable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Under The Sea
&lt;/h2&gt;

&lt;p&gt;Now we get to the boring but essential parts of running a SaaS. These services don’t tend to provide a lot of visual business value. But if they didn’t exist, a problem could cause your business to collapse. If you were running the kitchen on the &lt;em&gt;Titanic&lt;/em&gt;, these would be the cleaning supplies and fire extinguishers in the supply closet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transactional emails&lt;/strong&gt; – Transaction emails are emails that your application sends throughout the user’s lifecycle and use of the application. Examples include weekly summaries and confirmation emails. These are different and typically use a separate piece of software that marketing emails, such as newsletters—an often overlooked part of an application that can bring a lot of value. Emails are part of the user experience. You should be mindful of what emails, when you send them, and their voice and tone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitoring&lt;/strong&gt;   -monitoring tools keep an eye on all the different parts of the system and collects analytics useful for understanding how everything works under the hood. Monitoring is useful for debugging issues and identifying opportunities for optimization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Error Logging&lt;/strong&gt; – If one of your servers when down, how long would it be until you found out? You’ll need a way to know when errors happen and how frequently they occur. Error logging keeps track of errors and can notify you of severe issues immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Staging Environment.&lt;/strong&gt; Applications live in different environments &lt;strong&gt;.&lt;/strong&gt; The live version of your application is the production environment or “production” for short. Copies of the code that live on the developer’s laptops are development environments. In between, you have something called “staging.” It’s an environment that mimics production as closely as possible with a different database. Use it to test features, research issues you found due to your error logging, and to demo upcoming features to customers before they go live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backups&lt;/strong&gt; – You need a way to safely store and recover data if something goes wrong or you make a corrupting change to your database that needs undoing. When it comes to paying customers, two is one, and one is none.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hosting&lt;/strong&gt; – You’ll have to decide where and how to host your application. There are several options, but hosting is a more irreversible decision. Think long and hard about your hosting needs now and what they could be 1-2 years from now. A common choice is &lt;a href="https://aws.amazon.com/"&gt;Amazon Web Services (AWS)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analytics&lt;/strong&gt; – You’ll want to keep track of how many users are using your application, as well as how they are using it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reporting&lt;/strong&gt; – Analytics answers questions about using your application in a broad sense, while reporting is for drilling down. Think of analytics as the results of a poll, while reporting as the answers a subset of people gave in a survey. You’ll want to use data generating by your application to make data-driven decisions, and you can’t do that without reporting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;God mode&lt;/strong&gt; – god mode is something that you don’t know you need until you need it. As the owner of an application, do you want to ask a developer to make a change for you every single time you need one? Here’s an example: a user mistyped their email and wants you to fix it. You didn’t build this into your MVP, but you could do it manually. A developer could manually access the database and make the change, but what if you had a simple interface where you could? Tools like active admin for rails are one example of tooling explicitly designed for admin panels.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fortunately, Ice isn’t that expensive.
&lt;/h2&gt;

&lt;p&gt;The one good thing about these under the surface problems is that everyone has them. These problems aren’t new, so there are several off-the-shelf solutions available. &lt;/p&gt;

&lt;p&gt;Some examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Authentication&lt;/strong&gt; – &lt;a href="https://auth0.com/"&gt;auth0&lt;/a&gt; and AWS &lt;a href="https://aws.amazon.com/cognito/"&gt;Cognito&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Billing&lt;/strong&gt; – &lt;a href="https://www.chargebee.com/"&gt;ChargeBee&lt;/a&gt;, &lt;a href="https://stripe.com/docs/payments/checkout"&gt;Stripe Checkout&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transactional Emails&lt;/strong&gt; – &lt;a href="https://sendgrid.com/"&gt;SendGrid&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring&lt;/strong&gt; – &lt;a href="https://aws.amazon.com/cloudwatch/"&gt;AWS Cloudwatch&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error Logging&lt;/strong&gt; – &lt;a href="https://rollbar.com/"&gt;Rollbar&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics&lt;/strong&gt; – &lt;a href="https://analytics.google.com/"&gt;Google Analytics&lt;/a&gt; and &lt;a href="https://www.hotjar.com/"&gt;Hotjar&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building Your Iceberg
&lt;/h2&gt;

&lt;p&gt;These service-level problems can either be solved by custom code in your application or by integrating with 3rd party services. Doing so reduces initial development costs but adds to monthly billing, dependency on a 3rd party for core functionality, and complexity to the system’s architecture. &lt;/p&gt;

&lt;p&gt;Part of building a SaaS is deciding when to make the build vs. buy tradeoff when creating something valuable for your customers. &lt;a href="https://dev.to/gsto/how-to-decide-when-to-build-software-vs-when-to-buy-2ibl-temp-slug-8641290"&gt;&lt;strong&gt;Factors to consider when deciding when to build vs. buy.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://glennstovall.com/saas-under-the-surface/"&gt;SaaS Under The Surface&lt;/a&gt; appeared first on &lt;a href="https://glennstovall.com"&gt;Glenn Stovall&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>saas</category>
    </item>
    <item>
      <title>PR18 - Content creation &amp; strategy w/ Stephanie Morillo</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Tue, 22 Sep 2020 10:00:00 +0000</pubDate>
      <link>https://dev.to/gsto/content-creation-strategy-w-stephanie-morillo-4df3</link>
      <guid>https://dev.to/gsto/content-creation-strategy-w-stephanie-morillo-4df3</guid>
      <description>&lt;p&gt;Product manager and content strategist, Stephanie Morillo. Who's also the author of the developer's guide, the content creation and the developer's guide to book publishing, teaches us about creating more engaging content and more useful documentation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Below are the show notes and transcripts for the episode. You can listen to the episode in full here: &lt;strong&gt;&lt;a href="https://www.productionreadypod.com/episodes/content-creation-w-stephanie-morillo"&gt;Content creation and strategy with Stephanie Morillo&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What did you think of the episode? Have more questions about content creation? Let me know in the comments below! 👇&lt;/p&gt;




&lt;h2&gt;
  
  
  Show Notes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Find Stephanie Online
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.stephaniemorillo.co/"&gt;Stephanie Morillo&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://twitter.com/radiomorillo"&gt;@radiomorillo&lt;/a&gt;  &lt;/p&gt;

&lt;h3&gt;
  
  
  More of Stephanie's work:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.developersguidetocontent.com/"&gt;The Developer's Guide to Content Creation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.developersguidetocontent.com/book-publishing-guide"&gt;The Developer's Guide to Book Publishing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/rubymorillo/pocket-tech-writing-list"&gt;The Pocket Technical Writing List&lt;/a&gt; (Includes style guides) &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Links from the show:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/blog/"&gt;Digital Ocean blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://azure.microsoft.com/en-us/services/devops/"&gt;Azure Devops&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.onenote.com/"&gt;Microsoft Onenote&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackingthebricks.com/video-sales-safari-in-action/"&gt;Sales Safari in Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/dp/B007A4SDCG"&gt;The War of Art&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/"&gt;What is Code? - Paul Ford&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackingthebricks.com/"&gt;Stacking The Bricks - Amy Hoy and Alex Hillman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://styleguide.mailchimp.com/"&gt;MailChimp Content Style Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Transcript
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:00:00] hey everyone. I'm here with product manager and content strategist, Stephanie Morillo. Who's also the author of the developer's guide, the content creation and the developer's guide to book publishing. Can you do today, Stephanie?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:00:11] I'm doing well. How about you Glenn? Pretty good.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:00:14] And today we were going to talk a bit about writing and content strategy for devs, but to start, could you tell me a little bit about, what you do currently in your history as a writer and content strategist?  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:00:24] Yeah. so I have been a writer for the bulk of my 12 year long professional career. I started in communications and marketing and around the four year Mark decided that I want to learn how to program. So I learned Ruby with the help of a friend spent about a year at it, just dabbling. it wasn't very structured.  &lt;/p&gt;

&lt;p&gt;It was like we'd meet once a week, once or twice a week. And I learned that way and, Through that I started working in tech, so I moved into the startup space. I worked at general assembly. and then. Over the course of my time there, I realized that I wanted continue working around developers, but I didn't want to be a dev.  &lt;/p&gt;

&lt;p&gt;So when I was trying to think, okay, what could I do? I decided to go into writing, thought technical writing would be my, the path that I would go on. So I was like, I really want to be a documentarian, the kind of person who's responsible for producing, highly technical documentation, but instead find myself in copywriting.  &lt;/p&gt;

&lt;p&gt;I was writing marketing and product carpets. Copywriting at digital ocean. And then just through them, I started moving up the ladder content-wise de content management did the same thing at Github. And then most recently I was a content strategist at Microsoft cloud advocacy team before pivoting completely.  &lt;/p&gt;

&lt;p&gt;And now I am a product manager on an engineering team here at Microsoft.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:01:44] Oh, cool. Awesome. And what kind of content you said your documentation, what sort of content did you do over at get hub?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:01:49] So I did do documentation AdvocateHub at GitHub. I was responsible for managing the company blog. So I was essentially the managing editor.  &lt;/p&gt;

&lt;p&gt;I was. I was copy editing blog posts. I was managing blog operations, which sounds about as interesting as it is. at that time get hubs blog was actually built on Jekyll. it was hosted on GitHub pages. There was a lot of, a lot of having to ping site engineering, whenever something went down.  &lt;/p&gt;

&lt;p&gt;And then of course, China work with good hovers who were interested in writing blog posts for the blog. So I was constantly sourcing stories, trying to find interesting angles and things that the audience would be interested in reading.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:02:29] Yeah. what were some of the interesting angles or kind of stories you look for at Github?  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:02:34] I was at Github only for a few months before I moved to Microsoft. So I think the better. The better example would be digital ocean. I managed their company blog for over a year. and some of the stories that I published, one of them was, about how the company managed a go mano repo.  &lt;/p&gt;

&lt;p&gt;So one of the libraries, so basically the engineering team created a goal library that was open source and the whole thing was a mono repo. And I pinged one of the developers after seeing him talk about it in Slack. And I was like, Hey, would you like to write about it? He did. I pinged an engineering manager who had given a talk at Ashcon about managing a remote teams, got him to write something for the blog.  &lt;/p&gt;

&lt;p&gt;one of the internal infrastructure teams was doing something really interesting. They had an apprenticeship program where they allowed folks from other engineering teams at digital ocean to shadow infrastructure engineering there's to learn more about the organization. And then they actually took on some work.  &lt;/p&gt;

&lt;p&gt;So it was like a two week program. And the whole point was to help build out the infrastructure team and to get people interested in wanting to make a lateral move. So that was another story, but basically we ran the gamut. I published this, we published a story on. How one of the teams designed object storage.  &lt;/p&gt;

&lt;p&gt;So pretty much I trolled all of the Slack channels, seeing what the engineers were talking about. And I was just like, yo, you should write this as a blog post. And people were more than happy to oblige most of the time.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:03:56] Awesome. Cool. And then how was, what was the goal at digital ocean? Was this just trying to build brand awareness and , get engineers more interested in digital ocean?  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:04:07] So digital ocean actually had a very solid content pipeline on the tutorial side of the house. So digital ocean publishes a lot of open source tutorials on how to do anything related to cloud infrastructure. Obviously, digital ocean is generally the. The hosting platform that's used in a lot of these examples, but these are all just, how to create something with the modern stack on digital ocean or on Ubuntu or whatever.  &lt;/p&gt;

&lt;p&gt;And they managed to get a lot of brand awareness through writing those kinds of tutorials. The blog was actually a channel that no one really, it was like an orphan. Nobody really owned it at digital ocean and they were using it like to publish a. A product announcement once every two or three months or something, or, Hey, we opened up a new data center.  &lt;/p&gt;

&lt;p&gt;So the blog was pretty much. Nobody. Nobody knew what to do with it. Nobody had any, concerns or anything. So I was like, you know what, I'm going to take over the block and I'm going to do whatever I want with it. while most companies have a very solid strategy, they have very clear metrics.  &lt;/p&gt;

&lt;p&gt;they're trying to, they might not even, it might not even be like just generating awareness. There might be other objectives that they're trying to meet through blog content. I really wanted to tell stories about how the, how we got things done at DOE to get engineers excited about DEO as a company, but also excited about.  &lt;/p&gt;

&lt;p&gt;Seeing themselves a deal. I wanted engineers to write the kinds of stories that they as engineers would like to read. just to give people another look into the company. People really liked the products. People really liked the UX, but they didn't know much about us. They didn't know much about our internal teams.  &lt;/p&gt;

&lt;p&gt;And we had a lot of platform teams that were building tools for internal customers. And they didn't really have the opportunity to shop, shine or highlight what they were doing. So the blog was a perfect way to do that.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:05:53] Yes, that's all it cost. It's definitely a frustration I've had before where you're building a building internal tools and it's I can't put this in a portfolio or anything.  &lt;/p&gt;

&lt;p&gt;and then you also do a lot of writing on your own.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:06:04] Yeah. Yeah, I do. I do. I've been blogging pretty frequently, I would say over the last eight to nine months. prior to that, I didn't, it's funny because I spent most of my days writing and editing that at the end of the day, I was like, I don't really want to write on my blog, but since I've moved into a new team, I've.  &lt;/p&gt;

&lt;p&gt;My blog is like my creative outlet. So a lot of the blog posts that I create are around, like some of the essentials of content creation. So I have blog posts on the introduction and introduction to technical writing, but also blog posts that explains, audiences, right? what's a primary audience.  &lt;/p&gt;

&lt;p&gt;And why would you want to write for them? I have blog posts on things like. why the developers not like soft? Why don't developers like marketing or, like writing internal documentation. So any, I look for angles that, basically we book for the kinds of things that engineers asked me about.  &lt;/p&gt;

&lt;p&gt;Or things that I've done that have helped me with my own work. And those generally are the, that's the fodder for a lot of my blog posts. why   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:07:11] don't developers like writing internal documentation?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:07:15] Because it's hard to get feedback from internal docs, right? Like you're writing until you write something in a Wiki and then it's in the either and you don't know whether or not anybody is actually using it or not.  &lt;/p&gt;

&lt;p&gt;So in that sense for a lot of people, it might be. Feel or seem like a time suck. and also because writing documentation is generally an activity that most people undertake at the very end of a project, as opposed to writing continuously while the project is going on. So it's almost like one thing you have to check off your list before the project can officially ship, which you know, it's not always the most fun, but it is.  &lt;/p&gt;

&lt;p&gt;In my opinion, some of the most valuable form of writing, especially when it comes to things like onboarding new people, training, new people, they want to be able to, and to be able to do that in a scalable way, it's not scalable to have, a bunch of training sessions with every single person that joins the company.  &lt;/p&gt;

&lt;p&gt;Or if you're trying to. Build out a huge team, like when you're thinking about scale. and yeah, and you're thinking about, and you're thinking about access. I think internal documentation is the way to go, but I understand the frustration with having to write it, if you're not getting feedback and you don't know if people actually find it useful, It can be, it can feel like an activity that you're just doing to check off some boxes.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:08:28] Yeah. And that's something I've struggled with too. Or I, again, I've blogged in for, I don't even know how many years at this point, but that is something where someone's, that does feel like a bit of screaming into a void in the internet that you don't always get.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:08:42] Yeah.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:08:42] Feedback or no, if the stuff you're doing is working or not.  &lt;/p&gt;

&lt;p&gt;So I'm curious in your experience, what, or how have you gotten feedback positive or negative from some of the stuff you've published   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:08:55] in terms of internal documentation, or just general   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:08:57] documentation, blogging, whatever.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:09:00] I ask people when I, when I publish blog posts, I like to have conversations about it on my own blog.  &lt;/p&gt;

&lt;p&gt;I don't have Oh, comments section, but I tend to syndicate a lot of my blog posts on DEV community and DEV community does it does have a chat, a comment function. So I will generally ask people to share their thoughts. let me know if they have any questions and I will actively engage with each and every single comment.  &lt;/p&gt;

&lt;p&gt;So even if somebody is this is great. Thank you. I will respond. Thank you so much for reading. If people have questions, I'll try my best to answer them with internal documentation. I've actually not had a problem with it because I'm in a lot of my capacity over the last two to three years, it's been, I've been the only person in my function, or I've been responsible for doing work that plugs into other work streams.  &lt;/p&gt;

&lt;p&gt;So my documentation does get read. and the best example of that I have is when I was transitioning out of. The developer relations team and into engineering. I was able to train up the person who was gonna take over my position just on the basis of the kind of documentation that I created alone.  &lt;/p&gt;

&lt;p&gt;I did a lot of recordings. There were decks, but there were also long Wiki articles. and their manager said that it was the best transition plan that they'd ever seen because they had all of that reference material already. So I always try to. Basically communicate out documentation of people.  &lt;/p&gt;

&lt;p&gt;Internally. I have a question that I've already answered in an article. I will send them the article. People are like, great. This is awesome. It answers my question. Great. If it doesn't I asked what it's missing and then I'll try to incorporate that in the article.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:10:32] That makes sense. And I'm curious about some of your tools and process.  &lt;/p&gt;

&lt;p&gt;what did y'all use it Microsoft for internal documentation?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:10:39] we use Azure dev ops, which is, which is our productivity tool. It's similar to JIRA. So we have, we have wikis internally and we use those heavily. So that's where we host all of our documentation internally.  &lt;/p&gt;

&lt;p&gt;And then I'm on the cloud advocacy team. We relied heavily on one note. So yeah, Microsoft   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:10:58] makes sense. And, I'll speak to you just to hear about your, both the tooling and the process for. How you're writing, write some of your blog posts and stuff now. And I know you touched on this a bit on your book, the developer's guide to content creation, but maybe you could walk the listeners through how you go from coming up with ideas to then ending up with a finished published article to, getting eyeballs and comments on that article.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:11:23] Yeah. There's I'll tell you this. There are a lot of different, there are multiple steps to getting there. I'll try to focus on some of the most top of mind ones. first of all, my first recommendation would be for anyone who's interested in writing a blog post to, work in time boxes.  &lt;/p&gt;

&lt;p&gt;So often I hear. From folks that they don't have the time to write, or they want to know how to find the time to write. I've seen folks work in 15 minute time boxes per day. I prefer the 30 minute time box. And I'll just usually schedule that in three to four times a week. It doesn't really matter the cadence, but just know that when you have that time box, that's when you're working.  &lt;/p&gt;

&lt;p&gt;Secondly, it's not just sitting down to write that's part of. producing a blog posts, the research and the refinement or editing phase after you write are also activities that are, part and parcel of the writing process. So think about it like, you're doing your front research, then you're doing the drafting and then you're editing before you press publish.  &lt;/p&gt;

&lt;p&gt;then I would say when it comes to ideas and if you've read a book before you'll, this'll be familiar to you, but. I find that there are four sources of finding content ideas. The first one is to write about things that, things that people come to you about or things that you feel really confident in that you're like, yes, this is something I want to write about.  &lt;/p&gt;

&lt;p&gt;The second, source of content ideas is look for existing things that you have that you can repurpose. So if you've written or if you've produced, I don't know, like a conference talk like a year or two ago on a particular topic. Maybe there's aspects of that talk that you can refresh, that you can then produce.  &lt;/p&gt;

&lt;p&gt;Similarly, you gotta mind basically you're mining existing content that you have to repurpose it and refresh it. the third source of finding a content idea. Is looking out for what people need. Glen, since you've done 30 by 500, you're familiar with sales Safari. And for a lot of folks who are on the call who don't know about buy 500 or sell Safari, you can think of sales Safari as a, like a research methodology.  &lt;/p&gt;

&lt;p&gt;you're the role of a researcher. And you're going to the communities online, where your audience lives. If you're a web developer, for example, and maybe you're targeting early career web developers, you might go to places like dev community hash node. Of course, Twitter. You might even go to, I dunno, free code camp, just to see what people are talking about, what people are interested in.  &lt;/p&gt;

&lt;p&gt;that kind of stuff. So you want to find out what people need, what questions are they asking? What are their pain points? Are there specific themes that I've identified here? And then that makes it's for really good content. And then lastly, the things that you, I want to learn, if you have a list of things that you want to learn and almost.  &lt;/p&gt;

&lt;p&gt;All of us do make a list of all those things and start writing about them. It's a great way for you to crystallize your own learning, for you to process your own learning and also teach someone who is similarly, a beginner in that particular concept, helping them walk through it. . So that's the ideation phase. and then, yeah, it's really just a matter of sitting down at a sitting down like. During your time box working at chipping away a particular topic, and then figuring out what your publishing cadence is. So if you're like, you know what, it takes me a really long time to write.  &lt;/p&gt;

&lt;p&gt;It takes me 20 hours to write. Maybe all you can do is one block. It was for a month and that's totally fine. As long as you commit to that one blog post per month. So I tried to tell folks, pick a cadence. There are four ways of finding content ideas. And create a time box and those are some basic ways to get you from ideation to published.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:14:48] Yeah. so why is it, that, do you think a cadence is so important? Why not just write whatever? I think I have just whatever inspiration or the mood strikes me   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:14:59] because. inspiration is a finite resource. I found oftentimes in my own work that I will have moments when I'm really inspired and I will produce something.  &lt;/p&gt;

&lt;p&gt;But then after that, I have a dry spell. I've seen folks who are really excited and enthusiastic and motivated in the beginning and they produce content. Really frequently, but then after two or three months, they've run out of steam and they don't have anything around. They don't have any, anything keeping them going.  &lt;/p&gt;

&lt;p&gt;So I think if we rely on motivation and inspiration, you'll find that you're only going to be able to do things in short spurts. And if you want to write or create content consistently, you have to push through the times when you're not actually motivated to write or when you're like. Or when inspiration strikes a lot of my blog posts.  &lt;/p&gt;

&lt;p&gt;it has, they haven't been produced necessarily because I felt particularly inspired. I was like, yes, I have amuse, and this is what I'm going to write about. it's frankly been because I have told them myself, this is, this is my cadence. Like I know that I need to produce one blog post per month.  &lt;/p&gt;

&lt;p&gt;So I know that's already a task that I've decided that I would do. So it's. For me, just a matter of finding the content that I want to write about and then spending the time to write about it. And I can do that. Whether or not I'm motivated to write or inspired to write, but I can produce consistently, which is important.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:16:18] Yeah, I think it's, I think it is a thing. A lot of people get backwards that they think, you'll get the inspiration and then you'll get the motivation to do the work when it's actually often the opposite is you do the work and that's, what's going to get you the. Inspiration and motivation. Like a, one of my favorite books is the war of art, which I don't know if you've ever read it.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:16:38] I haven't read it, but everybody's mentioned that to me in more than one occasion.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:16:41] I think one of my favorite quotes, the author of a story says, yeah, when I write, I'm just waiting for the muse to strike, but you can tell them, use them at my typewriter every day at 7:00 AM so that she knows where to find me.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:16:54] Yeah, that's a good one. And I think it'll help a lot of folks if they realize this, like a lot of authors or novelists, or just writers that we admire, we read the finished product and we assume that they are inspired all the time and they're motivated to write all the time. And every word that they produce comes up perfectly.  &lt;/p&gt;

&lt;p&gt;When in fact it's the opposite, it's really just sheer discipline and willpower that gets them through from that first draft all the way to a publish book and. During that journey. They're often working with other people to help them refine their content, make it even better. It's not, no one sits down and produces a perfect first draft, no matter.  &lt;/p&gt;

&lt;p&gt;No matter how talented the writer. So a lot of these writers, what they did, they create systems and processes. there's no shortcut to writing, but just sitting down and actually writing. And to your point and something you mentioned earlier, the more you do it, the more motivated you become and the easier it gets in that you don't feel like you're constantly pulling your own teeth just to find the right word every time.  &lt;/p&gt;

&lt;p&gt;even if you. Produce a first draft that needs a lot of refactoring. You still feel like it's not taking you as long as it did when you first started a blog maybe a year ago or two years ago. so I think it's, the more you do it, what you're actually doing is that you're creating quick wins for yourself.  &lt;/p&gt;

&lt;p&gt;Which then motivates you to continue, which, helps you stay on track.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:18:22] Yeah. I love that you call it re factoring it too, because a good thing is if we're posting online, it's not like a printed book where you printed it. It's done.   &lt;/p&gt;

&lt;p&gt;I have very frequent, like I've written an article and then I get some comments or someone's Oh, you forgot about this.  &lt;/p&gt;

&lt;p&gt;Or. You didn't consider this case. I'm like, Oh, you're right. I'll just go rewrite that section.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:18:43] Yeah. Yeah. That's true. It's and the refactoring is true. Whether or not it's a print article. a printed article or not. with a printed article, it'll likely go through multiple rounds of editing.  &lt;/p&gt;

&lt;p&gt;So if you're writing for a publication, you'll have an editor and that editor will go through everything with a fine tooth comb. Just making sure that that everything looks as polished as possible. And. Before we publish a blog post, we should just, we should do that on our own. We should do some kind of refactoring on our own just to make sure that things look polished, that it's, that it's readable.  &lt;/p&gt;

&lt;p&gt;That it's understandable that it's something that a reader can comprehend. And of course, like you said, we always miss things. Like I will publish a blog post after having edited it a bit. And I'll always find a typo, or I might even find that I can say a sentence better. I can reword it, rephrase it. And it'll sound better and I'll go in and make the change.  &lt;/p&gt;

&lt;p&gt;And then, yeah. And people will say, Hey, by the way, I saw this, you might want to update that. And that's something that you can do quickly. So it's never just a finished static product, especially if it's online content. It's something that you can and should update and maintain.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:19:46] so that companies will be sent melts.  &lt;/p&gt;

&lt;p&gt;I wanted to dive in a bit, when you were talking about ideation and reusing old content, that's doing content audits because that's a word I've heard a lot, but I've ever really been clear, like what exactly a content audit is, or if I wanted to audit. My own content, because like I said, I've been writing stuff for number of years. , how would want to approach a content audit?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:20:10] So it depends on the number. On the amount of content we're talking about. So I'll give you an example. When I was a writer on bumbler, so bundlers the dependency manager for the Ruby programming language, I was responsible for, managing their concent strategy for their online documentation site.  &lt;/p&gt;

&lt;p&gt;So I decided to do a content audit to better understand what content we had. What state it was in. we just, I didn't know what we had and, what I ended up doing was that I actually ended up downloading an SEO site crawler. So the site crawlers are really cool. They will. It sounds like what it is, right?  &lt;/p&gt;

&lt;p&gt;There's a spider that crawls your site and then it'll spit all of the metadata into an Excel spreadsheet. And the metadata that it usually grabs are things like the URLs, the page titles, header, tags, any other kind of meta-tags that you have in there? if they can find information about when this was last published or updated, that kind of thing.  &lt;/p&gt;

&lt;p&gt;So you use that almost as your. As your skeleton. And then what that allows you to do is to go through each piece of content, one by one to determine whether or not it's something that is, is something you want to keep. So you might actually want to use that site crawler. And then in addition to that, look at your site analytics data, and you might decide, okay, this is a, an article that I published in 2012 and it gets no traffic.  &lt;/p&gt;

&lt;p&gt;In fact, this is something that. This is the kind of content that I wouldn't even write about anymore. So you might want to decide whether you want to update it. you want to keep it as is, or if you want to remove it. So a content audit is you first, you're basically creating an inventory of everything that you currently have.  &lt;/p&gt;

&lt;p&gt;You're trying to understand the state that it's in. And you're trying to understand if this content is something that is actually not just driving traffic to your site, but it's something that's actually relevant to readers. I don't know, five years ago, maybe your blog focused on one particular topic.  &lt;/p&gt;

&lt;p&gt;And over the course of time, your audience changed. maybe you pivoted your business or something. And as a result, the content that you've produced over the last three years, it looks vastly different than what you produced five years ago. She made that pivot. You might want to say, I got to figure out what to do with all this older stuff.  &lt;/p&gt;

&lt;p&gt;It's still on my side. It's not really, it's not really doing anything. It doesn't matter if I keep it, but I really want to track certain kinds of  and all of this old stuff is not really helping me. So that's what it is. It's just, it's an inventory. You're trying to go through, determine the state and determine whether it's something that is meeting either your objectives or your readers objectives.  &lt;/p&gt;

&lt;p&gt;It's very tedious as it's as tedious as it sounds. but it's, it's a worthwhile exercise, especially if you happen to have a big blog or a big website.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:22:45] Yeah. Okay. Yeah, that makes a lot of sense. So just going to inventory and figure out. Where to go from there. And that's something else I've wondered too, is about content strategy, which is another word I hear thrown around a lot at night and be particularly curious.  &lt;/p&gt;

&lt;p&gt;I know you've done a lot of work at big companies, but how you see content strategy, big companies, and also. if I'm just an independent developer and I want to start a personal blog, how much should I think about content strategy? What would that look like?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:23:14] So content strategy, a definition that I like that was coined by a content strategist named Christina Halverson is that content strategy is the planning for the creation, maintenance, and governance of useful and usable content.  &lt;/p&gt;

&lt;p&gt;It's not the same as content marketing. So content marketing is, our. Art is content that is created specifically to, to, to like address or attract, a customer need on a site. if you're trying to attract a specific type of customer, you're trying to get them into your funnel.  &lt;/p&gt;

&lt;p&gt;You might use content marketing to address that, so that customers at different stages of the funnel, you're trying to get them as close as possible to like the purchase decision. Content strategy is. All is looking at content really holistically. It looks at your product content. It looks at your marketing website.  &lt;/p&gt;

&lt;p&gt;It looks at everything that you have that is meant to be consumed or used by users and trying to determine whether or not it's actually aligning to a need. So content strategy is important because it asks why. Why am I doing this? Why am I creating this video? Why am I creating a podcast? Does this article actually fulfill a need?  &lt;/p&gt;

&lt;p&gt;And it's, in that sense, okay. For a larger company, as you might imagine, concent strategy can be quite a beast. universities have concent strategists, and they're wrangling sites that are like 20, 30,000 pages, deep trying to determine whether or not. the content is find-able, people can find it, people can use it, that it's actually relevant to them, but for somebody such as yourself.  &lt;/p&gt;

&lt;p&gt;So you're. you're an individual developer and you're a business owner, right? You're a freelancer. When you're thinking about content strategy, you might want to think about things like what kind of content channels do I want? So one thing that we, it's not unusual, it happens to all of us is that we jump on the shiny new toy.  &lt;/p&gt;

&lt;p&gt;Thinking that, Oh, maybe this is a way to attract an audience. I've seen people create podcasts because that's the du jour thing to do or create a screencast or to start Twitch in addition to blogging. Now, while that might be tempting for you, as a freelancer, you want to, you shouldn't do that. This is where constant strategy comes in. You shouldn't do that without really understanding if this meets the needs of your audience. Is it something that your audience actually wants? And thirdly, if you can actually. Maintain the thing. Is there a governance model around your Twitch stream, your, this, that, and the third, because if you find that you are overwhelmed by all of these different types of content that you're creating, then you like, what's the plan for maintaining it and keeping it going over the long haul.  &lt;/p&gt;

&lt;p&gt;So it might be things like. Okay. I need to determine what specific types. So if content I'm actually going to create, so I don't know the nature of your business, but for my business, I try to focus it on content strategy, content creation, writing, things like that. I'm not going to talk about.  &lt;/p&gt;

&lt;p&gt;I'm not going to talk about visual design. I'm not going to talk about, I don't know, I'm not going to talk about, engineering management, because that doesn't align with my goals, As a business owner, but also what my audience needs. They don't need that for me. There are other people that do that, but what they do need from me are the things that, I've carved a nation.  &lt;/p&gt;

&lt;p&gt;So that's what you have to think about is You don't want to create content for content's sake. that a lot in content marketing. it's not everyone that does that, but that a lot, right? Oh, for SEO, we're just going to write like this beginner article. That's great. But is that something that people really need from me?  &lt;/p&gt;

&lt;p&gt;Are you actually addressing what they need? So your goal is to understand your user very well to know how to find out what it is that they need. From you, even if they can articulate that yet, and for you to present that solution and you're doing that, and you're trying to be as relevant and as close to the customer or the user as possible, as opposed to just blogging about like how beautiful the dandelions were outside and have that live aside, Next to a blog post that you're writing about JavaScript, for example, huh?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:27:10] Yeah, it makes a lot of sense. I think a lot of people hear blogging and they think about how some people do it or how it used to be like very early in the internet where it was just like, literally like my journal, but I'm going to publish it.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:27:24] Where now it   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:27:24] can just be, it could be something where, like you said, you can build up a brand, build up, help serve an audience, actually help people. And actually, could be something that if you're strategic could help you improve your business or career.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:27:39] Oh yeah, absolutely. I think, Early on in the internet, it was very much like a journal, Blogging was like a journal and it was like a trash can for all of your ideas. if you're, and it's not just if you're trying to build a business, but if you're trying to use your blog as a way of getting people to know who you are, what you're interested in, staying as close to staying.  &lt;/p&gt;

&lt;p&gt;Basically staying as close to topic to your main topics as possible is important. So one thing that I'll do, for example, with if we look at a content, got it, I'll go through my blog and I'll look at the blog posts that I've written in the past. The ones that high-performing the ones that aren't, and I will actively unpublished blog posts.  &lt;/p&gt;

&lt;p&gt;I've done it, especially because you know what I cared about, what I was interested in three years ago, doesn't necessarily all of it doesn't necessarily apply to what I'm trying to do today. So I want to make sure that the content that I do have there, all of it is useful no matter when it was published.  &lt;/p&gt;

&lt;p&gt;And that it's something that aligns with. With my brand, with my messaging, with my value proposition. if it quantity, isn't the thing with content strategy or even with blogging today is that I really believe that it's not about quantity, that it really is about quality. And for you to get to that quality, you just have, you have to know your audience very well.  &lt;/p&gt;

&lt;p&gt;And what your value prop is.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:28:57] So that led to another good question. What would you say are some of the things that. Can differentiate between low quality and high quality content.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:29:06] Yeah. Low quality. as when it comes to writing or anything content, it's all really subjective, right?  &lt;/p&gt;

&lt;p&gt;Like it's hard to, there aren't any hard measurements. but I think that there are specific aspects of writing that. That can for example, like posts that, that don't have any structure, that to me is something that's indicative of low quality or something that reads like it was stream of consciousness, where there are a lot of typos where, there are missing steps.  &lt;/p&gt;

&lt;p&gt;What that indicates to me is that the writer, was that the writer did not spend enough time after the initial drafting phase, trying to make sure that. What they created was something that was, that could be readily read it readily consumed by a user readily consumed, sorry, by a user. I find that posts that have been written really quickly where people don't check for like basic spelling or grammar, where you don't find headers or where the writer doesn't indicate what kind of, prerequisite knowledge somebody needs before they look at the article that tends to signal, something that, that was just quickly put together and put out.  &lt;/p&gt;

&lt;p&gt;So I always, I really strongly advocate that a lot of writers, They have somebody, it could be a friend even review a post just to help you get the perspective of the reader. what was somebody who did not know anything about what you wrote? How would they react to this if they were looking at it for the first time?  &lt;/p&gt;

&lt;p&gt;And I think that's an important thing for the writer to keep in the back of their mind. Oftentimes writers are very much in with reason, consumed with actually getting their thoughts to paper that they, are, they don't have enough. They don't actually save any kind of mental bandwidth to think about what this looks like.  &lt;/p&gt;

&lt;p&gt;From the readers perspective and getting someone who is looking at it with a fresh set of eyes, I think lends a lot of value and can actually help you improve your quality because they might not just spot typos and stuff, but they might actually find that you're missing information. That's crucial for the reader.  &lt;/p&gt;

&lt;p&gt;There are areas that are not very clear at all, that they were very confused by or frustrated by what you're trying to do is limit the distractions in your piece so that someone can read it and comprehend it and do whatever it is that you want them to do, which is why they're reading it. So if you're creating a tutorial, And it's hard.  &lt;/p&gt;

&lt;p&gt;This is easier said than done. You basically want to make sure that the writing you're creating, you're not actually creating any obstacles or roadblocks. You're trying to remove them through the course of the piece. those are just some things formatting and stuff like that.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:31:50] that makes a lot of sense or like that model of removing the distractions and removing the roadblocks.  &lt;/p&gt;

&lt;p&gt;who are some writers that you read a lot, that you find that you are really enjoyable, that really inspire you?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:32:04] Wow. Any kind of writers or folks in the tech space,   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:32:06] any kind of writers,   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:32:08] I'm a big fan of Paul Ford's writing. Paul Ford wrote the, the Epic article. What is code five years ago and Bloomberg.  &lt;/p&gt;

&lt;p&gt;And any time I read his writing, I quite enjoy it. the folks at his agency, pulse light, I find that they write really great content. That I enjoy reading. I enjoy reading a lot of Amy Hoy's writing. It's a lot of personality in her writing. And I find that her writing is very conversational, which is excellent.  &lt;/p&gt;

&lt;p&gt;It takes you, it's like it's a narrative. A lot of her writing is very much a narrative structure and it's almost like she's talking to you. And she does that in a way. That's really excellent in terms of. Technical content. they're not specific writers, but specific companies that I like. I really like mode analytics.  &lt;/p&gt;

&lt;p&gt;I looked at mode's SQL documentation a few months ago when I was trying to learn SQL myself. And I found that there, their cul basics tutorial was just fantastically we're in. And I felt I. Understood a lot of concepts that I had trouble understanding with other tutorials with them. And I will always go back to digital oceans tutorials.  &lt;/p&gt;

&lt;p&gt;I haven't worked there for two years, so I have no skin in the game, but I will tell you that their technical writing is absolutely top notch. and I always point people to their writing.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:33:22] Yeah. And I th I think it's in your book. We'll include the link here. I think they have some guides on how they ask people to write.  &lt;/p&gt;

&lt;p&gt;There are two doors lock invitations that you can use yourself, which are super helpful   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:33:34] for sure.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:33:35] Yup. Something else I'll throw out to the user. There's a lot of companies out there you can find they'll have some documentation on their writing or their style guides to, do they use internally?  &lt;/p&gt;

&lt;p&gt;I know, I don't know if it's still up. I know MailChimp has a, they had a style guide up. That was a really fascinating, great it's incredibly well thought out and they're known for it.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:33:57] Yeah, it was the MailChimp content style guide. And that was a, that was actually considered like a, like the golden state standard, even if for a lot of content strategists because of the, just the nature of their style guide and how they broke everything down.  &lt;/p&gt;

&lt;p&gt;the fact that they made that available to the public, which is also really awesome. It's a lot of times companies will make style guides proprietary and they'll keep it internally. So it's nice to see how other companies approach their style guides. in terms of like technical documentation, get lab also PR also publishes their style guide.  &lt;/p&gt;

&lt;p&gt;Microsoft does, and Google also makes their technical writing style guide available to the public. So there are quite a number of style guides out there already that. Are awesome for folks who are just trying to understand the, or see some examples of really good writing and apply that in their own writing.  &lt;/p&gt;

&lt;p&gt;And the great thing is that because they make it available, you can apply those same, those same concepts and those same writing styles to your own work.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:34:55] Yep. Sounds good. All right. we'll, for the listener, I'll be sure to dig up as many of these as I can. We'll listen to them all be in the show notes and also that Stephanie, people want to find out more about you and what you're doing, where can they find you online?  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:35:06] You can find me on Twitter &lt;a class="mentioned-user" href="https://dev.to/radiomorillo"&gt;@radiomorillo&lt;/a&gt; that's R our ADI O M O R I L O. And you can find me at stephaniemorillo.co  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:35:14] Alright, and then, did you have anything else you want to plug at this time?   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:35:18] Nope, that's about it. I'm always welcome to. Chatting with folks online. So if you have any content questions and such, please feel free to reach out to me, I would be happy to help.  &lt;/p&gt;

&lt;p&gt;All right.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Glenn Stovall:&lt;/strong&gt; [00:35:27] Sounds good. Thank you very much.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stephanie Morillo:&lt;/strong&gt; [00:35:29] Thank you.&lt;/p&gt;

</description>
      <category>writing</category>
      <category>podcast</category>
    </item>
    <item>
      <title>How to decide when to build software vs. when to buy</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Wed, 19 Aug 2020 07:38:00 +0000</pubDate>
      <link>https://dev.to/gsto/how-to-decide-when-to-build-software-vs-when-to-buy-dpe</link>
      <guid>https://dev.to/gsto/how-to-decide-when-to-build-software-vs-when-to-buy-dpe</guid>
      <description>&lt;p&gt;All software choices fall somewhere on the &lt;strong&gt;build-buy spectrum,&lt;/strong&gt; &amp;amp; all companies fall somewhere on the ‘tech company’ spectrum. A piece of technology’s ubiquity, price, and proximity to a company’s core competency all play a factor in where it fits on this spectrum.&lt;/p&gt;

&lt;p&gt;In this article, you’ll learn about what factors go into a build or buy decision, so you can make a more informed choice that fits your company’s needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The far ends: clear buys and builds
&lt;/h2&gt;

&lt;p&gt;On the far end of the “buy” spectrum is software that is relatively cheap and solves problems that most businesses have, like GSuite and Microsoft Office. It would not make any sense for, say, a logistics company to build a word processor. &lt;/p&gt;

&lt;p&gt;On the other end of the spectrum, we have software that solves unique problems and adds business value. These are clear builds. If that same logistics company had a unique process that enabled them to process deliveries more efficiently, and therefore provide better rates to their customers, it would make sense to build software for their process, since an off-the-shelf solution by definition could not exist. &lt;/p&gt;

&lt;h2&gt;
  
  
  In the middle: consultingware and integrationware
&lt;/h2&gt;

&lt;p&gt;In the middle we have solutions built on customization and integration.&lt;/p&gt;

&lt;p&gt;Some companies sell “ &lt;strong&gt;consultingware&lt;/strong&gt; “, software that has a cheap base price, which is then used as a platform for the company to build more expensive custom software on top of for you. This is what I did at my first salaried job after college. The company would sell $5,000/year licenses for a bare-bones platform. Then the salespeople would talk them into custom-built add-ons for an additional $25,000 – $50,000.&lt;/p&gt;

&lt;p&gt;Next, is solutions built around integrating several other off-the-shelf solutions that can work together. Then, closer to building your own software, you build and own custom integrations that interact with an off-the-shelf solution in particular ways. Look at an agency like &lt;a href="https://6kites.com"&gt;6kites&lt;/a&gt; or &lt;a href="https://www.neurored.com/"&gt;neurored&lt;/a&gt; to see an example of a company that deals with this kind of work, which I’ll term “ &lt;strong&gt;integrationware&lt;/strong&gt;.” &lt;/p&gt;

&lt;p&gt;Both are a mix of buying something that already exists, and then “buying the building” by hiring a 3rd party to do additional work on top of that.  &lt;/p&gt;

&lt;p&gt;The key difference here is ownership of the software. In consultingware, the company maintains ownership of the product, and sells licenses with an audience of 1. With integrationware, you typically own part of the platform, which integrates with an external service.&lt;/p&gt;

&lt;p&gt;At the ends of the spectrum, the decision is easy: It makes no sense to build your own generic solutions, and you can’t buy solutions that don’t exist.&lt;/p&gt;

&lt;p&gt;Where things get interesting is in the middle, and deciding where in the middle you fall. It’s usually not a question of “build or buy” but &lt;strong&gt;how much of the solution needs to be built vs bought?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: Should a restaurant bake or buy dessert?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d8IW09qQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://glennstovall.com/wp-content/uploads/2020/08/american-heritage-chocolate-vdx5hPQhXFk-unsplash-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d8IW09qQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://glennstovall.com/wp-content/uploads/2020/08/american-heritage-chocolate-vdx5hPQhXFk-unsplash-1.jpg" alt="" width="880" height="681"&gt;&lt;/a&gt;Photo by &lt;a href="https://unsplash.com/@americanheritagechocolate?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;American Heritage Chocolate&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/cake?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine running a restaurant and deciding how you are going to serve dessert. You could buy pre-made cakes from the frozen food section. You could partner with a local bakery and sell their product. If you have in house baking expertise, you could buy eggs, flour, and sugar and bake them in-house. An extreme take on the “from scratch” cake would involve adding a farm to your restaurant, where you can raise egg-laying chickens and grow your own grain.&lt;/p&gt;

&lt;p&gt;If you think that the last example is unrealistic, let me introduce you to the &lt;a href="https://lupi.com/flying-turtle-farm"&gt;pizza farm&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Factors to consider:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Available Resources&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When you have more internal IT expertise and less available cash, building solutions makes more sense. You’ll lean towards buying when the inverse is true. When you’re company doesn’t have the internal IT resources needed to build software, you either have to bring in outside agencies and contractors, or increase that competency by hiring new people. &lt;/p&gt;

&lt;h3&gt;
  
  
  Risk
&lt;/h3&gt;

&lt;p&gt;When you buy software off the shelf, the most significant risk is the death of the vendor relationship. When you build software internally, the most significant risk is failure to launch. Once you buy an off the shelf solution, you have some vendor lock-in. That means you have taken on some risk with that vendor, and have to consider the possibility that one or more of the following possible: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The vendor goes out of business. &lt;/li&gt;
&lt;li&gt;The vendor decides to stop supporting the software. &lt;/li&gt;
&lt;li&gt;The vendor is acquired, and the service agreement changes drastically. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can avoid this by building software you have total ownership and control over, but that comes with not only costs, which we’ll get to in a bit, but also its own set of risks. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The project is never finished. &lt;/li&gt;
&lt;li&gt;The project takes longer than expected. &lt;/li&gt;
&lt;li&gt;Requirements aren’t clear, and the project doesn’t deliver the results needed. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One puts the risk internally, the other puts the risk externally. Also consider that if you hire a 3rd party to build your internal tool, you can end up in a situation where you have the &lt;strong&gt;risk of both&lt;/strong&gt; &lt;em&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Total Cost of Ownership
&lt;/h3&gt;

&lt;p&gt;This can be the most difficult one to determine. That’s one of the strengths of going with a pre-built solution, is that you know &lt;strong&gt;what you are getting and when you can get it&lt;/strong&gt;. When building your own solution, both of these are known unknowns. While there are ways to &lt;strong&gt;reduce the risk and variance in a software project&lt;/strong&gt; , you can’t fully eliminate those problems.&lt;/p&gt;

&lt;p&gt;When you own your own software, there are some costs that may not be immediately apparent: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hosting&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Maintenance&lt;/li&gt;
&lt;li&gt;Backups&lt;/li&gt;
&lt;li&gt;Just to name a few&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bought solutions can also have some unpredictability in pricing. First, there is negotiating with the vendors, which could land you a deal based on how long sign up to use the service.&lt;/p&gt;

&lt;p&gt;Then you have to consider the unit of measure that determines the price. For example, Slack bills on a per-user basis. How accurately can you estimate how many people be working at your company for six or twelve months from now? You probably have some idea, and can gauge how much it will cost. However, if the pricing unit of measure is something out of your control, like website traffic, you could end up with an unexpectedly high bill. &lt;/p&gt;

&lt;p&gt;As a general rule, the cost of ownership of maintaining software that you actually &lt;em&gt;own&lt;/em&gt; is going to be higher. But at some points, that may not be the case. You could end up paying for 100% of a solution where you only need 20% of the features. That coupled with the extra time trying to figure out how to get a generic solution to fit your specific requirements and processes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time to Launch
&lt;/h3&gt;

&lt;p&gt;How quickly do you need a solution? &lt;/p&gt;

&lt;p&gt;As a general rule, &lt;strong&gt;buying&lt;/strong&gt;  &lt;strong&gt;off-the-shelf software is faster than building something yourself&lt;/strong&gt;. As another general principle, there is a &lt;strong&gt;time-value of software&lt;/strong&gt; : Solutions you have today are more valuable than solutions you have tomorrow.&lt;/p&gt;

&lt;p&gt;However, with building software, the time to value does not have to be binary. The software can deliver partial value over time if you are doing it right.&lt;/p&gt;

&lt;p&gt;Accomplishing this requires a developer or team that understands the difference between building &lt;a href="https://basecamp.com/gettingreal/05.1-half-not-half-assed"&gt;half-products and half-assed ones&lt;/a&gt;. Software is never done and typically turns into an infinite project, living as long as the business itself.&lt;/p&gt;

&lt;p&gt;Scale matters here as well. Sometimes a script knocked out in a day can be more efficient than integrating a 3rd party tool that takes weeks of configuration and importing to start delivering value. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Core Competencies&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The closer the solution aligns with your core competency, the more sense it makes to build something yourself.&lt;/p&gt;

&lt;p&gt;How closely does the solution line up with your core competencies? Will building custom software give you a competitive advantage, and increase the value you can deliver to your customers? How quickly and with what quality can you actually build the thing? If you can answer yes to one or more of these, then you may have a case for building a custom solution. &lt;/p&gt;

&lt;p&gt;For example: banks and telecom companies. They have unique needs, and building custom internal solutions make sense. But most companies have technology as part of their offering, so at some point, building your own tech is inevitable. &lt;/p&gt;

&lt;h3&gt;
  
  
  Business Processes
&lt;/h3&gt;

&lt;p&gt;Your technology is only as good as your workflow.&lt;/p&gt;

&lt;p&gt;How unique are your business processes? You have to have alignment with your processes, and commercial off-the-shelf tools. When building software, getting alignment should be easier, as you can make all of the design decisions. &lt;/p&gt;

&lt;p&gt;If there are several off the shelf options available, and none of them match your business practices, that could be a sign of process smell. If everyone is doing everything differently than you and you cannot identify an advantage to your unique approach, then there may be room for optimization in your own processes.&lt;/p&gt;

&lt;p&gt;Adopting a new tool alone can’t change your business processes, but it can help.&lt;/p&gt;

&lt;p&gt;The scale of your company matters as well. The larger your company, the more complex building a solution is. When you are smaller and more niche, You can build products faster. &lt;/p&gt;

&lt;p&gt;Before making a buy or build decision, consider how the software would affect your day-to-day processes. &lt;/p&gt;

&lt;h2&gt;
  
  
  Finally, tackling the decision
&lt;/h2&gt;

&lt;p&gt;If you find yourself having this conversation at your company, that’s a good sign. It means that your organization doesn’t have “&lt;a href="https://en.wikipedia.org/wiki/Not_invented_here"&gt;not invented here syndrome&lt;/a&gt;“, and that it is willing to look at multiple options for solutions. &lt;/p&gt;

&lt;p&gt;The answer depends on your stockpile of resources and your risk tolerance. Do some homework and try to figure out what solutions are available, and what the total cost of ownership would be. Regardless of what direction you decide to move, these are typically decisions with real ramifications in your business. New technology requires integration and buy-in; you want to make sure you are making the right decision before moving forward.  Here are some questions to ask yourself when considering whether or not to build or buy software: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much are we looking to invest in this solution? &lt;/li&gt;
&lt;li&gt;Do we have the IT resources in house to build and maintain a solution? If not, could we get them? &lt;/li&gt;
&lt;li&gt;Would the technology affect the value we deliver to customers? In what ways? &lt;/li&gt;
&lt;li&gt;How willing are we to change our processes to better fit into commercial off-the-shelf solutions? &lt;/li&gt;
&lt;li&gt;What is this solution going to look like in 12 months? How will it be better? Worse? &lt;/li&gt;
&lt;li&gt;How urgent is the problem? &lt;/li&gt;
&lt;li&gt;What features do we &lt;em&gt;not&lt;/em&gt; need? How does an in-house half-product compare to a feature-rich generic solution? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The post &lt;a href="https://glennstovall.com/how-to-decide-when-to-build-software-vs-when-to-buy/"&gt;How to decide when to build software vs. when to buy&lt;/a&gt; appeared first on &lt;a href="https://glennstovall.com"&gt;Glenn Stovall&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>techstrategy</category>
      <category>techdecisions</category>
    </item>
    <item>
      <title>Stop fighting holy wars</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Fri, 31 Jul 2020 11:37:55 +0000</pubDate>
      <link>https://dev.to/gsto/stop-fighting-holy-wars-699</link>
      <guid>https://dev.to/gsto/stop-fighting-holy-wars-699</guid>
      <description>&lt;p&gt;There are many “holy wars” in tech, and you’d be best served to stop participating in them. These discussions are bikeshedding: Spending an outsized amount of time and energy on trivial details. And when talking in public, they don’t paint you in a good light.&lt;/p&gt;

&lt;p&gt;In sport, they can be fun. However, I think getting involved in them, especially in public online spaces, can be detrimental to your career.&lt;/p&gt;

&lt;p&gt;The developers that spend time talking about these issues are not the developers that get the opportunities to work in a higher context. As Patrick MacKenzie says, &lt;a href="https://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/"&gt;don’t call yourself a programmer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here’s a list of conversations you should avoid, both online and offline.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ban List
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Is HTML/CSS/SQL “coding”?
&lt;/h4&gt;

&lt;p&gt;Yes. They are all Turing complete. It doesn’t matter if they aren’t. Instead of focusing on what “real coding” is, focus on how people use tools to solve problems. Excel isn’t “coding” but there are sheets out in the wild worth millions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Is Frontend or backend more difficult?
&lt;/h4&gt;

&lt;p&gt;This isn’t a video game, and you don’t get points for playing on a higher difficulty level. Backend developers have to think more about scalability and security, while developers on the front lines have to work in the wild west that is every conceivable browser and phone.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Tabs vs. Spaces&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;The “oxford comma” of software development. Most text editors and IDEs can abstract this away from you. Get your team to agree on something, and stick with it.  “What I prefer tabs but the rest of the team prefers spaces?” Then you use spaces.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;snake_case vs. camelCase&lt;/strong&gt;   &lt;/p&gt;

&lt;p&gt;Same as above. These are the types of syntactic decisions that don’t affect readability or maintainability. As long as everyone agrees, either one is _fine. _&lt;/p&gt;

&lt;h4&gt;
  
  
  when to squash and rebase commits
&lt;/h4&gt;

&lt;p&gt;I’ve honestly looked at a git history maybe half a dozen times in my career. So long as the code works and is delivering value, I have no interest in the structure of that code’s origin story. &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Vim vs. Emacs&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Use whatever tools you are most comfortable with, and let others do the same in peace.&lt;/p&gt;

&lt;h4&gt;
  
  
  My Framework/Language/OS of choice is better than yours.
&lt;/h4&gt;

&lt;p&gt;Do not identify with a technology choice. Frameworks come into fashion and fall out. Like code editors, use what you like and allow others to do so in peace.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;That Framework/Language/OS is garbage! Why would anyone use that?&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;A more negative framing of the issue above. JavaScript, WordPress, and PHP are the most common targets. Why do people still use these tools if they are so poor? Because they get the job done. Let the people using these tools continue to get the job done. &lt;/p&gt;

&lt;h4&gt;
  
  
  “Rails is dead”
&lt;/h4&gt;

&lt;p&gt;The shortage of COBOL developers in 2020 proves that no technology is ever truly dead. Tell Airbnb, Shopify, Twitch, and Github that Rails is dead. A language’s popularity does not correlate to its quality. People still use Rails (and COBOL) because it gets the job done. &lt;/p&gt;

&lt;h2&gt;
  
  
  What to do Instead
&lt;/h2&gt;

&lt;p&gt;I would make an exception if someone, especially someone more junior asks about these in good faith. On Reddit, Twitter, with random people is not the place to debate. It’s rare that you’ll actually change anyone’s mind on one of these issues. In the worse cases, you’re tearing someone else’s work and worldview down. Treat these conversations as profane. When you see them, walk away. &lt;/p&gt;

&lt;p&gt;Instead of trying to persuade people, invest time in teaching them.&lt;br&gt;&lt;br&gt;
Instead of tearing other people and tools down, build other people up. Go give a shoutout to a manager about a co-worker, or tweet an article you found interesting.&lt;/p&gt;

&lt;p&gt;And if you have a suggestion for another argument I should add to the banned list?&lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://glennstovall.com/stop-fighting-holy-wars/"&gt;Stop fighting holy wars&lt;/a&gt; appeared first on &lt;a href="https://glennstovall.com"&gt;Glenn Stovall&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>technology</category>
    </item>
    <item>
      <title>What have you always wanted to ask a recruiter but couldn't?</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Thu, 09 Jul 2020 11:51:25 +0000</pubDate>
      <link>https://dev.to/gsto/what-have-you-always-wanted-to-ask-a-recruiter-but-couldn-t-le9</link>
      <guid>https://dev.to/gsto/what-have-you-always-wanted-to-ask-a-recruiter-but-couldn-t-le9</guid>
      <description>&lt;p&gt;Hey everyone! Is there anything you've ever wanted to ask a recruiter, but you didn't because of how it might affect the relationship? Or maybe its because there wasn't a good time or place to ask. Well, now's your chance. &lt;/p&gt;

&lt;p&gt;I host &lt;a href="https://www.productionreadypod.com/"&gt;Production Ready&lt;/a&gt;, a podcast that helps developers grow their professional skills. We're doing an "AMA" with a recruiter in an upcoming episode, so now's your chance to ask those questions! &lt;/p&gt;

&lt;p&gt;Some questions I've been thinking about: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much do you get paid per hire? &lt;/li&gt;
&lt;li&gt;How often do developers go "around" you, and try to get the job themselves? &lt;/li&gt;
&lt;li&gt;Do people actually accept jobs at companies not knowing what company they are? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'll be sure to give you a shoutout if we use your question. &lt;/p&gt;

&lt;p&gt;What do you want to ask the recruiter? &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>My best developer interview experience</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Thu, 02 Jul 2020 11:57:53 +0000</pubDate>
      <link>https://dev.to/gsto/the-best-developer-interview-i-ve-experienced-k03</link>
      <guid>https://dev.to/gsto/the-best-developer-interview-i-ve-experienced-k03</guid>
      <description>&lt;p&gt;There are many less-than-ideal practices when it comes to interviewing software developers. Some people give &lt;a href="https://glennstovall.com/white-board-interview/"&gt;whiteboard interviews&lt;/a&gt;, which treat your craft like trivia and put you spot. Others provide you with take-home projects that can seem like free labor. Developers looking for work don’t have time to spend 5-10 hours working on a project that only one company will see. In the worst cases, candidates write code, and then the interviewing company uses it in production without compensation. &lt;/p&gt;

&lt;p&gt;I read frustration online, but I don’t see a lot of positive experiences. I wanted to share the best interview experience I’ve had, as I feel it could be a model for companies to both accurately gauge developer’s skills while treating them fairly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Minimum Viable Contract-to-Hire
&lt;/h2&gt;

&lt;p&gt;After an initial interview, the company offered a small project. It didn’t require any development environment other than a static HTML page. The estimated time for the effort was one hour, and the elapsed time for completion was three days. Within this timeframe, I could complete the work without pressure while still showing that I could stick to deadlines.&lt;/p&gt;

&lt;p&gt;They paid me $100 for this.&lt;/p&gt;

&lt;p&gt;The company understood that developers are busy and should deserve compensation for work. The requirements were clear and overly specific. It was more akin to a hack you would in place for one ornery customer than production-ready code.&lt;/p&gt;

&lt;p&gt;I was freelancing at this time and considered mass applying to jobs to land several tiny gigs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: On to the written portion of the exam
&lt;/h2&gt;

&lt;p&gt;The second part of the assignment was writing a 2-3 paragraph essay about how I would approach generalizing the feature and turning it into extendable, usable production code. In addition to testing that I could think about writing quality code and software architecture, this part also gave me a chance to display my writing and communication skills. Writing a clear summary of an idea is closer to what you’ll be doing at your job than a coding exercise written with a marker.&lt;/p&gt;

&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;p&gt;While I didn’t get the job, I left feeling great about the people, the company, and the interviewing experience. I think one reason we struggle with interview processes is that unlike other parts of working in software, its much less open. I hope that by sharing this experience, I give some other companies some ideas on how to improve their processes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Shorter professional dev thoughts available on Twitter: &lt;a href="https://twitter.com/gsto"&gt;@GSto&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>interview</category>
    </item>
    <item>
      <title>How software can be racist (and what you can do to stop it)</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Tue, 16 Jun 2020 16:19:58 +0000</pubDate>
      <link>https://dev.to/gsto/how-software-can-be-racist-and-what-you-can-do-to-stop-it-1c3a</link>
      <guid>https://dev.to/gsto/how-software-can-be-racist-and-what-you-can-do-to-stop-it-1c3a</guid>
      <description>&lt;p&gt;&lt;em&gt;Quick top-hat: This article originally appeared on &lt;a href="https://glennstovall.com/how-software-can-be-racist/"&gt;glennstovall.com&lt;/a&gt;; You can also listen to this essay on the &lt;a href="https://www.productionreadypod.com/4"&gt;Production Ready podcast&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Software is powerful and can shift the balance of power in society. Look at how social media has impacted how we talk about politics, and everything else for example. If politics is the negotiation of power in society, then software is inherently political. If software is powerful, then we, as people who make software, have power. Software can be racist, and as software developers, I believe we all have a responsibility to use our power to prevent racist software from existing.&lt;/p&gt;

&lt;p&gt;If this topic makes you uncomfortable, I ask that you don’t stop just yet. Pause and ask yourself why you feel that way. We all have decisions we have to make, and these topics are unavoidable. Get comfortable being uncomfortable. &lt;/p&gt;

&lt;p&gt;Part of why conversations about race are challenging is that we aren’t working from a shared vocabulary. So, I want to clarify a few terms upfront. I’m borrowing my terminology here from &lt;a href="https://www.amazon.com/dp/B07638ZFN1/"&gt;White Fragility: Why It’s So Hard for White People to Talk About Racism.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The difference between prejudice, discrimination, and racism
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prejudice&lt;/strong&gt; consists of thoughts, feelings, and generalizations based on little to no experience and then projected onto a group of people. Everyone has prejudices, whether its against people of a certain race, gender, where they are from or where they went to school. If you deny that prejudices exist in others or yourself, then you are powerless to correct them. Prejudice is internal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discrimination&lt;/strong&gt; is an external action based on prejudice, including ignoring, exclusion, threats, ridicule, slander, and violence.&lt;/p&gt;

&lt;p&gt;What distinguishes Racism from discrimination is that it is backed by legal authority and institutional control. It comes from a system of power that acts independently and above the actions of any individual, company, or piece of technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Racism&lt;/strong&gt; is hard to define and hard to talk about. It isn’t just people in white hoods committing acts of violence. It’s complicated, and it’s vague. You may imagine “racist” as someone who openly does and says things targeting people. But racism doesn’t have to be overt. It can be subtle. It can happen unintentionally. That’s why it’s easy for people in places of privilege to ignore. Like prejudice, if we don’t do work to acknowledge, identify, and talk about racism, we can’t do anything to stop it. “The greatest trick the Devil ever pulled was convincing the world he didn’t exist.”&lt;/p&gt;

&lt;p&gt;Any act of discrimination that props up this system and maintains it as the status quo is de facto racist. Understand when you work on software, it could be racist, and you have a responsibility to prevent that from happening.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can technology be racist?
&lt;/h2&gt;

&lt;p&gt;When we build software, we make conscious and implicit choices about how we imagine the end-user, what data we will use, and how the algorithms work. Since everyone has unconscious biases and prejudice, there is a possibility they influence said decisions. Coding biases into software is known as “algorithmic bias.” This bias is most apparent when we look at attempts to use machine learning classification algorithms on other people, such as facial recognition.&lt;/p&gt;

&lt;p&gt;When engineers on the Google photos team built a system to tag photos automatically, &lt;a href="https://www.theverge.com/2018/1/12/16882408/google-racist-gorillas-photo-recognition-algorithm-ai"&gt;it tagged black people’s faces as ‘Gorilla’ or ‘Chimp.’&lt;/a&gt; Google’s response was to remove those words as valid tags instead of fixing the root cause.&lt;/p&gt;

&lt;p&gt;In her &lt;a href="https://www.ted.com/talks/joy_buolamwini_how_i_m_fighting_bias_in_algorithms"&gt;TEDx talk, Joy Buolamwini&lt;/a&gt; speaks about the discrimination she faced using facial recognition software. It couldn’t recognize her at all. Joy ran into this problem with multiple systems. She discovered they were all based on the same open-source libraries and data sets. I’ll give the developers that built these tools the benefit of the doubt and assume they didn’t mean to create software that ignores black people. But it doesn’t matter. In this situation, the outcome is more important than the intent. &lt;/p&gt;

&lt;p&gt;Software can also enforce existing discrimination polices. If your company has a history hiring people of a particular race or gender, and then use their resumes as training data for software that judges incoming candidates, you’ll end up with a system that has the same prejudices. &lt;a href="https://www.aclu.org/blog/womens-rights/womens-rights-workplace/why-amazons-automated-hiring-tool-discriminated-against"&gt;Amazon did exactly this&lt;/a&gt; when they built a system that discriminated against women in the hiring process and later faced legal action because of it.&lt;/p&gt;

&lt;p&gt;Police departments have used a software tool called Compas before that claims it used to identify suspects and predict recidivism rates. Studies show that it’s not only &lt;a href="https://assets.documentcloud.org/documents/2850196/Face-Recognition-Performance-Role-of-Demographic.pdf"&gt;more likely to be incorrect about black suspects but more likely to be used against them&lt;/a&gt;. Here there is discrimination not only in the software itself but how the customers of the software use it.&lt;/p&gt;

&lt;p&gt;Racism in software can also take the form of digital redlining. You abstract away discrimination by making decisions based on zip code. Delivery services such as Uber Eats and Doordash are less likely to service predominately black neighborhoods. Those neighborhoods, on average, &lt;a href="https://www.parkersoftware.com/blog/racism-in-technology-how-our-tools-acquire-bias/"&gt;have fewer Pokestops in Pokemon Go.&lt;/a&gt; The data doesn’t have to include specific data points about race to disproportionately affect people of race. Machine learning is all about finding patterns, after all.&lt;/p&gt;

&lt;p&gt;See how it works? When the data doesn’t explicitly involve race, everyone who built these systems is allowed to either remain ignorant or has plausible deniability about how their software might affect minorities. We have to assume that what we build could potentially have negative consequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Software can’t abstract away the humans behind it
&lt;/h2&gt;

&lt;p&gt;We can’t hold on to a romantic view that technology is purely logical and immune to humanity’s shortcomings. We can’t assume that since computers don’t think and feel, they can’t be biased. Or that we can overcome our biases by being “data-driven.” Our biases shape the design of software, and that software repeats our mistakes. Data can never be entirely objective; our biases, which bears repeating, &lt;em&gt;everyone&lt;/em&gt; has, will seep in via decisions influencing what data we collect, what data we ignore, and how we interpret it.&lt;/p&gt;

&lt;p&gt;Technology is a reflection of who builds it.&lt;/p&gt;

&lt;p&gt;According to a &lt;a href="https://www.theguardian.com/technology/2017/dec/04/racist-facial-recognition-white-coders-black-people-police"&gt;2011 study by the National Institute of Standards and Technologies&lt;/a&gt; shows that facial recognition software built by Asian software companies was more likely to be accurate at identifying Asian faces. Who creates the software has an impact on how it works.&lt;/p&gt;

&lt;p&gt;More diverse teams equal fewer blind spots and fewer errors like the ones above, making it to production, or worse, the news. Diversity is a competitive advantage. Creating a more diverse team isn’t about doing it to be “fair”; it is about bringing more information and insight to that table than homogeneous teams can. &lt;/p&gt;

&lt;p&gt;As Rachel Goodman, a staff attorney &lt;a href="https://www.politico.com/agenda/story/2018/02/07/algorithmic-bias-software-recommendations-000631/"&gt;for the ACLU’s racial justice program, told Fast Company&lt;/a&gt;: “Many of the ill effects are not intentional. It comes from people designing technology in closed rooms in close conversations and not thinking of the real world.&lt;/p&gt;

&lt;p&gt;Do you remember Tay? Microsoft’s attempt at an AI-powered Twitter bot? In 2016, Microsoft launched a Twitter bot that would model its behavior based on the tweets of people that interacted with it. &lt;/p&gt;

&lt;p&gt;I bet you can guess where this story is going. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Tay is designed to engage and entertain people where they connect with each other online through casual and playful conversation,” Microsoft said. “The more you chat with Tay, the smarter she gets.” &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can’t invite a group of people to do anything on the internet, without attracting trolls. In less than a day, Tay was spouting rhetoric about how “Hitler was right” and “9/11 was an inside job.” &lt;a href="https://www.theguardian.com/technology/2016/mar/24/tay-microsofts-ai-chatbot-gets-a-crash-course-in-racism-from-twitter"&gt;Microsoft has to shut the project down in short order.&lt;/a&gt;&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
    &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__two-pics"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xu8nDrm2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/CeSpN5oWAAEIu_o.jpg" alt="unknown tweet media content"&gt;
    &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--UfYY84iZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1081149202904756224/QcHFkYub_normal.jpg" alt="gerry profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        gerry
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @geraldmellor
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      "Tay" went from "humans are super cool" to full nazi in &amp;lt;24 hrs and I'm not at all concerned about the future of AI 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      05:56 AM - 24 Mar 2016
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=712880710328139776" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=712880710328139776" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=712880710328139776" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;This story is more of a warning of giving trolls opportunity than anything else; the main lesson still stays the same: artificial intelligence only knows what we tell it, and only acts based on our instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  As software developers, what can we do?
&lt;/h2&gt;

&lt;p&gt;Systemic racism is complicated and insidious. It doesn’t come from one place. It comes from everywhere. It happens automatically from systems put in place before we were born and continues to spread through American society through hateful acts and maintaining an inequitable status quo.&lt;/p&gt;

&lt;p&gt;As software developers, we can shape the tools that directly impact people’s lives, or if they get built at all. This power means that we have a choice to make: Are you going to take action, or are you going to be complicit?&lt;/p&gt;

&lt;p&gt;There are no two ways about this decision, nor is there any avoiding it. The work you do has an impact on the world, full stop. The nature of that impact is up to you.&lt;/p&gt;

&lt;p&gt;Outside of your job, there are actions that anyone can take, regardless of job title. Get out in the streets. &lt;strong&gt;&lt;a href="https://nymag.com/strategist/article/where-to-donate-for-black-lives-matter.html"&gt;Donate your time or money&lt;/a&gt;&lt;/strong&gt;. Vote.&lt;/p&gt;

&lt;p&gt;As a software developer, you can advocate for change at your job. We need to be more skeptical of our data sources and cynical about the use cases and effects of what we build. So you should ask yourself: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are the data sets you are using accurate? How can you be sure? &lt;/li&gt;
&lt;li&gt;In the worst-case scenario, are there ways our software could disproportionately impact a specific group of people? (This includes accessibility, by the way.)&lt;/li&gt;
&lt;li&gt;Do we hear a diverse set of voices, both before and after building our product?&lt;/li&gt;
&lt;li&gt;If you are a manager, are you hiring a diverse team? And if not, why not? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the types of questions we all need to be asking more. Technology is not amoral, and it is not apolitical. Despite all of these stories, I still believe that’s influence can be used for positive change. But that can only happen if we collectively start doing business differently than we have up to this point. So I’d like to take this opportunity to ask you: &lt;/p&gt;

&lt;p&gt;What are you going to do differently? &lt;/p&gt;

</description>
      <category>career</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Quarantine work is not remote work</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Thu, 23 Apr 2020 20:07:30 +0000</pubDate>
      <link>https://dev.to/gsto/quarantine-work-is-not-remote-work-5bdg</link>
      <guid>https://dev.to/gsto/quarantine-work-is-not-remote-work-5bdg</guid>
      <description>&lt;p&gt;I’ve worked remotely for nearly a decade: Either self-employed or at a job, it was always completely or partially remote. I can count myself as blessed during the current situation; I have a full-time job in an industry that hasn’t taken much of a hit. My job, knock on wood, is safe. I know others haven’t been so lucky. People are moving to remote work unprepared and without a choice. That is if they still have work at all.  If you’re someone who has been working remote for a while or if its new to you, your problems may not be as big as others but that doesn’t mean they aren’t real. &lt;/p&gt;

&lt;p&gt;Working from home, even in the best conditions, comes with trade-offs. Without systems in place at a personal and organizational level, during a global pandemic, it stinks. People are stressed, burned out, and finding it difficult to get work done right now. It isn’t remote work itself and isn’t you. As someone with nearly a decade’s experience working from home, I can tell you with confidence that this is different, even though my day-to-day job hasn’t changed at all. I’ve been feeling more stressed, burned out, and struggling to be as productive as I did before. And I know I’m not alone. &lt;/p&gt;

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

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



&lt;/p&gt;

&lt;p&gt;Why does working from home during a shelter-in-place policy hit so different than working from home normally? &lt;/p&gt;

&lt;h2&gt;
  
  
  We’re all dealing with external stress
&lt;/h2&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%2Fglennstovall.com%2Fwp-content%2Fuploads%2F2020%2F04%2FOE2HNGA39iTeE5aJPcwL8RjBn0yJwQs6DszHtgrKFf0.jpg" 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%2Fglennstovall.com%2Fwp-content%2Fuploads%2F2020%2F04%2FOE2HNGA39iTeE5aJPcwL8RjBn0yJwQs6DszHtgrKFf0.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every news cycle greets us with a fresh hell: More people are dying, more industries are struggling; Everyday it’s clear we are still in act one of the horror movie, where the leaders are ignoring the scientists. The news permeates every channel, social media platform, and discussion. Its inescapable, and something thats going to weigh on your mind when you’re trying to get work done.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/4PLvdmifDSk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  There’s no escape
&lt;/h2&gt;

&lt;p&gt;Working remotely is not the same as working from home. Working remotely means you can work from anywhere. Its often at home, it’s not on the beach like an Instagram influencer (I’m not about getting sand in my Macbook), but it is about being able to work from a co-working space or a coffee shop once in a while. Before, when working from home I made it a point to go to a coffee shop at least once a week because I knew how important it is was to be around people. That’s no longer an option. And when work was done, there were places to go to blow off steam: the gym in the morning, &lt;a href="http://huttonandsmithbrewing.com/" rel="noopener noreferrer"&gt;the brewery&lt;/a&gt; at night. Also gone. The biggest difference between quarantine work from home and business, as usual, is choice.&lt;/p&gt;

&lt;p&gt;Now workouts are limited to runs and what few weights we have; Happy hours happen exclusively on Zoom.&lt;/p&gt;

&lt;h2&gt;
  
  
  Everyone is home all the time.
&lt;/h2&gt;

&lt;p&gt;I couldn’t imagine having children right now. I don’t know how parents are getting anything done these days. Everyone having a lack of choice means we are all trying to cram our life together in new ways. For example, my wife would play roller derby three times a week, which gave me personal time and space to work on personal projects. But if I’m being honest, usually just playing with the dogs or the Playstation. We don’t have those spaces anymore. One more way to blow off steam gone.&lt;/p&gt;

&lt;h2&gt;
  
  
  It adds up in ways you don’t see or expect
&lt;/h2&gt;

&lt;p&gt;If you are like me, you are not making the healthiest life choices lately. Being unable to go to the gym and to the store as frequently as I would like to make exercise and eating well more difficult. The stress makes it harder to sleep. You might be having an extra drink or three during the week. You find yourself drifting at work and you aren’t sure why you never had problems concentrating before. When the entire world is facing problems, resolving bug tickets doesn’t feel so important anymore. &lt;/p&gt;

&lt;h2&gt;
  
  
  But it won’t stay this way forever
&lt;/h2&gt;

&lt;p&gt;I’m someone who has worked remotely in some fashion for almost seven years, and I’ve been struggling these past few weeks. Don’t be too hard on yourself if you are new to working from home, and don’t be hard on the idea of remote work based on this experience. Under normal conditions, with company structures that support it, remote work can be great. It gives workers time back by not commuting, more freedom to handle the minutia of life, and the flexibility to find working conditions that work best for them. Working from home right now doesn’t give workers the same luxury, and comes with its own set of problems. &lt;/p&gt;

&lt;p&gt;Keep going, it gets better, I promise.&lt;/p&gt;

</description>
      <category>remote</category>
    </item>
    <item>
      <title>How to Build an Indeterminate Checkbox in React</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Tue, 04 Feb 2020 13:03:38 +0000</pubDate>
      <link>https://dev.to/gsto/how-to-build-an-indeterminate-checkbox-in-react-kbh</link>
      <guid>https://dev.to/gsto/how-to-build-an-indeterminate-checkbox-in-react-kbh</guid>
      <description>&lt;p&gt;Fun fact: Did you know that HTML checkboxes have three built-in states, not just two? In addition to the &lt;strong&gt;checked&lt;/strong&gt; state, there is also an indeterminate state. You can’t set a checkbox to indeterminate with HTML, only with JavaScript. Here’s what they look like in the browser:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JegEBu7p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://glennstovall.com/wp-content/uploads/2020/02/Image-2020-02-04-at-7.30.10-AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JegEBu7p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://glennstovall.com/wp-content/uploads/2020/02/Image-2020-02-04-at-7.30.10-AM.png" alt="" width="370" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Would You Need An Indeterminate Checkbox?
&lt;/h2&gt;

&lt;p&gt;As you can see, they can be useful for “select all” checkboxes that can be in a “some but not all selected” state. Let’s look at how we can build a react component for a three-state checkbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Will Work
&lt;/h2&gt;

&lt;p&gt;You need more than props in this case. The only way to set a checkbox to indeterminate in HTML and Vanilla JavaScript is setting the prop in JavaScript like this:&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="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my-checkbox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;indeterminate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of "&lt;strong&gt;checked={value}&lt;/strong&gt;", two hooks working together manage the visual state of the checkbox. First, &lt;strong&gt;&lt;a href="https://reactjs.org/docs/hooks-reference.html#useref"&gt;useRef&lt;/a&gt;&lt;/strong&gt; maintains a reference to the element, so that you can manage the indeterminate property directly. Then, the &lt;a href="https://reactjs.org/docs/hooks-reference.html#useeffect"&gt;&lt;strong&gt;useEffect&lt;/strong&gt;&lt;/a&gt; hook manages the changes by executing code on the reference.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, Our Boilerplate
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;CHECKED&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;UNCHECKED&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;INDETERMINATE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; 

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;IndeterminateCheckbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;checkbox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&amp;gt;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;IndeterminateCheckbox&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We’ll need to define a trinary state here. I like using -1 for the third “maybe” state of this boolean operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modeling Our Props
&lt;/h2&gt;

&lt;p&gt;We’ll only require one prop here, the value of the checkbox. To increase the flexibility of our component, we should pass other props down to the &lt;strong&gt;input&lt;/strong&gt; element. This way, whoever uses our component has access to modify all other props, so they can set onClick handlers for example. Here’s a pattern you can use to handle certain props specifically while passing the rest down the component tree.&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;const&lt;/span&gt; &lt;span class="nx"&gt;IndeterminateCheckbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;otherProps&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;checkbox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;{...&lt;/span&gt;&lt;span class="nx"&gt;otherProps&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;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;h2&gt;
  
  
  Managing the Three Stages.
&lt;/h2&gt;

&lt;p&gt;Now we can use the value to manage the three states. Situations where we need to execute code every time props change is a perfect case for &lt;strong&gt;useEffect&lt;/strong&gt;. Every time the component renders &lt;em&gt;or&lt;/em&gt; the value changes, we need to adjust both the &lt;strong&gt;checked&lt;/strong&gt; and &lt;strong&gt;indeterminate&lt;/strong&gt; properties. useRef provides a reference for managing those changes inside of &lt;strong&gt;useEffect&lt;/strong&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;IndeterminateCheckbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;otherProps&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;checkRef&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useRef&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="nx"&gt;useEffect&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;checkRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;checked&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;CHECKED&lt;/span&gt;
    &lt;span class="nx"&gt;checkRef&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;indeterminate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;INDETERMINATE&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;input&lt;/span&gt;
      &lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;checkbox&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="nx"&gt;ref&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;checkRef&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;{...&lt;/span&gt;&lt;span class="nx"&gt;otherProps&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;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;And there you have it! A way to manage a three-state checkbox with React. While there isn’t a &lt;em&gt;ton&lt;/em&gt; of use cases for this kind of structure, I like this example because I feel like it gives a clear example of three React principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Making your components more flexible with the other props pattern. &lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;useRef&lt;/strong&gt; to modify elements in non-standard ways.&lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;useEffect&lt;/strong&gt; to trigger events based on prop values. &lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>javascript</category>
      <category>react</category>
    </item>
    <item>
      <title>Side Hustle to For Investment, Not Income</title>
      <dc:creator>Glenn Stovall</dc:creator>
      <pubDate>Sat, 18 Jan 2020 14:15:25 +0000</pubDate>
      <link>https://dev.to/gsto/side-hustle-to-for-investment-not-income-58p5</link>
      <guid>https://dev.to/gsto/side-hustle-to-for-investment-not-income-58p5</guid>
      <description>&lt;p&gt;If you have a side hustle, How much money does it bring in compared to your job? Have you considered the possibility that you could one day quit working for others and instead work for yourself? It can be hard to imagine moving from employment to making money solely off of things you create, especially when you consider some of the salaries that developers rake in.&lt;/p&gt;

&lt;p&gt;I hope to prevent you from taking that and moving towards this thought: &lt;em&gt;If I can’t replace my income, why bother trying?&lt;/em&gt; That’s a limiting belief that kills projects before they even begin. I don’t want you to get discouraged and deprive the world of something valuable you can build. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;But First, A Note From Our Friendly Neighborhood Lawyer&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This article starts to delve into finances and investment, so I would like to say:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;DISCLAIMER:&lt;/strong&gt; I am &lt;strong&gt;not&lt;/strong&gt; a financial advisor of any kind. Ideas presented here may not be suitable for everyone. If you have any doubts as to the merits of any of this advice, you should seek advice from an independent financial advisor, and refrain from @‘ing me on Twitter.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now with that out of the way…&lt;/p&gt;

&lt;h2&gt;
  
  
  Salaries Are Inherently Risky
&lt;/h2&gt;

&lt;p&gt;People tend to play conversation when taking risks revolving around their primary source of income, and rightly so. It may be the only way you pay your mortgage, put food on the table, or take care of your children. Besides, building up income from your own products or services takes &lt;em&gt;a long time.&lt;/em&gt; People could work for years and only build a few thousand dollars in revenue. &lt;/p&gt;

&lt;p&gt;While everyone doesn’t recognize it, we are &lt;em&gt;all&lt;/em&gt; trying to bridge that gap — not just side hustlers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Burn It With F.I.R.E.
&lt;/h2&gt;

&lt;p&gt;Many people call the time when they make money from assets that own instead of trading time for money “retirement.” In many cases, people plan to save, then survive using those savings plus returns from investments.&lt;/p&gt;

&lt;p&gt;There’s one glaring flaw with this plan: The retirement doesn’t kick in until 65 &lt;em&gt;if you’re lucky&lt;/em&gt;. A lot can go wrong between now and then, and even if you make it there in a stable financial position, you are too old to enjoy much of life. &lt;/p&gt;

&lt;p&gt;Enter the financial independence / retire early community, or “fire” for short. Fire, as preached by its evangelist &lt;a href="https://www.mrmoneymustache.com/"&gt;Mr. Money Mustache&lt;/a&gt;, focuses on using frugality to shorten the journey to retirement.&lt;/p&gt;

&lt;p&gt;In short, you can define retirement as the moment when you have enough non-work income rolling in to cover your expenses. The safest way to generate that income is by investing in index funds, mutual funds, and bonds. You can calculate how much money you need by using the &lt;a href="https://www.mrmoneymustache.com/2012/05/29/how-much-do-i-need-for-retirement/"&gt;4% rule&lt;/a&gt;: the amount of your savings you can withdraw annually without ever running out in your lifetime. There are &lt;a href="https://www.fool.com/retirement/2018/01/16/3-serious-problems-with-the-4-retirement-rule.aspx"&gt;some criticisms&lt;/a&gt; of this rule, but it works well enough for the points I’m trying to illustrate here. &lt;/p&gt;

&lt;p&gt;To get the amount you would need to invest at that rate, take your minimum monthly spending, and multiply it by 300. Some example outcomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Spending |      Required Investment
-----------------------------------
    $500 |                 $150,000 
  $1,000 |                 $300,000 
  $2,500 |                 $750,000 
  $5,000 |               $1,500,000 
 $10,000 |               $3,000,000 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Changing The Math
&lt;/h2&gt;

&lt;p&gt;The Fire philosophy is all about shifting the numbers in this equation via frugality. Cutting spending helps on both sides. Your monthly costs go down, plus the amount you can invest goes up. You can &lt;a href="https://networthify.com/calculator/earlyretirement"&gt;crunch some numbers here&lt;/a&gt; and see how long it would take you to retire under this model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter “Fat Fire”
&lt;/h2&gt;

&lt;p&gt;Recently I discovered a splinter group within the fire community. They refer to themselves as “fat fire” and people following Mr. Mustache’s principles as “lean fire.” Lean fire is about bridging the work/retirement gap by spending less and saving more. Fat fire pursues the same goal, but by increasing  &lt;strong&gt;revenue&lt;/strong&gt;  and  &lt;strong&gt;return&lt;/strong&gt;. I jived with some of the ideas I found in this community, and a lot of them were software developers! As a software developer, you have unique leverage you can use to generate revenue and build your portfolio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Index Funds Are For Wimps
&lt;/h2&gt;

&lt;p&gt;When investing, index funds and stocks are only one type of asset class. In short, you can keep your pile of money in a mix of four asset classes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stocks, bonds, and index funds, aka  &lt;strong&gt;paper assets&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Real estate&lt;/li&gt;
&lt;li&gt;Equity or income-generating assets, known as  *&lt;em&gt;business assets. *&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fool.com/retirement/2018/01/16/3-serious-problems-with-the-4-retirement-rule.aspx"&gt;Straight cash, homie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each comes with unique risks and rewards. Getting into that is &lt;em&gt;far&lt;/em&gt; beyond the scope of this post, but as a general principle: any asset has more of a return than cash, and business and real estate assets tend to have more leverage and return than paper assets. &lt;/p&gt;

&lt;p&gt;A side hustle that generates income is a  &lt;strong&gt;business asset.&lt;/strong&gt;  Instead of buying one, you can build one.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Two Ways You Could Make $1,000/month&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Let’s consider two ways you generate an additional $1,000/month in revenue.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Option 1: You work, save, and eventually invest $300,000. Based on the 4% rule, you can peel $1,000/month off of that. &lt;/li&gt;
&lt;li&gt;Option 2: Create and sell something that brings in $1,000/month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which one sounds more accessible to you? Which could you achieve more quickly? What does each of these options look like in year 2?&lt;/p&gt;

&lt;h2&gt;
  
  
  You can’t beat income, but you can beat the market.
&lt;/h2&gt;

&lt;p&gt;It’s unlikely that a side hustle is going to replace your income in the way that you think. However, it can accelerate your path to retirement. That’s why software development is so valuable; you can create business assets &lt;em&gt;out of nothing&lt;/em&gt;! You probably have ways you can invest your time and energy to create assets that generate income. Instead of trying to replace your salary, you could think of your side hustle as adding a new asset to your portfolio. &lt;/p&gt;

&lt;p&gt;The post &lt;a href="https://glennstovall.com/side-hustle-investment/"&gt;Side Hustle to For Investment, Not Income&lt;/a&gt; appeared first on &lt;a href="https://glennstovall.com"&gt;Glenn Stovall&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>softwarebusiness</category>
      <category>personalfinance</category>
    </item>
  </channel>
</rss>
