<?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: Aleix Morgadas</title>
    <description>The latest articles on DEV Community by Aleix Morgadas (@aleixmorgadas).</description>
    <link>https://dev.to/aleixmorgadas</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%2F31892%2F843b7d80-d4f7-4e0d-9cd3-94c924f93675.png</url>
      <title>DEV Community: Aleix Morgadas</title>
      <link>https://dev.to/aleixmorgadas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aleixmorgadas"/>
    <language>en</language>
    <item>
      <title>React @loadable/component with Continuous Deployment</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Sun, 31 Jan 2021 21:27:16 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/react-loadable-component-with-continuous-deployment-5ep3</link>
      <guid>https://dev.to/aleixmorgadas/react-loadable-component-with-continuous-deployment-5ep3</guid>
      <description>&lt;p&gt;When you combine @loadable/component React Library with a Continuous Delivery/Deployment pipeline, you end up with a broken website when a user is navigating meanwhile a deployment is ongoing. And that's not good.&lt;/p&gt;

&lt;p&gt;Here an example ⤵&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eKJiXB9Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/llkg6kdfs4k7f1v7wufs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eKJiXB9Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/llkg6kdfs4k7f1v7wufs.png" alt="Error Example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You see that, meanwhile navigating, the browser aims to fetch a static file that is no longer available since it has been replaced with the new version.&lt;/p&gt;

&lt;p&gt;It causes user frustration since the website no longer works plus it doesn't tell you what to do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/d10dMmzqCYqQ0/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/d10dMmzqCYqQ0/giphy.gif" alt="noooo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  LinkedIn's Solution
&lt;/h2&gt;

&lt;p&gt;I'm sure that if you used LinkedIn lately, you have seen the next screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1mYXMUx0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qatva6hqzahxtvbo8nxg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1mYXMUx0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qatva6hqzahxtvbo8nxg.png" alt="LinkedIn Error page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's the solution I applied for the same problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Applying the Solution
&lt;/h2&gt;

&lt;p&gt;Just create a &lt;a href="https://github.com/aleixmorgadas/react-loadable-component-with-continuous-deployment/blob/main/src/ErrorBoundary.jsx"&gt;&lt;code&gt;ErrorBoundary&lt;/code&gt;&lt;/a&gt; Component that handles the inner component errors and ask the user for a Refresh.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&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="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="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nx"&gt;ErrorBoundary&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Component&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;constructor&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="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;super&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="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;errorInfo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;componentDidCatch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;errorInfo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;errorInfo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="c1"&gt;// You can also log error messages to an error reporting service here&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;errorInfo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Error path&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"error-boundary"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Something went wrong 😖&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&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="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reload&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Reload Application&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="c1"&gt;// Normally, just render children&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&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="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;And then wrap the &lt;a href="https://github.com/aleixmorgadas/react-loadable-component-with-continuous-deployment/blob/main/src/App.js"&gt;&lt;code&gt;&amp;lt;Router&amp;gt;...&amp;lt;/Router&amp;gt;&lt;/code&gt;&lt;/a&gt; with the &lt;code&gt;ErrorBoundary&lt;/code&gt; Component like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&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="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ErrorBoundary&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        ...
      &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;ErrorBoundary&lt;/span&gt;&lt;span class="p"&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;Then the example solution looks like:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zxby6zjP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/am3pmq9epldd2osi1q59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zxby6zjP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/am3pmq9epldd2osi1q59.png" alt="Solution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Source Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/aleixmorgadas/react-loadable-component-with-continuous-deployment"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f2gYB2-A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nlenv8rx5x3wa13pj5al.gif" alt="GitHub"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source Code at &lt;a href="https://github.com/aleixmorgadas/react-loadable-component-with-continuous-deployment"&gt;https://github.com/aleixmorgadas/react-loadable-component-with-continuous-deployment&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚡️ Feedback welcomed &lt;code&gt;!(•̀ᴗ•́)و ̑̑&lt;/code&gt; ⚡️&lt;/p&gt;

&lt;p&gt;&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"&gt;&lt;img alt="Creative Commons License" src="https://res.cloudinary.com/practicaldev/image/fetch/s--BoMNDlCl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.creativecommons.org/l/by-nc/4.0/88x31.png"&gt;&lt;/a&gt;&lt;br&gt;This work is licensed under a &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"&gt;Creative Commons Attribution-NonCommercial 4.0 International License&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>react</category>
      <category>cicd</category>
    </item>
    <item>
      <title>Single-responsibility principle applied to an Organization</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Sun, 03 Jan 2021 00:00:10 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/single-responsibility-principle-applied-to-an-organization-4hje</link>
      <guid>https://dev.to/aleixmorgadas/single-responsibility-principle-applied-to-an-organization-4hje</guid>
      <description>&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Single-responsibility_principle"&gt;Single-responsibility principle&lt;/a&gt; says: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every class in a computer program should have responsibility over a single part of that program's functionality, which it should encapsulate. All of that module, class or function's services should be narrowly aligned with that responsibility.&lt;/p&gt;

&lt;p&gt;Therefore,&lt;br&gt;
"A class should have only one reason to change".&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;I have seen this principle being applied to multiple concepts like modules, APIs, Systems, etc. But I haven't seen it applied to an &lt;em&gt;Organization&lt;/em&gt; yet. Maybe because it doesn't make any sense at all, but I will try to resonate about it. &lt;/p&gt;

&lt;p&gt;Bear with me, we might not get into any point but worth to try it out 😁&lt;/p&gt;

&lt;h1&gt;
  
  
  Let's start replacing computer concepts by organization concepts
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Every &lt;del&gt;class&lt;/del&gt; &lt;strong&gt;organization&lt;/strong&gt; in a &lt;del&gt;computer program&lt;/del&gt; &lt;strong&gt;society&lt;/strong&gt; should have responsibility over a single part of that &lt;del&gt;program;s functionality&lt;/del&gt; &lt;strong&gt;society's needs&lt;/strong&gt;, which it should encapsulate. All of that &lt;del&gt;module, class or function's services&lt;/del&gt; &lt;strong&gt;organization, product or entity&lt;/strong&gt; should be narrowly aligned with that responsibility.&lt;/p&gt;

&lt;p&gt;Therefore,&lt;br&gt;
"An organization should have only one reason to change".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Does it have any sense at all? It depends.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Single-responsibility&lt;/em&gt; seems to only make sense at &lt;strong&gt;Why level&lt;/strong&gt; (company's purpose), not at &lt;strong&gt;What level&lt;/strong&gt; (what the company offers, like products and services).&lt;/p&gt;

&lt;p&gt;When I say &lt;em&gt;why level&lt;/em&gt; and &lt;em&gt;what level&lt;/em&gt;, I'm referring to the &lt;strong&gt;Golden Circle&lt;/strong&gt; by &lt;a href="https://simonsinek.com/"&gt;Simon Sinek&lt;/a&gt; in his book, &lt;a href="https://www.goodreads.com/book/show/7108725-start-with-why"&gt;Start with Why&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yZ6So3LL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hearmcsn1xlwqr7kt64a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yZ6So3LL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hearmcsn1xlwqr7kt64a.png" alt="Golden Circle"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.smartinsights.com/digital-marketing-strategy/online-value-proposition/start-with-why-creating-a-value-proposition-with-the-golden-circle-model/"&gt;Image's source&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, in order to be a SOLID Organization, you need...
&lt;/h2&gt;

&lt;p&gt;to have a &lt;strong&gt;single and well defined organization's purpose&lt;/strong&gt;, which it should drive why the organization exists in the first place.&lt;/p&gt;

&lt;p&gt;The only reason to an organization to change is that the purpose isn't useful anymore.&lt;/p&gt;

&lt;p&gt;It might be that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The purpose is already accomplished&lt;/li&gt;
&lt;li&gt;There is no need to exist because there is not a demand&lt;/li&gt;
&lt;li&gt;People don't believe in the purpose anymore&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Discussion and feedback welcomed 😁
&lt;/h2&gt;

&lt;p&gt;What do you think? Are you in a SOLID Organization? Does this make any sense? 🤣&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/lKXEBR8m1jWso/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/lKXEBR8m1jWso/giphy.gif" alt="thinking"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>modelling</category>
      <category>solid</category>
      <category>healthydebate</category>
    </item>
    <item>
      <title>Applying SOLID to an organization</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Fri, 25 Dec 2020 12:24:25 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/applying-solid-to-an-organization-1keb</link>
      <guid>https://dev.to/aleixmorgadas/applying-solid-to-an-organization-1keb</guid>
      <description>&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/SOLID"&gt;SOLID Principles&lt;/a&gt; can be applied to many things. Classes, modules, systems... why not apply them to an organization as a whole? 🤔&lt;/p&gt;

&lt;p&gt;I intend to write an article's series to see how each letter of SOLID applies to an organization and answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How this &lt;em&gt;Principle&lt;/em&gt; applies to an &lt;em&gt;Organization&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;Are there any other &lt;em&gt;Principles&lt;/em&gt; that aim to focus on the same already known by the &lt;em&gt;Industry&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;Is it useful to apply this &lt;em&gt;Principle&lt;/em&gt; to an &lt;em&gt;Organization&lt;/em&gt; at all?&lt;/li&gt;
&lt;li&gt;Implications of applying and not applying the &lt;em&gt;Principle&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Before I even start writing the first article about &lt;em&gt;Single-responsibility principle&lt;/em&gt; applied to an &lt;em&gt;Organization&lt;/em&gt;, what do you think? Is it applicable SOLID to an organization at all?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/3o7TKTDn976rzVgky4/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/3o7TKTDn976rzVgky4/giphy.gif" alt="thinking"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>discuss</category>
    </item>
    <item>
      <title>In a Lean context, create a system that can evolve over time is a waste or worth in an early stage?</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Sat, 17 Oct 2020 19:45:32 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/in-a-lean-context-create-a-system-that-can-evolve-over-time-is-a-waste-or-worth-in-an-early-stage-1ekn</link>
      <guid>https://dev.to/aleixmorgadas/in-a-lean-context-create-a-system-that-can-evolve-over-time-is-a-waste-or-worth-in-an-early-stage-1ekn</guid>
      <description>&lt;p&gt;Imagine that you have already validated a possible need for a product and you start to create the first Minimum Viable Product, that's not a Prototype.&lt;/p&gt;

&lt;p&gt;Even though you have less risk, you still need to try a lot of stuff. The system will be changing fast and often, and sometimes you need to replace the whole system.&lt;/p&gt;

&lt;p&gt;In this context, do you think that investing in the next points is a waste or actually worth to do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuous Delivery System&lt;/li&gt;
&lt;li&gt;Good practices&lt;/li&gt;
&lt;li&gt;Automated testing&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you think it's not worth at an early stage, then when you think it's worth?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>lean</category>
    </item>
    <item>
      <title>Lean Explained "Mathematically"</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Fri, 09 Oct 2020 14:35:04 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/lean-explained-with-graphics-jah</link>
      <guid>https://dev.to/aleixmorgadas/lean-explained-with-graphics-jah</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Lean is all about reducing waste iteratively&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From this idea, I will put some "math" in order to visualize when we are being lean and when we aren't.&lt;/p&gt;




&lt;h1&gt;
  
  
  The simplest graphic
&lt;/h1&gt;

&lt;p&gt;Let's start with a simple graphic that might represent Lean.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8TehI8Id--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8g0ex5mecddpx1uhgdn3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8TehI8Id--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8g0ex5mecddpx1uhgdn3.png" alt="Lean"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It looks like an &lt;a href="https://en.wikipedia.org/wiki/Asymptote#Horizontal_asymptotes"&gt;Horizontal Asymptote&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m6Gfk0QK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/h966i7cv5ooq3mz6dje1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m6Gfk0QK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/h966i7cv5ooq3mz6dje1.png" alt="horizontal asymptote as limit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;where the &lt;code&gt;goal&lt;/code&gt; is &lt;strong&gt;&lt;code&gt;0 waste&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, we think about lean as an &lt;em&gt;horizontal asymptote&lt;/em&gt;, we can admit that &lt;strong&gt;we will never achieve 0 waste&lt;/strong&gt;. It helps us to be more humble about our own expectations, since there's no end in lean, only improvement over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Expanding the graph
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BczFnHvd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rdlignmrj0vncf7vkxuo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BczFnHvd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rdlignmrj0vncf7vkxuo.png" alt="Cost + Waste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When we are reducing waste, we know that there's a bottom line that's the real cost.&lt;/p&gt;

&lt;p&gt;Even though we can sense where it might be, we cannot know where is it in real precision.&lt;/p&gt;

&lt;p&gt;We might have the next situation, where we aim to reduce too much that we start under delivering based on our own standards.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NcoQIP0J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gxb7zkru8txt9pdgei2j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NcoQIP0J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gxb7zkru8txt9pdgei2j.png" alt="under delivery"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We know that Lean is about reducing waste, but we don't know for sure what's real waste and what isn't. So, sometimes, we try to reduce waste where it was real cost. Causing the next situation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0sr7NZ5P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c9q8eguok2zf71ggrt27.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0sr7NZ5P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c9q8eguok2zf71ggrt27.png" alt="below standards"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this situation, we have to be aware that it might happen and measure the delivery quality to know that we aren't delivery below our own standards.&lt;/p&gt;

&lt;p&gt;It's OK that it happens, and it will happen to you. This process will let into new leanings.&lt;/p&gt;

&lt;p&gt;Now, we are aware of how the graphic should look like, and that we might reduce the cost and not the waste because we cannot determine precisely the real cost of delivering, the question is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do we improve over time? Via Iterations&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Simplest graphic + Iterations
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B_ZCnEgS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/85dkdg8lb8pv0znn5ido.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B_ZCnEgS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/85dkdg8lb8pv0znn5ido.png" alt="Lean with Iterations"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Iteration helps us to measure improvement. It helps us to know where we were, where we are, but not where we will be.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's an Iteration?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Based on &lt;a href="https://www.dictionary.com/browse/iteration"&gt;dictionary.com&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;a different form or version of something:
&lt;em&gt;They designed the previous iteration of our logo.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;a development strategy that involves a cyclical process of refining or tweaking the latest version of a product, process, or idea to make a subsequent version: 
&lt;em&gt;Our startup is relying on rapid iteration in the next software development cycle.&lt;/em&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;IMHO, Lean is more than 1st definition than the 2nd, and I will explain myself why.&lt;/p&gt;

&lt;p&gt;Lean is a methodology, an approach and a mindset in how we approach stuff. It might be deliver an MVP, verify a business hypothesis, build a car or put a rocket in orbit.&lt;/p&gt;

&lt;p&gt;With a Lean approach, we embrace the change for the sake of improvement of how we &lt;strong&gt;do&lt;/strong&gt; stuff, not in &lt;strong&gt;what&lt;/strong&gt; we build.&lt;/p&gt;

&lt;p&gt;Let' imagine an unrealistic situation where we have a perfect product, that it doesn't need any more improvement. Meanwhile we don't need to iterate it anymore (2nd definition of iteration), we can still reduce waste in how we &lt;strong&gt;do&lt;/strong&gt; the stuff in some way or another.&lt;/p&gt;

&lt;p&gt;But, in the real world, we have to iterate the product, the &lt;strong&gt;what&lt;/strong&gt;, and how we deliver it, the &lt;strong&gt;how&lt;/strong&gt;. That's why Lean is often combined with other practices and methodologies like Agile, but they &lt;em&gt;focus&lt;/em&gt; on different areas.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's an iteration in Lean specifically?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;An iteration is context dependent and fluid.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's break the idea that it's every two weeks or once a month.&lt;/p&gt;

&lt;p&gt;I consider that an iteration starts when someone, regardless of the title and responsibilities, detects a &lt;em&gt;waste&lt;/em&gt; and ends when have been passed enough time to determine that the waste has been, or should have been, reduced. Then, you see if you need to continue reducing the waste, or if you could dedicate the effort somewhere else.&lt;/p&gt;

&lt;p&gt;Therefore, there are multiple iterations happen simultaneously.&lt;/p&gt;

&lt;p&gt;You might have an iteration of 2 days of X topic, and iteration of 1 month for Y topic.&lt;/p&gt;

&lt;p&gt;I wouldn't say that an iteration in Lean requires to deliver something to the costumer in any form per se, but it should let into waste reduction to achieve it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Number of iterations ?
&lt;/h2&gt;

&lt;p&gt;I would say, as much as you can, but let's be rational.&lt;/p&gt;

&lt;p&gt;There's tension between delivery something to the customer and delivery something with 0 waste.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t18n-RBN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/m9pm4pwep9txvjuj3i5j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t18n-RBN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/m9pm4pwep9txvjuj3i5j.png" alt="3 iterations"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;vs&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3ms3geT6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/km37ddlbqf7hsyjh93z3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3ms3geT6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/km37ddlbqf7hsyjh93z3.png" alt="6 iterations"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The more iterations you have, the more you can measure and more you can apply stuff to reduce the waste.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lean without a goal, it's 100% waste
&lt;/h2&gt;

&lt;p&gt;If you dedicate all your energy to detect and reduce waste, &lt;strong&gt;Lean itself becomes waste.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Have in mind that you want to achieve your goal, lean helps you to do it without wasting as much as resources as you would do it without it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do I would propose an improvement?
&lt;/h2&gt;

&lt;p&gt;First, I take time to observe how we are performing and based on my intuition, I will start getting some data to verify as soon as possible if that's waste or not in a way that it doesn't interrupts my delivery work.&lt;/p&gt;

&lt;p&gt;After that, I would use something like this canvas ⤵️&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gqo382J0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/efzahgt6e4fx2wpetbvi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gqo382J0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/efzahgt6e4fx2wpetbvi.png" alt="Lean Improvement Canvas"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It helps me to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduce down the waste scope as much as I can&lt;/li&gt;
&lt;li&gt;The length of the iteration&lt;/li&gt;
&lt;li&gt;What do I consider that there's waste backed up with data&lt;/li&gt;
&lt;li&gt;Different solutions to reduce that waste&lt;/li&gt;
&lt;li&gt;Which is my expectation of the ideal situation and which metrics I would measure to know if the iteration has been a success or not, and if we need further improvement or it's OK as it is.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who is involved in doing this exercise to propose an improvement?
&lt;/h3&gt;

&lt;p&gt;I will heavy recommend you that you don't do this canvas alone. If you can perform this scenarios with the team the better. Collaboration over individualism as much as you can here.&lt;/p&gt;

&lt;p&gt;Do this exercise with your teammates really helps you to scope down the problem space and be very specific about what do you and other expect about the iteration.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a more realistic Lean graphic looks like?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kI55hvOn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zmxi89kzt0cnwurxqp6r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kI55hvOn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zmxi89kzt0cnwurxqp6r.png" alt="Realistic Lean Graph"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At beginning, reducing waste won't be possible. You don't even know how the processes are, the team dynamics, etc.&lt;/p&gt;

&lt;p&gt;First, you take time to observe and then you propose a solution to minimize the waste you detected.&lt;/p&gt;

&lt;p&gt;Also, assume that the cost fluctuates overtime as you know more about what you want to accomplish/which is your goal, and the learnings you have along the process.&lt;/p&gt;




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

&lt;p&gt;I would really appreciate any feedback you have about the article. Any points that are not clear enough, or that I might be mistaken :-)&lt;/p&gt;

</description>
      <category>lean</category>
      <category>agile</category>
      <category>healthydebate</category>
    </item>
    <item>
      <title>We all should product design, is the new we all should sell</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Sun, 06 Sep 2020 11:58:39 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/we-all-should-product-design-is-the-new-we-all-should-sell-6kc</link>
      <guid>https://dev.to/aleixmorgadas/we-all-should-product-design-is-the-new-we-all-should-sell-6kc</guid>
      <description>&lt;p&gt;✋ &lt;strong&gt;Disclaimer&lt;/strong&gt;: I'm learning about product design and I aim to share my learnings so far. Take this into account meanwhile reading this article, and share your thoughts and feedback if you think there is something that can be improved please! 😊&lt;/p&gt;




&lt;p&gt;Six years ago, I was working in a small consultancy firm based in Barcelona. Because of the limited resources, the phase &lt;strong&gt;we all should sell&lt;/strong&gt; became a mantra.&lt;/p&gt;

&lt;p&gt;Since then, I have never stopped hearing it. If you are near to any startup or entrepreneur, you will eventually hear it 👂.&lt;/p&gt;

&lt;p&gt;There is a reason why you would say this, the resources are limited, and hiring one person to be the only responsible for selling might not be possible 😖.&lt;/p&gt;

&lt;p&gt;Instead, you aim to everyone in the company tries to sell the product in some way or another. This might sound good, but some inconveniences are out of scope for this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  But, what do we understand by product design?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Product Design is a process that goes from analysis of user-needs to a problem-solving approach to improve the quality of life of the end-users and their interaction with the environment.&lt;/p&gt;

&lt;p&gt;It is about problem-solving, about visualizing the needs of the end-users and bringing a solution.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's a quite broad description since it varies a lot from company to company, and it might involve different "roles" that collaborate on the product design like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UX Designer&lt;/li&gt;
&lt;li&gt;Data Analyst&lt;/li&gt;
&lt;li&gt;Prototyper&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it usually involves the next phases:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--15ynci3R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kmyps62bt2ycn9nmj7jm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--15ynci3R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kmyps62bt2ycn9nmj7jm.png" alt="Designing Phase"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, &lt;/p&gt;

&lt;h2&gt;
  
  
  Why we all should product design is the new we all should sell?
&lt;/h2&gt;

&lt;p&gt;How we are designing products is changing in our industry. Roles as UX Designer, Product Designer, User Researcher are becoming more and more important in how we build and ship products, and the impact on the users cannot be overlooked.&lt;/p&gt;

&lt;p&gt;Still, having a team with dedicated people for each role and responsibility is a rare situation in a startup, similar to the sales department 😜.&lt;/p&gt;

&lt;p&gt;Instead, as a team, you aim to cover the important aspects of Product Design in a loop-based way.&lt;/p&gt;

&lt;p&gt;The important point here is to perform the different phases in a meaningful way. I do think in most startups that phases happen in some way or another, but giving the proper structure will help identify you, as a team, at which point you are at and what you should expect of your work, analyze the outcomes and improve based on data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Involving the right people in each phase
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Who (Does or performs some tasks as)&lt;/th&gt;
&lt;th&gt;What&lt;/th&gt;
&lt;th&gt;How&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1. Empathize&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;People that work with data, analytics and has a more product owner role, marketing people&lt;/td&gt;
&lt;td&gt;Research about the people you are creating the product for&lt;/td&gt;
&lt;td&gt;User Testing, User Interview, Email Surveys, ...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2. Define&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;People that works with data, analytics and has a more product owner role&lt;/td&gt;
&lt;td&gt;Create a starting point from the user insights&lt;/td&gt;
&lt;td&gt;OKR workshop, Define the hypotheses, Align about the MVP (Lean Inception)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3. Ideate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Everyone&lt;/td&gt;
&lt;td&gt;Bring the facts and assumptions into the table and start a Brainstorming session to know the next learning you want to achieve with the given data&lt;/td&gt;
&lt;td&gt;2 - 3 days workshop focused on Brainstorming and conceptualization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4. Prototype&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Product Owner, UX Designer, Engineers, Data Analysts&lt;/td&gt;
&lt;td&gt;Design and iterate a prototype that help you answer your hypothesis&lt;/td&gt;
&lt;td&gt;&lt;a href="https://medium.theuxblog.com/11-best-prototyping-tools-for-ui-ux-designers-how-to-choose-the-right-one-c5dc69720c47"&gt;See different prototyping tools&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;5. Test&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Product Owner mainly&lt;/td&gt;
&lt;td&gt;Put in place the prototype to grater further information&lt;/td&gt;
&lt;td&gt;Via User Interviews or Analytics Tools&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Some resources that will help you start with Product Design
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/book/show/225111.The_Laws_of_Simplicity"&gt;The Laws of Simplicity: Design, Technology, Business, Life  - Book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://productdesign.academy/products/designers-mindset"&gt;Product Designer’s Mindset - Online course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.goodreads.com/book/show/18197267-don-t-make-me-think-revisited"&gt;Don't make me think - Book&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>startup</category>
      <category>productdesign</category>
    </item>
    <item>
      <title>DynamoDB as EventStore</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Sat, 22 Aug 2020 16:45:03 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/dynamodb-as-eventstore-3cbc</link>
      <guid>https://dev.to/aleixmorgadas/dynamodb-as-eventstore-3cbc</guid>
      <description>&lt;p&gt;I would like to share with you  how we managed to deploy a solution to store Domain Events in DynamoDB in 2 days (and mostly because of AWS permission issues...😅).&lt;/p&gt;

&lt;p&gt;We needed to store how the user interacted with different Domain Models and decouple that storage from the monolithic so they can grow independently. We aimed to create something super simple, or at least not that complex, in 2 to 3 days.&lt;/p&gt;

&lt;p&gt;We decided to give a try to process events as:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Monolith sends message to ➡️ SQS ➡️ Triggers Lambda to store it into ➡️ DynamoDB Table&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Even though DynamoDB might not be an optimal solution to be used as Event Store, we have given it a try for the next reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is fully managed by AWS&lt;/li&gt;
&lt;li&gt;It is cheap enough&lt;/li&gt;
&lt;li&gt;We don't require high write throughput nor read for the moment.&lt;/li&gt;
&lt;li&gt;Able to encrypt the content&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;We decided to go with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.terraform.io/"&gt;Terraform&lt;/a&gt; as Infrastructure as Code&lt;/li&gt;
&lt;li&gt;Python for &lt;a href="https://aws.amazon.com/lambda/"&gt;AWS Lambda&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://github.com/aleixmorgadas/dynamodb-as-eventstore"&gt;&lt;img src="https://i.giphy.com/media/du3J3cXyzhj75IOgvA/giphy.gif" alt="gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/aleixmorgadas/dynamodb-as-eventstore"&gt;Source Code&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;What would you do differently? Did I miss something? Did you have a similar solution for a similar problem?&lt;/p&gt;

</description>
      <category>aws</category>
      <category>terraform</category>
      <category>eventdriven</category>
    </item>
    <item>
      <title>Which best practices can you afford in a Startup and which you cannot?</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Sat, 18 Jul 2020 10:24:06 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/which-best-practices-can-you-afford-in-a-startup-and-which-you-cannot-66</link>
      <guid>https://dev.to/aleixmorgadas/which-best-practices-can-you-afford-in-a-startup-and-which-you-cannot-66</guid>
      <description>&lt;p&gt;Even though what we understand as &lt;em&gt;Best Practices&lt;/em&gt; might vary person to person, team to team and company to company depending on their context, I will assume some of them during this post to create the debate 😊&lt;/p&gt;




&lt;p&gt;Anyone working in a tech startup, without a huge budget at least, is familiar with some of the next situations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"We need this as soon as possible"&lt;/li&gt;
&lt;li&gt;"There's no time for testing, we need to work on this other thing"&lt;/li&gt;
&lt;li&gt;"Why dedicate two weeks to improve X, if we might need to close in next month?"&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's true that those situations might be seen as tension between "product management" and "engineering", as an example, where someone wins and another loses.&lt;/p&gt;

&lt;p&gt;I like to see them in another way, we are all collaborating to deliver a product to the customers, but we need to make tradeoffs in the different &lt;em&gt;delivery areas&lt;/em&gt;. There's no I win you lose. We all win or we all lose.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;Delivery area&lt;/em&gt; is engineering, UX, Product Design, Marketing, ..., anything needed to deliver the product.&lt;/p&gt;

&lt;p&gt;That being said, everyone, in their own area of expertise, has an opinion about what's the best and what's not acceptable. &lt;/p&gt;

&lt;p&gt;Between that spectrum, &lt;strong&gt;there are some best practices that we might consider required and others optional&lt;/strong&gt;. But which ones are required that really help in the product success and which didn't really help that much compared to others?&lt;/p&gt;




&lt;p&gt;From the engineering point of view, I consider the next &lt;em&gt;Best Practices&lt;/em&gt; as required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test-Driven Development&lt;/strong&gt;: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;IMHO, the most important practice by far.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Continuous Delivery&lt;/strong&gt;: A simple Continuous Delivery pipeline really helps in&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster Feedback Loop, the tests break sooner&lt;/li&gt;
&lt;li&gt;No human factor to deploy the solution to production&lt;/li&gt;
&lt;li&gt;Team can see the results of their daily work in the development environment&lt;/li&gt;
&lt;li&gt;Be confident in releasing to production soon and often, being able to push fixes faster and without human factor most of times&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Tc8dtiVf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5mwan877sju51bg3g0vp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tc8dtiVf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5mwan877sju51bg3g0vp.png" alt="CD"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It at least requires some sort of testing, without testing the feedback loop is longer than it should be.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trunk Based Development&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I consider that be working in one thing at a time, and always working in the trunk branch really helps in smaller iteration cycles.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Essential Monitoring&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Have a way to see how your system is behaving in terms of how many 2XX, 4XX and 5XX responses codes there are per day/week helps you react faster in case you broke something, without needing to constantly check the application in case it broke something.&lt;/p&gt;




&lt;p&gt;And you? Do you consider some other best practices to be more crucial? Which is your opinion about it?&lt;/p&gt;

&lt;p&gt;I do agree that it does depend on each case, but I do think there are some that really are required 😁&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>startup</category>
      <category>bestpractices</category>
    </item>
    <item>
      <title>Monitoring for Startups. Which affordable solutions are you all using?</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Thu, 09 Jul 2020 22:01:55 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/monitoring-for-startups-which-affordable-solutions-are-you-all-using-1h7b</link>
      <guid>https://dev.to/aleixmorgadas/monitoring-for-startups-which-affordable-solutions-are-you-all-using-1h7b</guid>
      <description>&lt;p&gt;Often, or at least to what I've been exposed to, the Startups have a reduced budget for infrastructure and they are in constant delivery pressure.&lt;/p&gt;

&lt;p&gt;This two constant implies that you have some issues in production that you might no realise easily that they are happening.&lt;/p&gt;

&lt;p&gt;I would say, that when the Startup is an early stage, the website traffic is still low. So we don't need a huge infrastructure support a lot of logs per minute.&lt;/p&gt;




&lt;p&gt;That's when &lt;em&gt;Affordable Monitoring&lt;/em&gt; comes into play. I would define &lt;em&gt;Affortable Monitoring&lt;/em&gt; to a small budget solution is at least able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralized Logging with Search capabilities

&lt;ul&gt;
&lt;li&gt;For Backend, Frontend and Mobile&lt;/li&gt;
&lt;li&gt;At least 7 days retention time&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Alerts when the service is down or in degraded service state&lt;/li&gt;
&lt;li&gt;Some metrics like:

&lt;ul&gt;
&lt;li&gt;Request Per Second&lt;/li&gt;
&lt;li&gt;2XX, 4XX, 5XX errors in a period of time&lt;/li&gt;
&lt;li&gt;Mean Response Time&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;We should also define what a small budget means. I would say 20-30EUR/month for all the services, not per host.&lt;/p&gt;




&lt;p&gt;Here what we are using 😄 ↓&lt;/p&gt;

&lt;p&gt;We have been using &lt;a href="https://aws.amazon.com/cloudwatch/"&gt;CloudWatch&lt;/a&gt; because we are using AWS as a Cloud Solution, and most of the requirements are in the free tier so it's a cheap solution for us.&lt;/p&gt;

&lt;p&gt;It's true that it doesn't support, as far as I know, frontend logs. That's why we were considering &lt;a href="https://rollbar.com/"&gt;Rollbar&lt;/a&gt; for the React WebApp.&lt;/p&gt;

&lt;p&gt;And you? What do you propose as a good stack with those constraints? Would you adopt &lt;a href="https://grafana.com/"&gt;Grafana&lt;/a&gt;, &lt;a href="https://prometheus.io/"&gt;Prometheus&lt;/a&gt; that early? What about &lt;a href="https://www.elastic.co/"&gt;ELK Stack&lt;/a&gt;? Is it worth compared with CloudWatch? Self-managed or third party hosted? Which metrics do you monitor?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>monitoring</category>
      <category>startup</category>
    </item>
    <item>
      <title>Feature Toggle at Nginx Level</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Fri, 03 Jul 2020 16:34:31 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/feature-toggle-at-nginx-level-d0f</link>
      <guid>https://dev.to/aleixmorgadas/feature-toggle-at-nginx-level-d0f</guid>
      <description>&lt;p&gt;I would like to share with you how we manage to replace, using a cookie as a "&lt;a href="https://en.wikipedia.org/wiki/Feature_toggle"&gt;Feature Toggle&lt;/a&gt;", the entire web application at run-time using Nginx.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Application Toggle&lt;/em&gt; might be a better name for this scenario tho 😂&lt;/p&gt;

&lt;h2&gt;
  
  
  The Need
&lt;/h2&gt;

&lt;p&gt;The scenario is that we have two independent Web Applications, as example we used a React App and a Vue App. One is the legacy version that should be replaced with a new version that needs to be build from scratch.&lt;/p&gt;

&lt;p&gt;There are different risks in replacing a fully functional application with a new one, and a lot of good reasons to not replace a working application by a new one but that's out of the scope of this article 😜.&lt;/p&gt;

&lt;p&gt;Some risks are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We miss some obvious features&lt;/li&gt;
&lt;li&gt;Late feedback from the team-mates and the end user&lt;/li&gt;
&lt;li&gt;Late integration in the release process&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A possible solution
&lt;/h2&gt;

&lt;p&gt;Include the new application under a Feature Toggle at Nginx Level so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The application is included in the CI/CD pipeline and available in the different environments&lt;/li&gt;
&lt;li&gt;Teammates can check how the application is growing in the development and production environment without disturbing the current application&lt;/li&gt;
&lt;li&gt;Given the point where you can share the application with end users, you have it already available and tested by the team in the production environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1RLL5G8F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sadgyhveqeauxjbirq72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1RLL5G8F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sadgyhveqeauxjbirq72.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The implementation
&lt;/h2&gt;

&lt;p&gt;Using the &lt;a href="https://nginx.org/en/docs/http/ngx_http_map_module.html"&gt;map nginx module&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can use a Cookie to map from which point you want to serve the Web Application from like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    map $cookie_Toggle $app {
        default /workdir/react-app/;
        true /workdir/vue-app/;
    }

    server {
        listen       80 default_server;
        server_name  _;

        access_log   /var/log/nginx/local-wc.access.log;
        error_log    /var/log/nginx/local-wc.error.log;

        location / {
            root $app;
            try_files $uri $uri/ /index.html =404;
        }
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Quite simple and straightforward 😄!&lt;/p&gt;

&lt;p&gt;Depending on the &lt;code&gt;Toggle&lt;/code&gt; cookie, you can switch between Legacy Application and the new Application.&lt;/p&gt;

&lt;p&gt;We a Browser Extension as &lt;a href="https://cookie-editor.cgagnier.ca/"&gt;Cookie Editor&lt;/a&gt; to switch the cookie value in a non-developer way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N8I7xxqy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hhs96t659llh0jgf5osq.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N8I7xxqy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hhs96t659llh0jgf5osq.gif" alt="demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Source Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f2gYB2-A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nlenv8rx5x3wa13pj5al.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f2gYB2-A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nlenv8rx5x3wa13pj5al.gif" alt="GitHub"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demo + Source Code at &lt;a href="https://github.com/aleixmorgadas/feature-toggle-at-nginx-level/"&gt;https://github.com/aleixmorgadas/feature-toggle-at-nginx-level/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;p&gt;Looking forward to hear about different strategies you used in similar situations! 😋&lt;/p&gt;

&lt;p&gt;I hope it helped you in some way :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/26DOMeaD2gdGE44LK/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/26DOMeaD2gdGE44LK/giphy.gif" alt="ty"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>architecture</category>
      <category>fastfeedback</category>
      <category>migration</category>
    </item>
    <item>
      <title>What to do when you join a product company. A guide with special focus on learning</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Sat, 23 May 2020 15:31:50 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/what-to-do-when-you-join-a-product-company-a-guide-with-special-focus-on-learning-10ah</link>
      <guid>https://dev.to/aleixmorgadas/what-to-do-when-you-join-a-product-company-a-guide-with-special-focus-on-learning-10ah</guid>
      <description>&lt;p&gt;I'm currently joining a small product company based in Barcelona. The company released the first MVP some months ago, therefore there's already a product and users in place. Plus I already knew them before joining, that's super! 🎉&lt;/p&gt;

&lt;p&gt;Even though they have already an on-boarding phase, I try to follow the next phases to become as familiar and productive as soon as possible with the product and team dynamics. In summary, it's all about making learning phase as short and valuable as possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before joining the company&lt;/strong&gt;:&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Become familiar with the product
&lt;/h1&gt;

&lt;p&gt;I become a user right away. I use the product each day to be familiar with the experience, benefits and drawbacks of the product.&lt;/p&gt;

&lt;p&gt;By doing that, I identify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🚶 User Journeys/User Flows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Being familiar with the application and the information in each page helps me to create a mental map about the pages, the interactions and the data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;😄 Value Proposition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which are the benefits for the users, why the users pay for that solution.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📊 Business Models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How the company win money, and where they might be investing resources to make the product better.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔄 Possible feedback loops&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I search for ways that the users can give feedback to the product team, and how they are doing to listen in order to improve the product. It can be in the product itself or in the social networks.&lt;/p&gt;

&lt;p&gt;It helps me be aware how much they care about the users feedback and how they involve them in the product development cycle&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Become familiar with the market
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;🔤 Be familiar with the market language/jargon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As developer, I want to use a language that it's as near to the product people as possible. Sharing the same understanding on wording is crucial!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔎 Be familiar with the important actors of the market&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Competitors, regulation, ... whatever that has an impact in the market and the company's product is valuable to be familiar with.&lt;/p&gt;

&lt;p&gt;Either because some product features addresses some already visible problems or because some features/user flows are inspired on some of those products.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;After joining the company&lt;/strong&gt;:&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Assert that what I learned in the steps 1 and 2
&lt;/h1&gt;

&lt;p&gt;Having the first conversations with the team about what did you learn, and expanding the product knowledge with those conversations.&lt;/p&gt;

&lt;p&gt;It's important to not limit those conversations with the development team, I strongly suggest to have that conversation with all team members, like marketing, product, finance, ...&lt;/p&gt;

&lt;p&gt;It will help you to have a better picture about the product, but also it will help your teammates to know how the product is perceived from outside. Both parties learn from this exercise.&lt;/p&gt;

&lt;p&gt;🔡 &lt;strong&gt;Give importance to the Glossary&lt;/strong&gt;. On the second step, you became familiar with the business language. It's time to assert that learning by creating a Glossary.&lt;/p&gt;

&lt;p&gt;In case you're not familiar with the "Glossary", it's a list of wording and meaning for each thing that your team-mates refer to.&lt;/p&gt;

&lt;p&gt;When you start speaking with your team-mates, they start saying stuff like, &lt;em&gt;just check the XYZ&lt;/em&gt;, and you are like... &lt;em&gt;what does XYZ mean?&lt;/em&gt;. In this step, you are recording all those new concepts because you will use them in your day to day job.&lt;/p&gt;

&lt;p&gt;The Glossary will help the next person that joins the company to not get lost in all this new jargon.&lt;/p&gt;

&lt;p&gt;But also helps you to know if the product people speaks the same language as the developers do. And that's super important. If you start finding that the product people say XYZ and then developers say, oh, that means ABC in the code... you will hard a time translating between tech and business, and that's something you could start investing energy and time to correct overtime.&lt;/p&gt;

&lt;p&gt;What you aim to do is to create a shared and &lt;a href="https://www.martinfowler.com/bliki/UbiquitousLanguage.html"&gt;ubiquitous language&lt;/a&gt; between business and developers. It's a common concept in &lt;a href="https://en.wikipedia.org/wiki/Domain-driven_design"&gt;Domain-Driven Design&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Become familiar with the systems in place
&lt;/h1&gt;

&lt;p&gt;Once I understand the product, the users and the value proposition, I try to understand the different systems that the company manages. To do so, I do somehow the next questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many independent systems do you manage?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Having a big picture of all the systems, and how they are connected between them helps me as a starting point to organize all the concepts in my head. I do need to know and understand where everything belongs and which is each system purpose.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are those systems self-managed or a third party manages them?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Knowing which systems are self-managed gives me an overview of the approach of the company/teams to develop software. Like, if they prefer to setup a self-managed Redis cluster over using the Cloud provider solution. I also ask the reason of why something is self-managed when there are good third party managed solutions when I consider that some tool might not be a core-business system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which are the deployment steps for each self-managed systems?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An important thing to know is how those systems are deployed. Is it manual? Continuous Deployment? you need other systems to be deployed when you deploy X system?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which teams are in charge of those systems?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After knowing the systems, I ask for which teams are in charge. Here I tend to identify how the teams are structured. By domain-bounderies or by layers (frontend, backend, ...).&lt;/p&gt;

&lt;p&gt;Also, identify which dependency there are between teams. It's important to know if there are a lot of dependency between teams to release something or they are quite independent.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Which tools do they use in their day to day?
&lt;/h1&gt;

&lt;p&gt;Any tool that are uses during the day to day to deliver work. Not only related to development, but anything around that.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Development tools? Ex: VSCode, IntelliJ, GitHub, AWS, ...&lt;/li&gt;
&lt;li&gt;[ ] Monitoring tools? Ex: Kibana, Grafana, ...&lt;/li&gt;
&lt;li&gt;[ ] Design tools? Ex: Figma, Sketch, Adobe Suit, ...&lt;/li&gt;
&lt;li&gt;[ ] Analytics tools? Ex: Google Analytics, Matomo, ...&lt;/li&gt;
&lt;li&gt;[ ] Management tools? Ex: Jira, Trello, ...&lt;/li&gt;
&lt;li&gt;[ ] Communication tools? Ex: Meet, Slack, ...&lt;/li&gt;
&lt;li&gt;[ ] Other tools? Ex: hotjar, Google Drive, ...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Knowing the tools in place, plus if they are being paid or the free version, gives you a vision about how those tools affect your way of working. Also, if there are paid tools, trying to propose an alternative might be harder to convince people about the benefits vs replace a free tool.&lt;/p&gt;

&lt;p&gt;I try to understand what all roles uses like the designers and marketing team, so I can have a better understanding on their work and how much I need to understand their tools to have a good communication between us.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I don't say that the tools are the only thing you need to understand to have a good communication. Indeed, I consider that you need to do an extra effort to understand all the disciplines and areas of the company. Don't think that this a low effort task. By far, communication is still, at least for me, the where most of my energy goes.&lt;/p&gt;

&lt;h1&gt;
  
  
  6. Team dynamics/methodologies
&lt;/h1&gt;

&lt;p&gt;Common stuff here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you using some Agile methodology? If so, which one and which and how?&lt;/li&gt;
&lt;li&gt;How do you provide feedback? Do they have 1:1? Retrospectives?&lt;/li&gt;
&lt;li&gt;How do you plan a backlog?&lt;/li&gt;
&lt;li&gt;How is a week in this team?&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Conclusions
&lt;/h1&gt;

&lt;p&gt;Doing this steps you have the "base knowledge" about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The product value proposition and jargon. Spending less time during Development time trying to understand what people means about XYZ.&lt;/li&gt;
&lt;li&gt;Which systems do what, and which teams manages them.&lt;/li&gt;
&lt;li&gt;Which tools you should use in your day to day basis, and also tools from your colleges that you need to collaborate with.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think those steps happen naturally in any company, some in a structured way others in a unstructured. This guide is only a way to give a way to gather the knowledge &lt;em&gt;faster&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open for Feedback
&lt;/h3&gt;

&lt;p&gt;This is a live article. I'm more than open to other experience from people in a similar situations and practices 😄&lt;/p&gt;

&lt;h3&gt;
  
  
  Attributions
&lt;/h3&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@element5digital"&gt;Element5 Digital&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/OyCl7Y4y0Bk"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>onboarding</category>
      <category>learning</category>
    </item>
    <item>
      <title>What means "High Performing Team" to you?</title>
      <dc:creator>Aleix Morgadas</dc:creator>
      <pubDate>Wed, 04 Mar 2020 18:26:04 +0000</pubDate>
      <link>https://dev.to/aleixmorgadas/what-means-high-performance-team-to-you-3a9f</link>
      <guid>https://dev.to/aleixmorgadas/what-means-high-performance-team-to-you-3a9f</guid>
      <description>&lt;p&gt;I have been using to the term &lt;em&gt;High &lt;del&gt;Performance&lt;/del&gt; Performing Team&lt;/em&gt; when debating with team-mates and friends about performing, way of working, and so on.&lt;/p&gt;

&lt;p&gt;After a while, we realized that we were meaning different things when we were thinking about a &lt;em&gt;High Performing Team&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I would like to know what means &lt;em&gt;High Performing Team&lt;/em&gt; to you, which are the characteristics and how do you identify them.&lt;/p&gt;

&lt;p&gt;Thank you for sharing your thoughts and opinions! &lt;code&gt;(/^▽^)/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Edit: Replaced &lt;del&gt;&lt;code&gt;Performance&lt;/code&gt;&lt;/del&gt; by &lt;code&gt;Performing&lt;/code&gt; due to a misunderstanding 😓 &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>healthydebate</category>
      <category>leadership</category>
    </item>
  </channel>
</rss>
