<?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: Nyasha (Nash) Nziramasanga</title>
    <description>The latest articles on DEV Community by Nyasha (Nash) Nziramasanga (@nyashanziramasanga).</description>
    <link>https://dev.to/nyashanziramasanga</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%2F328699%2Fec7305b6-a52f-497b-8295-f98e4a32f6ca.jpg</url>
      <title>DEV Community: Nyasha (Nash) Nziramasanga</title>
      <link>https://dev.to/nyashanziramasanga</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nyashanziramasanga"/>
    <language>en</language>
    <item>
      <title>9 Learnings from a fast-growing startup</title>
      <dc:creator>Nyasha (Nash) Nziramasanga</dc:creator>
      <pubDate>Mon, 06 Feb 2023 12:09:18 +0000</pubDate>
      <link>https://dev.to/nyashanziramasanga/9-learnings-from-a-fast-growing-startup-4ho</link>
      <guid>https://dev.to/nyashanziramasanga/9-learnings-from-a-fast-growing-startup-4ho</guid>
      <description>&lt;p&gt;I have been at Linktree for more than a year now as a Software Engineer (React Native) in the Mobile team. Linktree is a link in bio solution for creating micro-websites for small businesses and creators. It’s been growing at an average of 80% year on year and things have changed so much from the head count going from 100 to nearly 300 in 2022 to multiple re-organisations, a new office in Melbourne, rebranding and launching the mobile app which hit 2 million unique downloads within 6 months of release.&lt;/p&gt;

&lt;p&gt;This is what I learned working at a fast-growing startup:&lt;/p&gt;

&lt;h2&gt;
  
  
  👊🏾 Impact
&lt;/h2&gt;

&lt;p&gt;As a software engineer, I’ve learned that the key to success in this field is to not complain, but rather to adapt and deliver. This means being flexible and open to change, and always working to find solutions to problems that have the most impact on the end user.&lt;/p&gt;

&lt;h2&gt;
  
  
  🙎🏾‍♂️ People First
&lt;/h2&gt;

&lt;p&gt;Focus on the customers that use the product every day. This means understanding their needs and wants, and building the right features that will make their lives easier. People like to get the most done with the least amount of effort, the focus is to get a task done with a few clicks or no clicks at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛣️ Product development life-cycle
&lt;/h2&gt;

&lt;p&gt;A common feature request first comes from an idea, first create a hypothesis on what problem you are solving for then design a solution for it before creating building and releasing it. Using metrics to measure the impact of a change on test subjects and if it goes well role it out to everyone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6efZ9_uN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gesk0skh5valg81tu0ul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6efZ9_uN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gesk0skh5valg81tu0ul.png" alt="Image description" width="880" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧑🏼‍✈️ Know your manager
&lt;/h2&gt;

&lt;p&gt;A manager can make or break you, it’s important to take the time to know and understand how your manager ticks and what incentives drive them. Having a manager who is supportive and willing to help you grow and develop as an engineer is super important. On the other hand, a bad manager can make your job unbearable and make you want to move teams or even leave the company. The trick is to have a healthy dose of communication at least once a week talking about life and work.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 Complexity
&lt;/h2&gt;

&lt;p&gt;Over-engineering is easier than it looks. Sometimes it’s tempting to add more features or functionality than is necessary, but this can lead to a bloated and confusing product. It’s important to strike a balance between adding value and keeping things simple. Using the Keep It Simple Silly (KISS) principle usually works by breaking down things into smaller more manageable tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  🗂️ Domain-driven development
&lt;/h2&gt;

&lt;p&gt;I’ve also found that domain-driven development works well for medium-sized companies. This approach involves breaking down a monolithic codebase into smaller, more manageable chunks, and building software that is specific to a particular domain or area of the business. The trend I have seen is organisations start with a monolith (literally everything in one spot), and then as they grow they begin to breakup the monolith into smaller micro-services.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Specialise
&lt;/h2&gt;

&lt;p&gt;I believe that having a niche is a strength as a software engineer. By focusing on a specific area of expertise, you can become a subject matter expert (SME) in an area you can deliver the best results. I am hyper-focused on Mobile app development specifically using React Native and have gone on to train and equip web engineers on how to build on mobile apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔬 Experimentation
&lt;/h2&gt;

&lt;p&gt;Making data-driven decisions through metrics and experimentation has been key to my success. This means gathering data on how users are interacting with the app and using that data to inform decisions about what features to add, remove or refine. Experimenting is key to testing out your hypothesis. This means trying out new ideas and approaches, and learning from what works and what doesn’t.&lt;/p&gt;

&lt;p&gt;Lastly, I’ve found that ideas are cheap, but the execution is super expensive. It’s important to have a clear vision and plan for how to execute your ideas and make them a reality. Also, understanding your manager’s incentives can help you navigate company politics and help you choose to work on projects with the most impact.&lt;/p&gt;

</description>
      <category>softwareengineer</category>
      <category>learnings</category>
      <category>linktree</category>
      <category>startup</category>
    </item>
    <item>
      <title>React Native PressableHighlight</title>
      <dc:creator>Nyasha (Nash) Nziramasanga</dc:creator>
      <pubDate>Mon, 05 Sep 2022 01:32:59 +0000</pubDate>
      <link>https://dev.to/nyashanziramasanga/react-native-pressablehighlight-4f7p</link>
      <guid>https://dev.to/nyashanziramasanga/react-native-pressablehighlight-4f7p</guid>
      <description>&lt;p&gt;What if you want to use something similar to TouchableHighlight on both iOS and Android with a ripple effect? Using the Pressable component is not enough, so we can create a PressableHighlight component that handles both a background highlight change for iOS and a ripple effect for android.&lt;/p&gt;

&lt;p&gt;You can find the code on this &lt;a href="https://snack.expo.dev/@nyashanziramasanga/pressablehighlight-example"&gt;snack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9h3mvYOY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1387jvgtn71dzisw1gsc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9h3mvYOY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1387jvgtn71dzisw1gsc.gif" alt="PressableHighlight onPress event" width="662" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For iOS a background highlight onPress&lt;/li&gt;
&lt;li&gt;For Android a ripple effect&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PressableHighlight Component&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;PressableHighlight&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;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;Pressable&lt;/span&gt;
      &lt;span class="nx"&gt;android_ripple&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;
        &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#676B5F&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;}}&lt;/span&gt;
      &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{({&lt;/span&gt; &lt;span class="nx"&gt;pressed&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;Platform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;select&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
          &lt;span class="na"&gt;ios&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;backgroundColor&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pressed&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rgba(0,0,0,0.1)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;transparent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="p"&gt;}),&lt;/span&gt;
        &lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;]}&lt;/span&gt;&lt;span class="o"&gt;&amp;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="nx"&gt;children&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Pressable&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;The android_ripple takes an object which accepts the ripple color, the onPress event can be used to change the backgroundColor which in this case is a black color with an opacity of 10% when pressed and transparent when inactive.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>android</category>
      <category>ios</category>
      <category>mobile</category>
    </item>
    <item>
      <title>React Native Text Cycler using reanimated</title>
      <dc:creator>Nyasha (Nash) Nziramasanga</dc:creator>
      <pubDate>Mon, 04 Apr 2022 13:04:54 +0000</pubDate>
      <link>https://dev.to/nyashanziramasanga/react-native-text-cycler-using-reanimated-h2i</link>
      <guid>https://dev.to/nyashanziramasanga/react-native-text-cycler-using-reanimated-h2i</guid>
      <description>&lt;p&gt;Below is a code snippet on how to make a text looping effect in React Native with reanimated for animations.&lt;/p&gt;

&lt;p&gt;Check out the snack example &lt;a href="https://snack.expo.dev/@nyashanziramasanga/text-cycler"&gt;here&lt;/a&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="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;useEffect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useState&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="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;StyleProp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TextStyle&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-native&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Animated&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;FadeInDown&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;FadeOutUp&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-native-reanimated&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;TextCycler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;textStyles&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;duration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;textColors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#000000&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="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;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setIndex&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;numberOfItems&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;setInterval&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;setIndex&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;previousIndex&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="c1"&gt;// if last item in the array the index is set to 0 meaning start again (looping effect)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;previousIndex&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;numberOfItems&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// go to next index&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;previousIndex&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&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;duration&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// cancels repeating timer&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;gt;&lt;/span&gt; &lt;span class="nx"&gt;clearInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;timeout&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;duration&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;numberOfItems&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;Animated&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Text&lt;/span&gt;
      &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nx"&gt;entering&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;FadeInDown&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nx"&gt;exiting&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;FadeOutUp&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{[&lt;/span&gt;&lt;span class="nx"&gt;textStyles&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;textColors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;}]}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Animated.Text&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;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;TextCycler&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>reactnative</category>
      <category>reanimated</category>
      <category>animations</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Document Store Database - MongoDB (Part 3)</title>
      <dc:creator>Nyasha (Nash) Nziramasanga</dc:creator>
      <pubDate>Fri, 17 Jul 2020 06:11:41 +0000</pubDate>
      <link>https://dev.to/nyashanziramasanga/document-store-database-mongodb-part-3-4226</link>
      <guid>https://dev.to/nyashanziramasanga/document-store-database-mongodb-part-3-4226</guid>
      <description>&lt;p&gt;Continuing from &lt;a href="https://dev.to/nyashanziramasanga/types-of-nosql-data-storages-part-2-mi8?preview=58c23eb87d232ac2b9fd7edb238575e735188199bb5177ef57f941dd73ba89b378fd8b38c818c60edbce71bfb145ece50b30b8312ad19b75de8618ad"&gt;part 2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Document store database technology will be the primary focus after understanding how NoSQL databases work. A definition of document stores will explore the mechanisms that make it different from other NoSQL storage techniques. This will be followed by a list of characteristics and concluded by studying the most popular document database software in use MongoDB.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Document Store?
&lt;/h2&gt;

&lt;p&gt;Document Store, also known as a document-oriented database store, is used to retrieve and store data in NoSQL databases as documents similar to JSON (JavaScript Object Notation) objects. They have similarities with key-value stores when storing data where a document contains pairs of fields and values. Below is an example of a MongoDB stored document which is very similar to a JSON object, this semi-structured format makes it easy for developers to work with.&lt;/p&gt;

&lt;p&gt;Example of a coding boot camp document on a MongoDB database server:&lt;/p&gt;

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

&lt;p&gt;Key-Value pairs in a MongoDB document:&lt;/p&gt;

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

&lt;p&gt;Collection of 3 documents:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Characteristics of Document Stores
&lt;/h2&gt;

&lt;p&gt;Below are the main characteristics found on NoSQL document store databases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JSON-like&lt;/strong&gt; - Stores all information of an object in a single instance similar to a JSON Object in the database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CRUD Operations&lt;/strong&gt; - Supports Create, Read, Update and Delete operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lookup&lt;/strong&gt; - Extracts documents based on a unique key or identifier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Retrieval&lt;/strong&gt; - Can use an API or query language to retrieve documents based on the content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organisation&lt;/strong&gt; – Documents can be organised in a variety of ways for instance as Collections which are a group of documents, Tags which are additional data outside document and Directory hierarchies which are groups of documents organised in a tree-like structure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema-less&lt;/strong&gt; - Does not have to adhere to a predefined schema&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key-value&lt;/strong&gt; - Uses key-value pairs in documents&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  MongoDB
&lt;/h2&gt;

&lt;p&gt;MongoDB is a cross-platform, open-source, schema-free NoSQL database developed using C++ in 2007 by 10gen and is now known as MongoDB Inc. Prominent users of MongoDB include start-up rides hailing services Uber and Lyft.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Structure
&lt;/h3&gt;

&lt;p&gt;MongoDB databases reside on a MongoDB Server which can have multiple database instances. A database has collections which contain one or more documents. Figure 4 below illustrates a MongoDB database structure; In the figure below, the customer database has a collection of usernames and courses documents. The “_id” field is a primary key, a unique identifier type named ObjectId which is created by the application when the document is created.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Database&lt;/strong&gt; – Instance of a MongoDB database on a server&lt;br&gt;
&lt;strong&gt;Collections&lt;/strong&gt; – Group of documents&lt;br&gt;
&lt;strong&gt;Documents&lt;/strong&gt; – Records as JSON objects known as BSON (Binary JSON) a serialized MongoDB format&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Indexing - Fields in documents are indexed by primary or secondary indices.&lt;/li&gt;
&lt;li&gt;Replication - High availability through replication sets with read and writes done on the primary replica when a primary replica fails a secondary replica is elected to be primary.&lt;/li&gt;
&lt;li&gt;Aggregation - An operation that computes results, MongoDB offers 3 types of aggregation pipeline, the map-reduce function and single-purpose aggregation method. The example below uses the count operation as the aggregate to find all books where the author is Tom Ford&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Transaction - Supports ACID transactions.&lt;/li&gt;
&lt;li&gt;Server-Side Execution - JavaScript can be used for querying, aggregation and sent directly to the database for execution.&lt;/li&gt;
&lt;li&gt;Sharding (Load Balancing) - MongoDB uses sharding to scale horizontally, sharding is the process of breaking up large tables into smaller chunks called shards that are spread across multiple servers (S.Choudhury, 2019).&lt;/li&gt;
&lt;li&gt;BSON Format - BSON is a JSON like format which is binary encoded serialization used for storing documents in collections.&lt;/li&gt;
&lt;li&gt;Ad hoc queries - MongoDB supports regular expression searches, field and range queries
Example: Fetching all records from a customer table with employee name NASH.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Capped Collections - Fixed-size collections which will maintain insertion order&lt;/li&gt;
&lt;li&gt;GridFS (File Storage) - Using MongoDB as a file storage system for storing files such as images and documents. File storage is managed by GridFS which is MongoDB’s way of storing files in a database, files are stored in binary chunks which are around 256k each.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;MongoDB Management Service (MMS) - Web tool for managing and tracking databases and back-ups, this also includes performance and tracking hardware metrics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Datatypes
&lt;/h3&gt;

&lt;p&gt;The following data types in the table below are provided by MongoDB.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data Type&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Date&lt;/td&gt;
&lt;td&gt;Date and time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Array&lt;/td&gt;
&lt;td&gt;List of objects E.g. [1,2,3]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Null&lt;/td&gt;
&lt;td&gt;Missing fields&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Object&lt;/td&gt;
&lt;td&gt;BSON object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ObjectId&lt;/td&gt;
&lt;td&gt;12 bytes long binary values as unique identifiers names “_id”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Character sequence types&lt;/td&gt;
&lt;td&gt;Scalar types&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Database Document Operations
&lt;/h3&gt;

&lt;p&gt;MongoDB uses its own API to query data from a database, In the table below only the main CRUD operations will be examined namely Selection, Insert, Update and Delete.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Queries&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Query&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Selection&lt;/td&gt;
&lt;td&gt;Used to search for a document in a collection, the find operation is equivalent to WHERE clause in SQL.&lt;/td&gt;
&lt;td&gt;Search for a book with the title Hello World &lt;code&gt;db.books.find({title:"Hello World"});&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Insert&lt;/td&gt;
&lt;td&gt;Inserting a document into a collection using the insert operation, the save operation can also be used. MongoDB automatically appends a new primary key field “_id” to the new document&lt;/td&gt;
&lt;td&gt;E.g. Save a book called DSAs &lt;code&gt;db.books.insert({title: "DSAs"});&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Updates&lt;/td&gt;
&lt;td&gt;Updating a document in the database, the first argument specifies the selection criteria of the document to be selected and the second argument is the field to change. Uses update operation, however, there are more operations used for updating records such as updateOne, updateMany and findOneAndUpdate&lt;/td&gt;
&lt;td&gt;E.g. Update book with id 1 to COMP3771 &lt;code&gt;db.books.update({"_id":1},{"title":"DSAs"});&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete&lt;/td&gt;
&lt;td&gt;The remove operation is used to delete a document based on the selection criteria, also findOneAndDelete operation can be used to delete a document&lt;/td&gt;
&lt;td&gt;E.g. Delete a book with id 1 &lt;code&gt;db.books.remove({"_id:1"})&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>mongodb</category>
      <category>nosql</category>
      <category>database</category>
    </item>
    <item>
      <title>Understanding Non-Relational (NoSQL) Databases (Part 1)</title>
      <dc:creator>Nyasha (Nash) Nziramasanga</dc:creator>
      <pubDate>Fri, 17 Jul 2020 06:11:03 +0000</pubDate>
      <link>https://dev.to/nyashanziramasanga/understanding-non-relational-nosql-databases-part-1-1gl9</link>
      <guid>https://dev.to/nyashanziramasanga/understanding-non-relational-nosql-databases-part-1-1gl9</guid>
      <description>&lt;p&gt;This article is a 3 part series around NoSQL to help understand the features and different types of Non-Relational (NoSQL) databases.&lt;/p&gt;

&lt;h2&gt;
  
  
  History of NoSQL Databases
&lt;/h2&gt;

&lt;p&gt;Relational database model the foundation of RDBMSs (Relational Database Management Systems), was invented in 1970 by Edgar Codd a Computer Scientist working at IBM (E. Codd, 1970). Relational databases arrange structured data into rows and columns associated with a specific primary key for each row, it is also known as SQL (Structured Query Language). Popular SQL databases are Microsoft SQL Server, MySQL, and Oracle Database.&lt;/p&gt;

&lt;p&gt;The term Non-Relational databases (NoSQL) was first termed in 1998 for a relational database that didn’t use SQL (C. Strozzi, 2007), and was picked up in 2009 at conferences promoting NoSQL such as the NoSQL meetup in San Francisco organised by Jon Oskarsson a Last.FM developer. Erik Evans a blogger and Rackspace employee made the NoSQL term popular and described the ambitious movement as “The whole point of seeking alternatives is that you need to solve a problem that relational databases are a bad fit for” (E. Evans, May 2009).&lt;/p&gt;

&lt;p&gt;Eric identified a few shortcomings with RDBMSs that needed to be addressed due to the challenges faced when handling sizeable amounts of unstructured data, which was growing exponentially because of the rise of social media platforms such as Facebook. This is where NoSQL came in to handle unstructured big data efficiently to maximise business value and bring customer satisfaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are NoSQL Databases
&lt;/h2&gt;

&lt;p&gt;A Non-Relational Database is a database technology that does not incorporate Relational Database Management Systems (RDBMS) strict rules of modelling structured data as tables, rows, and columns. They are also known as NoSQL databases and have risen in importance because of the rise of Big Data which refers to large, diverse sets of unstructured data that grow at an ever-increasing rate (T. Segal, July 2019). &lt;/p&gt;

&lt;p&gt;NoSQL databases refer to a broad class of non-relational databases namely key-value, wide-column, document and graph databases which use Application Programming Interfaces (APIs) to provide Create, Read Update, and Delete (CRUD) access, unlike classical RDBMSs which uses SQL as the primary query language.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of NoSQL Databases
&lt;/h2&gt;

&lt;p&gt;Below are the benefits of using NoSQL databases over RDBMSs:&lt;/p&gt;

&lt;h3&gt;
  
  
  High Scalability
&lt;/h3&gt;

&lt;p&gt;NoSQL Databases handles partitioning (sharding) of data across several servers enabling horizontal scaling as data storage requirements grow. Compared to RDBMSs which vertically scale by upgrading to more powerful thus expensive hardware as demand grows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lower Cost
&lt;/h3&gt;

&lt;p&gt;NoSQL Databases are designed to use cheap commodity server clusters for the management and storage of data. On the other hand, RDBMSs use expensive storage systems and patented servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  No Complex Relationships
&lt;/h3&gt;

&lt;p&gt;NoSQL databases support their own access language through APIs to interpret the data being stored which gives developers flexibility in data access, rather than using SQL to make multiple complex table joins on RDBMSs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unstructured Data
&lt;/h3&gt;

&lt;p&gt;Unstructured data brings flexibility and rich interleaved information web which can be used for advanced searching and data analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Higher Throughput
&lt;/h3&gt;

&lt;p&gt;Some NoSQL databases have higher data throughput compared to traditional RDBMSs, for example, Googles Bigtable (column-store Hypertable) allows Zvents search engine to store one billion data cells per day (J. Doug April 23, 2008).&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues of NoSQL Databases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Security Issues
&lt;/h3&gt;

&lt;p&gt;NoSQL database face considerable security issues such as being vulnerable to SQL Injection, Lack of encryption during client-server communication and unable to use external encryption tools like LDAP and Kerberos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lack of Standardisation
&lt;/h3&gt;

&lt;p&gt;Database designs and query languages of NoSQL databases vary between different software vendors and services, this presents a learning curve when learning multiple NoSQL database structures and queries.&lt;/p&gt;

&lt;h3&gt;
  
  
  New Technology
&lt;/h3&gt;

&lt;p&gt;NoSQL is new compared to traditional RDBMSs with lesser support and adoption by larger organisations such as banks. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/nyashanziramasanga/types-of-nosql-data-storages-part-2-mi8?preview=58c23eb87d232ac2b9fd7edb238575e735188199bb5177ef57f941dd73ba89b378fd8b38c818c60edbce71bfb145ece50b30b8312ad19b75de8618ad"&gt;[Part 2] Types of NoSQL Data Storages&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/nyashanziramasanga/document-store-database-mongodb-part-3-3dne-temp-slug-9317257?preview=5243e39ccf173731c271e0db7b47d254ff6bacab568a704d140589d1fc694ad9d26aaf87ce216b7b2ed88938303e8c63a7f69bcd36f38ea7eea37ef3"&gt;[Part 3] Document Store Database - MongoDB&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>nosql</category>
    </item>
    <item>
      <title>Types of NoSQL Data Storages (Part 2)</title>
      <dc:creator>Nyasha (Nash) Nziramasanga</dc:creator>
      <pubDate>Thu, 16 Jul 2020 12:26:07 +0000</pubDate>
      <link>https://dev.to/nyashanziramasanga/types-of-nosql-data-storages-part-2-mi8</link>
      <guid>https://dev.to/nyashanziramasanga/types-of-nosql-data-storages-part-2-mi8</guid>
      <description>&lt;p&gt;Continuing from &lt;a href="https://dev.to/nyashanziramasanga/understanding-non-relational-nosql-databases-32aa-temp-slug-7517842/edit"&gt;part 1&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Characteristics of NoSQL data storage
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Often Open Source&lt;/li&gt;
&lt;li&gt;Non-Relational (NoSQL)&lt;/li&gt;
&lt;li&gt;Schema-less&lt;/li&gt;
&lt;li&gt;Horizontally scalable&lt;/li&gt;
&lt;li&gt;Uses BASE consistency&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Types of NoSQL Data Storages
&lt;/h2&gt;

&lt;p&gt;NoSQL uses different data stores to optimise for specific purposes based on the system requirements, below in Table 4 there are 4 categories of NoSQL data stores and examples of vendor software offerings:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Key-Value Store
&lt;/h3&gt;

&lt;p&gt;Store data (a value) and apply a label to it (a key) and store it in either in-memory or storage system optimised for fast data retrieval. Used for caching objects in applications.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://redis.io/"&gt;Redis&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Document Store
&lt;/h3&gt;

&lt;p&gt;Designed for storage, retrieval, and managing of document-oriented information. Document stores save all information of an object as an instance in the database, instead of spreading data amongst different tables as with relations databases.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://www.mongodb.com/"&gt;MongoDB&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Wide Column Store
&lt;/h3&gt;

&lt;p&gt;Uses tables, rows and dynamic columns, different to relational databases as each row does not require the same column allowing for horizontal scaling of the database a use case is storing user profiles&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="http://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Graph Database
&lt;/h3&gt;

&lt;p&gt;Stores data as nodes and edges. Nodes store the object data and Edges stores information on the relationship of the nodes. Used to traverse relationships and patterns in data use cases are social networks, artificial intelligence, and a recommendation engine.&lt;/p&gt;

&lt;p&gt;Example: &lt;a href="https://neo4j.com/"&gt;Neo4j&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The following table below shows the types of NoSQL databases and features associated with them:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Performance&lt;/th&gt;
&lt;th&gt;Scalability&lt;/th&gt;
&lt;th&gt;Flexibility&lt;/th&gt;
&lt;th&gt;Complexity&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Document Store&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Variable&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Column Store&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low Kev-value Store&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Graph-based&lt;/td&gt;
&lt;td&gt;Variable&lt;/td&gt;
&lt;td&gt;Variable&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://dev.to/nyashanziramasanga/understanding-non-relational-nosql-databases-32aa-temp-slug-7517842/edit"&gt;[Part 1] Understanding Non-Relational (NoSQL) Databases (Part 1)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/nyashanziramasanga/document-store-database-mongodb-part-3-3dne-temp-slug-9317257?preview=5243e39ccf173731c271e0db7b47d254ff6bacab568a704d140589d1fc694ad9d26aaf87ce216b7b2ed88938303e8c63a7f69bcd36f38ea7eea37ef3"&gt;[Part 3] Document Store Database - MongoDB&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>nosql</category>
    </item>
    <item>
      <title>What I learned as a Junior Software Developer at a startup</title>
      <dc:creator>Nyasha (Nash) Nziramasanga</dc:creator>
      <pubDate>Sun, 22 Mar 2020 22:57:56 +0000</pubDate>
      <link>https://dev.to/nyashanziramasanga/junior-software-developer-1-year-anniversary-at-a-startup-5di6</link>
      <guid>https://dev.to/nyashanziramasanga/junior-software-developer-1-year-anniversary-at-a-startup-5di6</guid>
      <description>&lt;p&gt;Hello 👋🏿, I'm a Software Developer specializing in Javascript (JS) mainly the MERN Stack (Mongo DB, Express.js, React.js, Node.js). I just hit my 1-year junior dev anniversary and thought of sharing my experience in the industry.&lt;/p&gt;

&lt;p&gt;Here is what I learned after 1 good year junior deving at a startup:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. 📖 Continuous learning
&lt;/h2&gt;

&lt;p&gt;The startup was mainly a Javascript house, which I had very little experience with since I worked with PHP in my final year internship. However, I was up for the challenge to learn Javascript from the ground up. After a month, I slowly fell in love with the MERN Stack and with how it works and became pretty good after 3 months. It used to take me a day (6 - 8 hours) just to spin up an API with CRUD (Create, Read, Update and Delete) functionality, now it takes me less than an hour depending on the functionality.&lt;/p&gt;

&lt;p&gt;The key takeaway was to be hungry and willing to learn a new tech stack and get obsessed with it so much that you become a beast 💪 at it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MERN Stack&lt;/strong&gt; - is a javascript web development framework consisting of MongoDB, ExpressJS, ReactJS, and NodeJS for building web apps.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  2. 🏎️💨 High-velocity
&lt;/h2&gt;

&lt;p&gt;Being in a start-up, I carried so many responsibilities. One day I could be doing customer service, the other consulting or software deving. I found this challenging at first since all I wanted to do was be a software dev. I soon realized that's the nature of startups they "pivot" a lot and your skills pivot along with it, especially to keep clients happy and engaged.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. 🤝 Expectation management
&lt;/h2&gt;

&lt;p&gt;Managing expectations was probably the hardest part for me since I thought I could code the shit out of anything. I later realized that when working on a project the easiest part is actually coding/building the feature or app service, the hardest part was accounting and managing all the unforeseen hurdles like changing business priorities, external factors, etc.&lt;/p&gt;

&lt;p&gt;The best way we got around this as a team was through using &lt;a href="https://trello.com/"&gt;Trello&lt;/a&gt;, daily stand up meetings and bi-weekly sprint planning sessions to visualize all the projects in progress and manage priorities accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 👨‍👨‍👦 Dev Team
&lt;/h2&gt;

&lt;p&gt;The dev team was probably the best part, everyone was always willing to help and share their knowledge. I learned so much from everyone and we all had a good time pair programming which was amazing in sharing skills and hyper-productive. We also went to dev meetups and events around Melbourne mostly the &lt;a href="https://juniordev.io/"&gt;Junior Dev Melbourne&lt;/a&gt; events.&lt;/p&gt;

&lt;p&gt;Overall, it was a great first year as a software developer and I feel more confident in taking on larger, challenging projects and working with great devs to make better software for all. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>junior</category>
      <category>developer</category>
      <category>career</category>
    </item>
  </channel>
</rss>
