<?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: Mario Hayashi</title>
    <description>The latest articles on DEV Community by Mario Hayashi (@logicalicy).</description>
    <link>https://dev.to/logicalicy</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%2F482955%2F718f7cfe-5398-478f-8c19-db3859676dae.jpg</url>
      <title>DEV Community: Mario Hayashi</title>
      <link>https://dev.to/logicalicy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/logicalicy"/>
    <language>en</language>
    <item>
      <title>Trade-offs leading tech at early-stage startups</title>
      <dc:creator>Mario Hayashi</dc:creator>
      <pubDate>Tue, 05 Jan 2021 12:06:40 +0000</pubDate>
      <link>https://dev.to/logicalicy/developing-tech-at-early-stage-startups-the-right-way-14bb</link>
      <guid>https://dev.to/logicalicy/developing-tech-at-early-stage-startups-the-right-way-14bb</guid>
      <description>&lt;p&gt;If you're a first-time tech founder or lead at a startup, you'll find yourself spending an inordinate amount of time making trade-offs. You'll need to pick a tech stack that works for your team; decide how much time to invest in visual design; balance your vision with the most valuable thing you can deliver to your user &lt;em&gt;right now&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;This post intentionally confronts this controversial topic head on. I feel it's a topic that's not talked about nearly enough. Tech founders and leads often find out they'd spent countless hours on creating something no-one wants only after the fact (myself included). Having built tech from scratch at multiple startups and talked to other tech founders in the past, I've noticed that some (if not many!) first-time founders and tech leads find out the hard way that they may have taken the wrong turn when they were presented with a trade-off. &lt;/p&gt;

&lt;p&gt;Here, I talk about the most common "questionable turns" taken that I've experienced for myself, heard about or seen others experience. These thoughts may be controversial and you might not agree with most of them but I will feel I've contributed something if you might agree with just one!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tech stack:&lt;/strong&gt; Some founders spend lots of time thinking about the tech stack, trying to pick the "perfect" technologies. It's good to explore. But don't spend an inordinate amount of time thinking about it. Before I joined my first early-stage startup, I was given helpful advice (from my CTO at the time) to "just build". Your startup might not exist in 18 months. Pick things that work &lt;em&gt;right now&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hire the right people:&lt;/strong&gt; I was really lucky when we hired someone who was extremely talented at my first tech lead role. I learned things daily from him. He had opinions (something I've come to value a lot). We iterated fast. I've seen the opposite however too: hires who've struggled to push any code and shown not much engagement despite trying to accommodate. Founders inevitably need to make a decision whether or not to let that person go, so make sure to hire well (or be prepared for it to hurt!).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust:&lt;/strong&gt; Give everyone the benefit of the doubt. At the beginning, everything might be all over the place. That's ok. Introduce or suggest the right processes that you and others can trust. That way, structure will come and you'll be able to make progress. If there's distrust from the get-go, it'll be hard to make it work long-term. Everything will feel "transactional".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing:&lt;/strong&gt; One experienced CTO once told me that testing is overkill at a startup pre-Product-Market Fit (PMF). And I think he's mostly right: at many startups, if you're iterating fast, you'll be throwing away lots of code. Yes, there are some exceptions — code for financial transactions, mission-critical applications, etc. where bugs can be disastrous — but for most pre-PMF startups that are creating a few REST APIs and a React.js front-end, focusing on testing may be overkill. Start testing when your product starts to stabilise. Be comfortable with tech debt. You can address tech debt when you reach Series A and your team is growing (when there's an obvious need for tests). It's ok to do things that don't scale at first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation:&lt;/strong&gt; Only document as much as you need to communicate with your team. Creating a big project implementation plan may be a waste of time in a small, nimble team. Instead, make sure to communicate in daily stand-ups, comms tools, etc. Similarly, documenting code is secondary at an early stage. You may throw away lots of code and the API may change a lot. Note: this is not to be confused with good practices, such as good naming conventions and code structure, which are a must. Documenting code will become a productivity multiplier once you have more than a few engineers but not until then.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goals:&lt;/strong&gt; Make sure to define goals. You might think building tech counts as progress. It is but only if it's contributing to your company's wider goals. Without goals, you'll have less alignment in the team (yet another risk you can't afford at an early stage) and you're leaving success to chance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analytics:&lt;/strong&gt; Similarly, make sure to install analytics from an early stage, tracking the most important metrics. I've seen founders regret not measuring early enough. That includes me!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design:&lt;/strong&gt; Both UX and UI design are fluid, especially at the start. You're still trying to find PMF, so naturally your UX will evolve. UI design and the visual language will change as your branding becomes more clear. Therefore, spending an inordinate amount of time creating the perfect design system is a bit of an overkill. I would suggest sitting down with the designer to work out the most pragmatic path to a product that allows users to accomplish their jobs (if you're using JTBD). Often designers are just trying to paint the "ideal" picture. Designers are very pragmatic and will design around technical limitations if you flag them. Also, some product designers may prefer using existing design systems to iterate faster (such as Material, Bootstrap or Tailwind).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speak to users:&lt;/strong&gt; You might be getting siloed in "tech", either because responsibilities are defined in binary or there's so much product development to do that you don't have time for other things. If it's the former: ownership doesn't mean others can't be involved. Speaking to customers can be driven by your co-founder but your team will benefit from your involvement as you'll better understand what product to build. If there's too much on your plate: ask yourself, would you prefer to do things the right way or do the right things? Speaking to users de-risks the possibility that you're building the wrong thing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are some rule-of-thumbs that have helped me, with some of the trade-offs above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pick speed and limit scope:&lt;/strong&gt; The &lt;a href="https://blog.mariohayashi.com/delivering-software-product-management-triangle"&gt;Product Management Triangle&lt;/a&gt;: you can only pick two of speed, scope and quality. Obviously pick speed, as iterating is key to developing product at an early stage. Of scope and quality, try to limit scope so as to minimise the sacrifices you make with quality. Also, limiting scope will help you iterate faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Over-communicate:&lt;/strong&gt; Always over-communicate your intentions. You might be a small team but it never hurts to share too much. It's never too early to introduce 1-on-1's. If silence is the norm in your startup, ask yourself if that's ok. If silence is the manifestation of lack of trust or "we have nothing to talk about but work", then it might need addressing. Your opportunity cost is your time, so make sure that whatever you're working towards is communicated!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be pragmatic:&lt;/strong&gt; Not everything is black-and-white. So making a rule in the first week and expecting it hold for the next months is unrealistic. Take information as it comes and act on the information. The startup that processes the information most efficiently (the advantage of being a startup!) often makes the most progress.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are just some of my thoughts around tech founder trade-offs. Some may be controversial but I hope there may be some things that you could relate to, from your current or past experience.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>architecture</category>
      <category>testing</category>
      <category>leadership</category>
    </item>
    <item>
      <title>10 things they don't teach you about AWS</title>
      <dc:creator>Mario Hayashi</dc:creator>
      <pubDate>Thu, 31 Dec 2020 13:05:05 +0000</pubDate>
      <link>https://dev.to/logicalicy/10-things-they-don-t-teach-you-about-aws-k5c</link>
      <guid>https://dev.to/logicalicy/10-things-they-don-t-teach-you-about-aws-k5c</guid>
      <description>&lt;p&gt;Some things that I've picked up over the years that may not be obvious when starting out with a new AWS service.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create SSL certificates in&lt;/strong&gt; &lt;code&gt;us-east-1&lt;/code&gt;. CloudFront's provisioning infrastructure is based there, so is only compatible with &lt;code&gt;us-east-1&lt;/code&gt; certificates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IAM.&lt;/strong&gt; May not be obvious to the newcomer: permissions are granted via statements in &lt;strong&gt;Policies&lt;/strong&gt;, which are assigned to either &lt;strong&gt;Identities&lt;/strong&gt; or &lt;strong&gt;Resources&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CloudFormation vs Terraform.&lt;/strong&gt; CloudFormation features oddly sometimes lag behind Terraform, which uses AWS's API under the hood (not CloudFormation's).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lambda deployment too big&lt;/strong&gt;. Consider AWS Lambda Layers when your deployment package size has exceeded Lambda limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Lambdas suffer from cold starts&lt;/strong&gt;. Tackle it by reducing your package size. Also, you get at least the same amount of CPU in the init phase as in the handler. You get the init phase for very close to free, so move as much application code as possible outside of your handler function. Subsequent invocations can also reuse resources outside the handler.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQS deliverability&lt;/strong&gt;: Standard queues guarantee at least one delivery, FIFO queues attempt one delivery. Make sure your application code makes the correct assumptions/de-dupe as necessary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS KMS is your friend&lt;/strong&gt;. Use it to encrypt your keys. Think twice about what goes into environment variables or Parameter Store.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS RedShift performance.&lt;/strong&gt; RedShift queries perform a lot better with Distribution Keys. Set them up early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Cognito customisation&lt;/strong&gt;. &lt;del&gt;You can't customise AWS Cognito verification emails.&lt;/del&gt; As suggested in the comments, you can now customise verification email with code. (&lt;a href="https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-email-verification-message-customization.html"&gt;See docs&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AWS Credits&lt;/strong&gt;. Most accelerator programmes offer you AWS Credits. Join one and ask for them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; Helpful resource, in case you haven't come across it — &lt;a href="https://github.com/open-guides/og-aws"&gt;Open Guide to Amazon Web Services (GitHub)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cover: "AWS - Amazon Web Services Office in Houston, Texas" by Tony Webster is licensed with CC BY 2.0. To view a copy of this license, visit &lt;a href="https://creativecommons.org/licenses/by/2.0/"&gt;https://creativecommons.org/licenses/by/2.0/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
    </item>
    <item>
      <title>Do web/mobile app copy changes get handed over to you in Notion/Sheets?</title>
      <dc:creator>Mario Hayashi</dc:creator>
      <pubDate>Mon, 14 Dec 2020 03:53:54 +0000</pubDate>
      <link>https://dev.to/logicalicy/do-web-mobile-app-copy-changes-get-handed-over-to-you-in-notion-sheets-1o8f</link>
      <guid>https://dev.to/logicalicy/do-web-mobile-app-copy-changes-get-handed-over-to-you-in-notion-sheets-1o8f</guid>
      <description>&lt;p&gt;Hey! 👋&lt;/p&gt;

&lt;p&gt;This Q is for devs who work on web/mobile apps and have PMs/marketers/designers who write the copy for these apps in Notion/Google Sheets...!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How frequently do you get asked for copy changes (in Notion/Google Sheets)?&lt;/li&gt;
&lt;li&gt;How annoying/easy is it for you to update the copy in your web/mobile app?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wanted to research your opinions, as I'm the maker of &lt;a href="https://copyocean.com"&gt;CopyOcean&lt;/a&gt; (posted about &lt;a href="https://dev.to/logicalicy/write-copy-in-notion-export-to-json-4g5g"&gt;last week&lt;/a&gt;), which turns web/mobile app copy in Notion Tables into GitHub/Gitlab Pull Requests. Your feedback will be very helpful! Thank you 🙏&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
      <category>mobile</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Write copy in Notion, export to JSON</title>
      <dc:creator>Mario Hayashi</dc:creator>
      <pubDate>Wed, 02 Dec 2020 22:20:59 +0000</pubDate>
      <link>https://dev.to/logicalicy/write-copy-in-notion-export-to-json-4g5g</link>
      <guid>https://dev.to/logicalicy/write-copy-in-notion-export-to-json-4g5g</guid>
      <description>&lt;p&gt;Hey there! 👋&lt;/p&gt;

&lt;p&gt;I made a Low-Code project that I’d welcome feedback on —&lt;/p&gt;

&lt;p&gt;Aimed at devs, PMs and copywriters, CopyOcean takes copy from a Notion Table and exports it to JSON, so developers can easily drop it into the app (&lt;a href="https://www.copyocean.com"&gt;https://www.copyocean.com&lt;/a&gt;). It also makes i18n a breeze!&lt;/p&gt;

&lt;p&gt;It was motivated by experience in product development where copy management was often messy and ad-hoc. Unnecessary communication overhead, outdated copy and lost productivity were some of the problems that came with copy changes. CopyOcean attempts to solve this problem by using Notion Tables as a central source for copy and helping you add the copy to your product with a machine-readable export (JSON).&lt;/p&gt;

&lt;p&gt;Would love to know from you (a) how your copy process looks like today and (b) whether this is of interest! Of course any other thoughts welcome.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>showdev</category>
      <category>i18n</category>
    </item>
    <item>
      <title>Made a blog on software contracting/freelancing</title>
      <dc:creator>Mario Hayashi</dc:creator>
      <pubDate>Wed, 07 Oct 2020 13:40:56 +0000</pubDate>
      <link>https://dev.to/logicalicy/made-a-blog-on-software-contracting-freelancing-3jhh</link>
      <guid>https://dev.to/logicalicy/made-a-blog-on-software-contracting-freelancing-3jhh</guid>
      <description>&lt;p&gt;Hey! 👋 Just wanted to share a blog (&lt;a href="https://contracto.dev"&gt;contracto.dev&lt;/a&gt;) I made to describe my experiences as a software contractor. I usually take on jobs like React.js, Node.js, Serverless and more.&lt;/p&gt;

&lt;p&gt;If you're curious about software contracting, its challenges and benefits, I've written a couple of posts on it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://contracto.dev/what-is-software-contracting"&gt;Is contracting for me?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://contracto.dev/how-to-get-started"&gt;How to get started&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let me know if you have any Qs!&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Where to start with SQL? A few posts to help beginners</title>
      <dc:creator>Mario Hayashi</dc:creator>
      <pubDate>Mon, 05 Oct 2020 17:13:24 +0000</pubDate>
      <link>https://dev.to/logicalicy/where-to-start-with-sql-a-few-posts-to-help-beginners-5bid</link>
      <guid>https://dev.to/logicalicy/where-to-start-with-sql-a-few-posts-to-help-beginners-5bid</guid>
      <description>&lt;p&gt;There are tonnes of SQL resources out there. This small project I made over the weekend — How do I SQL? — collates them to make it a bit more digestible. Hope it helps!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why SQL? &lt;a href="https://howdoisql.com/why-sql"&gt;https://howdoisql.com/why-sql&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;List of SQL resources: &lt;a href="http://howdoisql.com/resources"&gt;http://howdoisql.com/resources&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;List of SQL courses &lt;a href="https://howdoisql.com/courses"&gt;https://howdoisql.com/courses&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>sql</category>
      <category>database</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
