<?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: Emma Donery</title>
    <description>The latest articles on DEV Community by Emma Donery (@emma_donery).</description>
    <link>https://dev.to/emma_donery</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%2F672729%2F32b7cbe2-e620-4527-a8d9-49922ad139e3.jpeg</url>
      <title>DEV Community: Emma Donery</title>
      <link>https://dev.to/emma_donery</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/emma_donery"/>
    <language>en</language>
    <item>
      <title>Data Fallacies: I6 common Data Fallacies and how to Avoid them</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Mon, 12 Sep 2022 19:22:16 +0000</pubDate>
      <link>https://dev.to/emma_donery/data-fallacies-i6-common-data-fallacies-and-how-to-avoid-them-3g21</link>
      <guid>https://dev.to/emma_donery/data-fallacies-i6-common-data-fallacies-and-how-to-avoid-them-3g21</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HK4GqN5d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h1db96a2hz85pexr3i0m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HK4GqN5d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h1db96a2hz85pexr3i0m.png" alt="Image description" width="880" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The core advantage of data is that it tells you something about the world that you didnt know before. ~ Hilary Mason, data scientist and founder of Fast Forward Labs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction👋&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Data collection and analysis are essential to the long-term success of your business. Whether it be profitability analysis or looking for ways to improve processes, data guides the process. However, data analysis is not something to jump into blindly. While working on drawing meaningful conclusions from your data, you are likely to encounter many challenges. It may be difficult to collect or identify the right data streams. The data itself may be incomplete, inconsistent, or unavailable. However, having identified the data you need, and why you need it, you still may not be out of the woods.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What are Data Fallacies&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Is your Data Tricking you?????&lt;/em&gt;&lt;/strong&gt; 🤔&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Fallacies&lt;/strong&gt; are common tricks that data can play on you which lead to mistakes in data interpretation and analysis This article points out the common data fallacies and how to avoid them&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔷 Cherry Picking 🍒&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e8QlD40u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663009140602/aekaOapgm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e8QlD40u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663009140602/aekaOapgm.png" alt="image.png" width="880" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The art of cherry picking, also known as the &lt;strong&gt;&lt;em&gt;fallacy of incomplete evidence&lt;/em&gt;&lt;/strong&gt; is the practice of selecting results that fit your claim and excluding those that don't. Simply stating, Cherry picking, suppressing evidence, or the fallacy of incomplete evidence is the act of pointing to individual cases or data that seem to confirm a particular position while ignoring a significant portion of related cases or data that may contradict that position&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Example&lt;/em&gt;&lt;/strong&gt; : Being dishonest with data. An example of intentional cherry-picking data is when a person or organization mentions only a small number of studies out of all studies published on a certain topic, in order to make it look as if the scientific consensus matches theirs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cherry picking can be deliberate or accidental Intentional cherry-picking data, by purposely omitting available evidence, is often done to make arguments more persuasive helping to support a particular position. Unintentional cherry-picking data is an example of one way people process information in order to make decisions. People who engage in unintentional cherry-picking of data tend to process information in a way that confirms the beliefs they already have. When people feel they are right and encounter new or remember old information, they tend to focus on information that confirms their beliefs and ignore information that contradicts them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to avoid&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The easiest way to avoid cherry-picking is not to do it! Researchers should always present the full range of their findings, not just the results that make them seem most credible.&lt;/li&gt;
&lt;li&gt;When reporting on findings, researchers should be careful to avoid choosing words that imply meaning beyond what actually happened in the experiment.&lt;/li&gt;
&lt;li&gt;Researchers can prevent cherry picking when choosing participants for a study and when presenting their research by adopting solid research practices include expanding the sample size, carrying out double-blind studies, and carefully selecting their words.&lt;/li&gt;
&lt;li&gt;Researchers should utilize respondents from a variety of backgrounds (where possible) to prevent cherry-picking over the course of conducting a study and to reduce the prejudice that occurs with a limited perspective. Or, if their study just needs a smaller set of participants, they shouldn't try to generalize their results to a wider audience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔶 Cobra effect&lt;/strong&gt; 🐍
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jVXurS4---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663008085639/etH2tlDOU.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jVXurS4---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663008085639/etH2tlDOU.png" alt="image.png" width="880" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cobra effect is also known as a &lt;strong&gt;&lt;em&gt;Perverse Incentive&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt; The Cobra Effect is when an attempted solution results in unintended consequences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Origin:&lt;/strong&gt; The term originates from the story of a policy pursued by the British colonial government in India to tackle the menace caused by a huge population of cobras out in the open. It tried to incentivize the capture of cobras by providing a bounty, but the policy led to an actual increase in the cobra population as people began to breed new cobras in order to seek the bounty.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The cobra effect is usually cited to emphasize that good intention alone does not necessarily translate into desirable results.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;How to Avoid the Cobra Effect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are a few ways to avoid the cobra effect in survey research.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The first step is always to be aware of the possibility that there may be an unexpected side effect to the survey/study youre running.&lt;/li&gt;
&lt;li&gt;A second way to avoid the cobra effect is to have a robust test and repeat process for your surveys. By continually testing and retesting your surveys, youll be able to spot any potential issues before they become problems.&lt;/li&gt;
&lt;li&gt;The third step is to be clear with your question wording and instructions. There are lots of ways that ambiguous language can lead to unintended consequences in surveys, so be especially careful here&lt;/li&gt;
&lt;li&gt;Finally, it may help to use a mixture of different types of questions in your surveys if possible. For example, you might use both multiple-choice and open-ended questions in order to get more accurate information about what your respondents are thinking and feeling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔷 Danger of summary Metrics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7BAxdiE---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990032707/LlnCWI3U5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7BAxdiE---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990032707/LlnCWI3U5.png" alt="summary.png" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Summary metrics - taking a series of data and summarizing it into a single data point like a total or average It can be misleading to only look at the summary metrics of data sets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to avoid:&lt;/strong&gt; Never trust summary statistics alone; always visualize your data so you have a clearer picture of how and why your metrics are changing.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔶 Data dredging&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WSx0AJzl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663008276565/9N25lyk8W.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WSx0AJzl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663008276565/9N25lyk8W.png" alt="image.png" width="880" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also known as &lt;strong&gt;&lt;em&gt;Data Dredging, Data Fishing, Data Snooping, Data Butchery&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Data dredging refers to the failure to acknowledge that the correlation was in fact the result of chance. This is done by performing many tests and only looking at the ones that come back with an interesting result. Simply defining, "it is seeking more information from a data set than it actually contains.&lt;/p&gt;

&lt;p&gt;It is the inverse of Cherry Picking. With Cherry Picking you pick the data that is most interesting, and with Data Dredging you pick the conclusion that is most interesting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; First formulate a hypothesis and then test it. Do not use the same data to both construct and test your hypothesis.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔷 Gambler's Fallacy&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PTPQnn4u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990056296/nEpSmdYX1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PTPQnn4u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990056296/nEpSmdYX1.jpg" alt="gamblers.jpg" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gambler's fallacy also known as &lt;strong&gt;&lt;em&gt;Monte Carlo Fallacy&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is the mistaken belief that because something has happened more frequently than usual, it's now less likely to happen in the future and vice versa&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to avoid&lt;/strong&gt; : Ensure you evaluate whether your assumptions are based on statistical likeliness or more personal intuition.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔶 False Causality&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QT5OxYnh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663006724326/CDkSg8MlX.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QT5OxYnh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663006724326/CDkSg8MlX.png" alt="image.png" width="880" height="698"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a common mistake and is known for the phrase 'cum hoc ergo propter hoc' ('with this, therefore because of this.') It is an error to falsely assume when two events occur together that one must have caused the other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt; : When you see a correlation, there can be no conclusion made regarding the existence or the direction of a cause-and-effect relationship. If you do not know the causation, do more research. In other words, Never assume causation because of correlation alone-always gather more evidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔷 Gerrymandering&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uBEZDOeM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663006903845/2gCp_jPl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uBEZDOeM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663006903845/2gCp_jPl5.png" alt="image.png" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is the practice of deliberately manipulating boundaries of political districts in order to sway the result of an election.&lt;/p&gt;

&lt;p&gt;It is possible to change the boundaries of electoral districts in many political systems to favor one party over another, for as by including more rural areas in one district to disadvantage the party that is more popular in cities. When examining data, a related occurrence called the Modifiable Areal Unit Problem (MAUP) can take place. The outcome can vary depending on how you define the regions in which to aggregate your data, such as how you define "Northern counties." Data grouping scales can also have a significant impact. Whether utilizing postcodes, counties, or states, the results can vary greatly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔶 Hawthorne effect&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8fOjRuGr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663007201380/ATDsbomnQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8fOjRuGr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663007201380/ATDsbomnQ.png" alt="image.png" width="302" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also known as the &lt;strong&gt;&lt;em&gt;Observer Effect&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is the effect that something changes just because you are observing it. Often occurs when collecting data on human research subjects&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt; : When using human research subjects, its important to analyze the resulting data with consideration for the Hawthorne Effect.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔷 McNamara Fallacy&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IH1XfmD7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663007549187/tEPsuIXQt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IH1XfmD7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663007549187/tEPsuIXQt.png" alt="image.png" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is also known as the &lt;strong&gt;&lt;em&gt;quantitative fallacy&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The McNamara Fallacy is the mistake of making a decision based solely on metrics and ignoring all others. Relying solely on metrics in complex situations can cause you to lose sight of the bigger picture.&lt;/p&gt;

&lt;p&gt;It is named for Robert McNamara, the US secretary of defense (19611968). Robert McNamara believed truth could only be found in data and statistical rigor, by measuring success in the Vietnam War by enemy body count and ignored other important insights like the mood of the US public and feelings of the Vietnamese people&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to avoid&lt;/strong&gt; : Although data and numbers can tell you a lot, you should not obsess over optimising numbers while ignoring all other information&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔶 Overfitting&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OE8pKeEG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663007706472/tD_J9sdko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OE8pKeEG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663007706472/tD_J9sdko.png" alt="image.png" width="880" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overfitting is probably the best-known fallacy. According to &lt;a href="https://www.investopedia.com/terms/o/overfitting.asp#:~:text=Overfitting%20is%20an%20error%20that,with%20results%20that%20are%20flawed."&gt;Investopedia&lt;/a&gt;, &lt;strong&gt;&lt;em&gt;Overfitting&lt;/em&gt;&lt;/strong&gt; is an error that occurs in data modeling as a result of a particular function aligning too closely to a minimal set of data points&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Techniques to reduce overfitting:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increase training data.&lt;/li&gt;
&lt;li&gt;Reduce model complexity.&lt;/li&gt;
&lt;li&gt;Early stopping during the training phase (have an eye over the loss over the training period as soon as loss begins to increase stop training).&lt;/li&gt;
&lt;li&gt;Ridge Regularization and Lasso Regularization&lt;/li&gt;
&lt;li&gt;Use dropout for neural networks to tackle overfitting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔷 Publication Bias&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xiL55hts--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990120910/XYo_4_xEe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xiL55hts--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990120910/XYo_4_xEe.png" alt="publication.png" width="750" height="750"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Publication bias is defined as the failure to publish the results of a study on the basis of the direction or strength of the study findings. How interesting a research finding is affected how likely it is to be published, distorting our impression of reality.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔶 Regression Toward the mean&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BhgLAmMu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990162701/LRIpPtZqe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BhgLAmMu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990162701/LRIpPtZqe.jpg" alt="mean.jpg" width="626" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is also called &lt;strong&gt;&lt;em&gt;reversion to the mean&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;reversion to mediocrity&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Regression Toward the mean is a concept that refers to the fact that if one sample of a random variable is extreme, the next sampling of the same random variable is likely to be closer to its mean. It is just a fancy way of saying that when something happens thats unusually good or bad, over time it will revert back towards the average.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔷 Sampling Bias&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DTI6l_DK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990175686/OwmerQo16.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DTI6l_DK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1662990175686/OwmerQo16.jpg" alt="sampling.jpg" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This occurs when conclusions are drawn from a set of data that isn't representative of the population you're trying to understand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to avoid&lt;/strong&gt; : make sure that your data sample represents the population accurately so that whatever conclusions you make about your sample, you can conclude the same about your population.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔶 Simpson's Paradox&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ll3LIPUz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663007819026/1mr93arVF.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ll3LIPUz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663007819026/1mr93arVF.png" alt="image.png" width="880" height="713"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also known as &lt;strong&gt;&lt;em&gt;Yule-Simpson's Effect&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is a phenomenon in which a trend appears in different groups of data but disappears or reverses when the groups are combined.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to avoid&lt;/strong&gt; : This fallacy is difficult to overcome beforehand. However, if you ever encounter this weird phenomenon by finding a bias that reverses if you look at different groups within your data, then know that you have not necessarily made a mistake. You may simply have found an example of Simpson's paradox.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔷 Survivorship Bias&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t2a4XVjY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663008867730/vAnOXwSUG.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t2a4XVjY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663008867730/vAnOXwSUG.png" alt="image.png" width="602" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drawing conclusions from an incomplete set of data, because that data has 'survived' some selection criteria It is the error of drawing conclusions from an incomplete set of data because that data has 'survived' some selection criteria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to avoid&lt;/strong&gt; : When concluding something about the data that has survived a selection process, make sure you do not generalize this conclusion to the entire population&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;🔶 Texas Sharpshooter Bias&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XKylS-9p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663009100184/IqEUAfaFe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XKylS-9p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663009100184/IqEUAfaFe.png" alt="image.png" width="880" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It arises when a person has a large amount of data, but only focuses on a small subset of this data. In many cases because this subset leads to the most interesting conclusion&lt;/p&gt;

&lt;p&gt;It is named after a fictitious sharpshooter who lets off a lot of shots at the side of a barn, looks at it, finds a tight grouping of hits, paints a target around it, and then claims to be a 'great sharpshooter'. This bias is related to the clustering illusion, which is the tendency in human cognition to interpret patterns where none actually exist.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Data tip&lt;/strong&gt; 💡 : Data is not about adding more to your plate. Data is about making sure you have the right things in your plate.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Final thoughts 💭&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Analyzing data comes with its own pitfalls. Data is not, in and of itself, the key to success. However, when collected, analyzed, and used in a precise manner, with precise goals, it can make the difference between success and failure. To do that, you need to make sure that the entire process is free of bias. Now that you are aware of the pitfalls you may encounter, you are ready to tackle your data and start analyzing.&lt;/p&gt;

&lt;p&gt;Please fell free to leave a feedback.&lt;/p&gt;

&lt;p&gt;We can connect on &lt;a href="https://twitter.com/Emma_Donery"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/emma-donery/"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://www.instagram.com/emma_donery/"&gt;Instagram&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find my articles helpful, you can support my work by buying me a coffee.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/emmadonery"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yULDs43V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1663009728222/Aqb4DJaQn.png" alt="download-assets-sm-3.png" width="261" height="73"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Guide to Becoming a Self-taught Software Engineer: Best tools and practices</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Mon, 29 Aug 2022 20:45:12 +0000</pubDate>
      <link>https://dev.to/emma_donery/guide-to-becoming-a-self-taught-software-engineer-best-tools-and-practices-379j</link>
      <guid>https://dev.to/emma_donery/guide-to-becoming-a-self-taught-software-engineer-best-tools-and-practices-379j</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jNzVd3CV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661797568714/F1s3PwFW4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jNzVd3CV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661797568714/F1s3PwFW4.png" alt="Grey and Black Professional LinkedIn Article Cover Image.png" width="880" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The truth is, you do not need to be a genius to be a software engineer. Surprisingly, in 2022 most people still think that to become a software engineer, they need a degree or at least a diploma. It's helpful, of course. But the truth is, most of outstanding and amazing SEs out there have no degree. 💪&lt;/p&gt;

&lt;p&gt;Becoming a self-taught software engineer wont happen overnight. Before you land your first software engineer job, it can take months to years to learn all of the necessary skills (i.e., programming languages, tools, API design). If you're willing to put in the effort, you can become a software engineer whether you're reentering the workforce or are stuck in a job you detest.&lt;/p&gt;

&lt;p&gt;💡 The &lt;strong&gt;good news&lt;/strong&gt; is that its totally possible to learn how to become a software Engineer from scratch. Tis article is going to raise the curtain and demonstrate to you how to. Read on then!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Who Is a Software Engineer?&lt;/strong&gt; 👨💻
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;software engineer&lt;/strong&gt; is someone who writes the code behind software products such as video games, operating systems, mobile applications, software features, robots, etc.&lt;/p&gt;

&lt;p&gt;Software engineering is a rewarding, convenient for working from home, and in-demand computer science career&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Software Engineering?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Software developer work perks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;High salary&lt;/strong&gt; 🤑&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;According to indeed.com, the average base salary for a software engineer salary in United States is approximately &lt;strong&gt;$93,858&lt;/strong&gt; per year.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remote-friendly / WFH responsibilities&lt;/strong&gt; 🌴 / 🏠 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Globalization is a chance. You don't have to live in Silicon Valley to get a solid paycheck. You don't have to spend a few hours commuting to the office and home. You can live on the banks of a clean river, breathe fresh air and work in the rhythm that suits you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Amazing Work benefits&lt;/strong&gt; 🎉&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most common benefits for Software Engineers include: 401(k), Dental, diability and life insurance, Gym membership, health insurance, Employee assistance program, paid time off, paid sick-leave, Professional development assistance, unlimited paid time off, relocation assistance, retirement plan, stock option plan and so much more&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Casual work environment&lt;/strong&gt; 👖👒💞 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Software engineering professions frequently include comfortable, relaxed work conditions in addition to flexible schedules.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure&lt;/strong&gt; : Im a proud beneficiary of some of the resources mentioned in this article.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;👣How To Become a Software Engineer Without a Degree&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Start Right&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--akQ2hD4b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661805238957/rjCPwqZvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--akQ2hD4b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661805238957/rjCPwqZvw.png" alt="image.png" width="871" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Gather inspiration 💫/📝&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reading about other peoples success stories, who started out like you will get you inspired and keep you motivated 🎙 &lt;a href="https://learntocodewith.me/podcast/"&gt;The Learn to Code With Me Podcast&lt;/a&gt; has a lot of inspiring stories of people who made it through this journey.&lt;/p&gt;

&lt;p&gt;Also, you can readthis article about the &lt;a href="https://softwaredevelopmentinsights.com/15-successful-self-taught-software-engineers/"&gt;15 self taught software engineers&lt;/a&gt; by Dennis&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Learn a Programming Language 🖥&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are several programming languages to choose from when youre learning Software Engineering. Common entry-level programming languages for software engineers include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Javascript&lt;/strong&gt; - If youre brand-new to coding, a good rule of thumb is to start with &lt;em&gt;HTML/CSS&lt;/em&gt; and &lt;em&gt;JavaScript&lt;/em&gt; since these languages provide a good intro to programming and web development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Useful resources&lt;/strong&gt; :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;HTML/CSS&lt;/em&gt;: &lt;a href="https://www.udemy.com/course/design-and-develop-a-killer-website-with-html5-and-css3/"&gt;Build Responsive Real-World Websites with HTML and CSS&lt;/a&gt; by Jonas Schmedtmann&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;JavaScript&lt;/em&gt;: &lt;a href="https://www.udemy.com/course/javascript-course-2022-from-zero-to-expert/"&gt;The Complete JavaScript Course 2022: From Zero to Expert!&lt;/a&gt; by Waleed Morgan&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python&lt;/strong&gt; - If you arent really sure what you want to specialize in, you may want to explore Python.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;For beginners, I would suggest Python (or similar scripting languages) to start with, said Dr. S.M. Yiu. It is an easy language to pick up, highly productive, and also is useful in many practical situations such as data analysis.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Java&lt;/strong&gt; - This could be a good option if you plan on doing back-end development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With so many languages out there, it can be hard to know which one to pick. I recommend taking some time to learn about the different languages. This podcast episode on 🎙 &lt;a href="https://learntocodewith.me/podcast/what-programming-language/"&gt;picking a programming language&lt;/a&gt; is a great place to start.&lt;/p&gt;

&lt;p&gt;Ultimately, the language you pick should be relevant to your career goals. For example, if you want to be a front-end web developer, youll want to make sure that you understand javascript&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Learn Data Structures and Algorithms 📚&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once youve mastered one or two programming languages, the next step is to familiarize yourself with data structures and algorithms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful resources&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513"&gt;Intro to Data Structures and Algorithms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.algoexpert.io/data-structures"&gt;Data Structures Crash Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/specializations/data-structures-algorithms"&gt;Data Structures and Algorithms Specialization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://algorithm-visualizer.org/"&gt;Algorithm Visualizer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/data-structures/"&gt;GeeksforGeeks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Learn Smart&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L9BCVnsx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661805048972/UD13uBi5Z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L9BCVnsx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661805048972/UD13uBi5Z.png" alt="image.png" width="870" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Pick a good platform or course&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;There are so many platforms and course out there tio choose from. However, i am goint to list the most essential platforms that helped me out in my journey.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/"&gt;Coursera&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/"&gt;Udemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/learning/"&gt;LinkedIn Learning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udacity.com/"&gt;Udacity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pluralsight.com/"&gt;Pluralsight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/"&gt;Codecademy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/"&gt;Freecodecamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.skillshare.com/"&gt;Skillshare&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔷 Practice, Practice...More Practice&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Don't just follow coding tutorials. Build real projects. This will show potential employers that you can hack it 🎉&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Learning by doing&lt;/em&gt; - this is the only way or perfecting skills.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You must set aside a significant amount of time every day, every week, to learning and practicing skills&lt;/p&gt;

&lt;p&gt;To motivate you to practice, try doing the &lt;a href="https://www.100daysofcode.com/"&gt;#100DaysOfCode&lt;/a&gt; challenge. In this challenge, you code a minimum of an hour every day for 100 days and tweet your progress every day with the &lt;a href="https://www.100daysofcode.com/"&gt;#100DaysOfCode&lt;/a&gt; hashtag to stay accountable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Familiriaze and use tools that Software engineers use&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, what you want to do from the beginning is to build how real software engineers build as to get yourself accustomed to coding and solidifying the concepts in a real-world environment These tools include&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git or GitHub - Check out &lt;a href="https://learntocodewith.me/go/code-with-mosh-ultimate-git-mastery/"&gt;The Ultimate Git Mastery Course&lt;/a&gt; by Code With Mosh, that teaches Git mastery&lt;/li&gt;
&lt;li&gt;The command-line interface&lt;/li&gt;
&lt;li&gt;Bitbucket&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔷 Stay Informed 👀&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This will help you to stay on top of new developments and figure out the best things to learn next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful Podcasts to keep you updated&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://podcasts.apple.com/us/podcast/techmeme-ride-home/id1355212895"&gt;Techmeme Ride Home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.wsj.com/podcasts/tech-news-briefing?mod=rsswn"&gt;Tech News Briefing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Useful tech newsletters to keep you Up-to-date&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.strictlyvc.com/"&gt;StrictlyVC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tldr.tech/"&gt;TLDR&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://accounts.builtin.com/Signup?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3D0fbc5326-c7c0-410d-9509-38c4d06bd29d%26redirect_uri%3Dhttps%253A%252F%252Fwww.builtinnyc.com%252Fauth%252Fcallback.html%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520email%2520api-external%2520roles%2520identity-mgmt%2520offline_access%26state%3Db578add73b5d405c9ae81d400f69acb3%26code_challenge%3DUYKV8BodlSN6xSCp4QlT7bhEm_OkWXbtuPAcf6AHGdg%26code_challenge_method%3DS256%26response_mode%3Dquery%26locationId%3D5"&gt;Built In NYC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.theinformation.com/newsletters"&gt;The Information Newsletters&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Build a Portfolio on Github 🎨&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ck8YlIGo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661804968245/S2EgITJxH.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ck8YlIGo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661804968245/S2EgITJxH.png" alt="image.png" width="870" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn to code, practice code, build projects and push them to Github. Github is the ideal place to outline your vision/skillset, show examples of your work and resume, and make your contact information available. Also, adding projects or code to your GitHub provides evidence that you know what youre doing&lt;/p&gt;

&lt;p&gt;Check out these courses to start learning Git and using it in your projects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.udacity.com/course/version-control-with-git--ud123"&gt;Version Control with Git on Udacity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codewithmosh.com/p/the-ultimate-git-course"&gt;The Ultimate Git Mastery Course by Code With Mosh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.udemy.com/course/git-complete/"&gt;Git Complete: The definitive, step-by-step guide to Git on Udemy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.learnenough.com/git-tutorial#:~:text=Learn%20Enough%20Git%20to%20Be%20Dangerous%20is%20the%20final%20installment,those%20who%20work%20with%20them."&gt;Learn Enough Git to Be Dangerous&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pluralsight.com/courses/mastering-git?exp=2"&gt;Mastering Git on Pluralsight&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.datacamp.com/courses/introduction-to-git"&gt;Introduction to Git on Datacamp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Get support 🤜&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zaQL6g7T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661804810609/auCAevgOv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zaQL6g7T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661804810609/auCAevgOv.png" alt="image.png" width="500" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Find a community 🫂&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Having a community to engage with is critical to your success as a software engineer, particularly when you're first starting out. You have an automatic support systema network of individuals you can turn to if you get jammed or feel discouraged you are encircled by a people who share your values.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Cultivate your professional network 🤝&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Get involved, and contribute to the tech communities, and almost inevitably, opportunities will come your way.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Go to local events and meetups&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yoy can attend in person meetups around you or find online communities to join. Do not just join a community, engage and interact with others to learn more.&lt;/p&gt;

&lt;p&gt;Check &lt;a href="https://www.meetup.com/"&gt;Meetup&lt;/a&gt;, a social media platform for hosting and organizing in-person and virtual activities, gatherings, and events for people and communities of similar interests, hobbies, and professions.&lt;/p&gt;

&lt;p&gt;Also &lt;a href="https://www.eventbrite.com/"&gt;Eventbrite&lt;/a&gt;, An event management and ticketing website that allows users to browse, create, and promote local events.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maintain a blog&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Blogs will give you exposure. Focus on creating quality content that is valuable to others; this will help your blog (and thereby you) develop a following&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Most appropriate Blogging Platforms for Software Engineers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;🔹 &lt;a href="https://hashnode.com/"&gt;Hashnode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔹 &lt;a href="https://dev.to/"&gt;Dev To&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔹 &lt;a href="https://medium.com/"&gt;Medium&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔹 &lt;a href="https://hackernoon.com/"&gt;Hacker Noon&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;🙋 Volunteer&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can volunteer at events, help organize and host events etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;🗣 Speak at events&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you find an opportunity to speak at a tech event, kindly do so.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;👀 Create a Professional Online Presence&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is very essential to build a digital presence as a software engineer. Build your online presence on:&lt;/p&gt;

&lt;p&gt;LinkedIn&lt;/p&gt;

&lt;p&gt;GitHub&lt;/p&gt;

&lt;p&gt;Twitter&lt;/p&gt;

&lt;p&gt;Personal website (or portfolio site)&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. Ace the Coding Interview 💼&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jhJuhSwJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661804897725/B2oVsrwzP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jhJuhSwJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661804897725/B2oVsrwzP.png" alt="image.png" width="500" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After building your software engineering skills and made connections in the industry. Now, how do you get a that job without a degree?&lt;/p&gt;

&lt;p&gt;A coding interview allows potential employers and recruiters to evaluate your technical skills and problem-solving ability. The best way to prepare for a technical interview is to practice solving technical questions using resources like &lt;a href="https://leetcode.com/"&gt;LeetCode&lt;/a&gt;, &lt;a href="https://www.hackerrank.com/"&gt;Hackerank&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Another helpful resource to consult is the book &lt;a href="https://www.amazon.com/gp/product/098478280X/ref=as_li_tl?ie=UTF8&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=098478280X&amp;amp;linkCode=as2&amp;amp;tag=laurebradf-20&amp;amp;linkId=NJUCJLWBNZPNM5RE"&gt;Cracking the Coding Interview&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Fortunately, you dont have to prep on your own.These platforms will help you in acing the tech interview&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.interviewcake.com/"&gt;Interview Cake&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V7h7Un6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661778802407/1KhJ59579.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V7h7Un6a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661778802407/1KhJ59579.png" alt="image.png" width="880" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learntocodewith.me/go/algoexpert/"&gt;AlgoExpert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K7yECbpP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661778827852/IB_g-b_pB.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K7yECbpP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661778827852/IB_g-b_pB.png" alt="image.png" width="880" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.byte-by-byte.com/"&gt;Byte by Byte&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PvSo1ZXM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661778981698/_UVGQbQRq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PvSo1ZXM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661778981698/_UVGQbQRq.png" alt="byte by byte.png" width="880" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learntocodewith.me/go/skilled-dev-course/"&gt;Skilled.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6dyBdIVT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661779112711/yoxA9v7vm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6dyBdIVT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661779112711/yoxA9v7vm.png" alt="skilled dev.png" width="880" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6. Expand Your Knowledge&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;📖 KEEP LEARNING!&lt;/p&gt;

&lt;p&gt;The thing about tech is that its constantly changing and youll need to keep learning constantly to keep up.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The only constant in technology is change&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Utilize industry publications, podcasts, and social media to remain up to date on the latest technological developments.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Best practices to keep relevant&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Start by setting goals. There must be several of them, and they must all be achievable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Set a schedule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set aside at least an hour a day for study. It's not much, but this is the minimum that you must fulfill&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Eliminate all distractions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What you spend your time on is what you get.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"If you don't separate yourself from your distractions, Your distractions will separate you from your goals and the life you want"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As you get to learn via the internet, it is so easy to get carried away by trends and activities going through it. It requires self-discipline to remain focused and consistent on your goals. Avoid getting distracted by the internet&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Zig Ziglar once said, " i dont care how much power, brilliance or energy you have, if you dont harness it and focus it on a specific target, and hold it there youre never going to accomplish as much as your ability warrants.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;🔷 Track your progress&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start documenting what you learn. Write a few sentences each day about how it went. What have you learned? What questions do you have? You can also decide to write down articles on the concepts you have learnt and share with other techies around the world.&lt;/p&gt;

&lt;p&gt;I suggest a fantastic communities like &lt;a href="https://dev.to/"&gt;dev.to&lt;/a&gt;, &lt;a href="https://hashnode.com/"&gt;hashnode&lt;/a&gt; or &lt;a href="https://medium.com/"&gt;medium&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Practice, practice, and even more practice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Starting with your first &lt;strong&gt;&lt;em&gt;Hello, world!&lt;/em&gt;&lt;/strong&gt; program, you'll progress in a few months to creating backends, responsive layouts, web apps, and even a mobile apps and games. Make it a habit to run every code as you learn. Also build projects along the way. Practice every concept by doing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 You don't need to know everything&lt;/strong&gt; It is close to impossible to know everything about around software engineering. Master the fundamentals, learn enough, build projects and keep on learning while practicing. You will always find a new thing to learn.&lt;/p&gt;

&lt;p&gt;**🔷 Make good habits early It will be easier to write clean code in the future if you get into the habit early. No code is perfect, but getting into the behavior of using good guidelines for cleaning up your code ensures that you get to write code that can be more easily reused, read by other developers, and is extensible.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See the &lt;a href="https://en.wikipedia.org/wiki/SOLID"&gt;SOLID Principles&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Also Read, &lt;a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882"&gt;Clean Code: A Handbook of Agile Software Craftsmanship&lt;/a&gt; by Robert C. Martin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;🔷 Depth over Breadth&lt;/strong&gt; Learning one thing in depth is better than learning a tiny bit about a lot of things. Pick one stack and become a mastery&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; It is so easy to fall out, get exhausted and give up during this journey. Being consistent is the key to becoming a software engineer - ensure you keep you motivated and focused on your journey&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🔷 Celebrate your wins&lt;/strong&gt; Celebrate every milestone or accomplishiment no matter how small it is. I keep track of my wins in &lt;a href="https://keep.google.com/"&gt;Google Keep&lt;/a&gt; so that i keep reminding myself of how far i have grown when i feel like giving up.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Final thoughts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;There are many software engineers in the world who have not had a formal education in software engineering. In fact, many of them are self-taught. Name them: Ada Lovelace, Elon Musk, Bill gates, Mark Zuckerberg, Alan Turing, Charles Baggage, Fran Allen, Me 🤓 and so many others. So, if they did it, you can too. Plenty of people have achieved it all on their own, through self-teaching and networking. (Coding bootcamps are also a good option if you have the time and budget&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are the best I can recommend:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://hubs.ly/H03G4Jk0"&gt;&lt;strong&gt;Flatiron School&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💰 - &lt;em&gt;Price&lt;/em&gt;: $15,000 (financing available)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Duration&lt;/em&gt;: Self-paced (but most students finish in 4-12 months)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.fullstackacademy.com/remote-immersive"&gt;&lt;strong&gt;Fullstack Academy Remote&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💰 Price: $17,910 (scholarships and financing available)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Duration&lt;/em&gt;: 17 weeks&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.learncodinganywhere.com/"&gt;&lt;strong&gt;The Tech Academy&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💰 &lt;em&gt;Price&lt;/em&gt;: $18,640-$26,640&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Duration&lt;/em&gt;: 22 weeks (40 weeks part-time)&lt;/p&gt;

&lt;p&gt;What are you waiting for? Grab yourself a cup of coffee, sit back and kickstart your Software Engineering learning journey &lt;strong&gt;TODAY!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's connect: &lt;a href="https://twitter.com/Emma_Donery"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/emma-donery/"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://github.com/EmmahCodes254"&gt;Github&lt;/a&gt; | &lt;a href="https://www.instagram.com/emma_donery/"&gt;Instagram&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤩 Happy Learning 🤩&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fgrti_7C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661799110422/9OAQokgPy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fgrti_7C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661799110422/9OAQokgPy.png" alt="image.png" width="276" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>FAILED INTERVIEW EXPERIENCE - Cracking Amazon without Luck</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Mon, 22 Aug 2022 00:05:10 +0000</pubDate>
      <link>https://dev.to/emma_donery/failed-interview-experience-cracking-amazon-without-luck-517j</link>
      <guid>https://dev.to/emma_donery/failed-interview-experience-cracking-amazon-without-luck-517j</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UKQXhKyk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bbxa7la17qj2aq0hcxj0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UKQXhKyk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bbxa7la17qj2aq0hcxj0.png" alt="Image description" width="880" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It starts with &lt;strong&gt;&lt;em&gt;"WE ARE HIRING"&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After carefully reading the job description and checks off everything on the JD , gets satisfied with the requirements, culture and of course the awesome benefits, It's now time to hit apply. After a while, the email pops&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Congratulations, We have received your application and your profile interest us and we think you might be a good fit for the role. We would like to set up an interview with you?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This comes with a lot of excitement, anticipation and anxieties. You prepare to rock and crack the interview and then wait for the next big thing (You're hired). Unfortunately 🥺, that heartbreaking 💔 email pops up again 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sHmfX7rp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1660907304736/JipFsF7Rm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sHmfX7rp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1660907304736/JipFsF7Rm.png" alt="Purple &amp;amp; Blue Bright Colourful Retro Welcome Email Newsletter.png" width="880" height="1245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hello devs&lt;/strong&gt; 👋&lt;/p&gt;

&lt;p&gt;Every one has ever received that rejection email right? It is often frustrating after having great hopes and high expectations. I have been there too. In this article, i am going to share my experience with Amazon interview process (which you already know i failed) as well as the lessons i learnt.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How I applied to Amazon?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Earlier this year, a recruiter approached me on linkedin to apply for a role of SDE1 at Amazon, i applied for the same. After several phone screens and assessments, i got my rejection email at third step. Despite feeling disappointed by the email, It was a very pleasant experience that taught me a lot about hiring, coding difficulties, and how to prepare for interviews. For me, &lt;em&gt;a failed interview is never a loss, its always a lesson&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Amazon is always hiring. check out their careers page&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Preparation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Having some experience with data structures and algorithms, i went ahead to polish my skills in this. I decided to dedicate at least two hours a day to solve problems on &lt;a href="https://leetcode.com/"&gt;&lt;em&gt;leetcode&lt;/em&gt;&lt;/a&gt; and &lt;a href="https://www.hackerrank.com/"&gt;&lt;em&gt;hackerank&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Interview process&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Online assesment&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Platform&lt;/em&gt;&lt;/strong&gt; : HackerRank&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Sections&lt;/em&gt;&lt;/strong&gt; :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Coding&lt;/em&gt; (70 minutes): It consisted of 2 DSA questions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Work Style Assessment&lt;/em&gt; (20 minutes): It was based on Amazons Leadership Principle.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I Solved both questions with desired Time and Space Complexity.&lt;/p&gt;

&lt;p&gt;After two days, I got a mail informing that I have cleared the online assessment and my interviews will be scheduled shortly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Interview round 1&lt;/strong&gt; 🔥
&lt;/h3&gt;

&lt;p&gt;My first interview i was extremely nervous. However, the interviewer was so &lt;strong&gt;&lt;em&gt;AWSome&lt;/em&gt;&lt;/strong&gt; (Intentionally written..lol 😂) and composed. He helped me feel comfortable by strucking a personal convo which eased my nerves. During the interview, he asked a few follow-up questions on past projects. Then he jumped into DSA. He told to me that he will be asking 2 DSA questions and I have to code both of them. The first one was a straightforward (tree traversal problem) which i did not find a lot of hustle solving. Second one was a dynamic programming question.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Interview round 2&lt;/strong&gt; 🥺
&lt;/h3&gt;

&lt;p&gt;I was asked a system design question that i was not able to answer. I had no idea about system design but he was very helpful. He explained each and every requirement in detail but i could still not crack it. Bad Luck 😔&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verdict : Rejected&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cEkTHgxv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1660994809894/DiYTaDBIV.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cEkTHgxv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1660994809894/DiYTaDBIV.png" alt="image.png" width="200" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was so optimistic about the interview but after i failed, i decided to learn from that. Below is a list of the lessons i learnt from my failed interview with Amazon.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Lessons and tips I learnt from the failed interview&lt;/strong&gt; 🧑🎓
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Research about the company before the interview&lt;/li&gt;
&lt;li&gt;Being well prepared&lt;/li&gt;
&lt;li&gt;Exposure and application of leadership principles&lt;/li&gt;
&lt;li&gt;Application of data structures&lt;/li&gt;
&lt;li&gt;Knowledge of system design&lt;/li&gt;
&lt;li&gt;Theres More to Being Qualified for a Job.&lt;/li&gt;
&lt;li&gt;Always have a backup plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Research . Research. Research&lt;/strong&gt; 🔍&lt;/p&gt;

&lt;p&gt;Before going to any interview, make sure you have enough information and knowledge about the company. On my case, i am positive i did do extensive research about the role. However, i feel like i never did a lot of research based on questions asked during the interviews, otherwise i would have cracked the system design question with ease.&lt;/p&gt;

&lt;p&gt;Learning enough about the organization demonstrates your interest and dazzles the interviewer. You wish to find out about the company's ideals and history. Also, it helps come up with questions you should ask. This is one of the most critical parts of an interview because its your chance to impress the interviewer. Here are some of the ways i learnt on doing thorough research&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look for the company website and familiarize yourself with their services. Specifically, take a look keen on their "about page".&lt;/li&gt;
&lt;li&gt;Explore their social media accounts to get to see their current trends&lt;/li&gt;
&lt;li&gt;Googling the company name and reading any press releases or other information available.&lt;/li&gt;
&lt;li&gt;Look for employees and chat them up to het to understand the company culture&lt;/li&gt;
&lt;li&gt;Look at employee testimonials &lt;strong&gt;NB&lt;/strong&gt; : Obtain as much information as possible about the role you are interviewing for&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Being prepared&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was prepared for the interview but not in all areas. However, i discovered ways of preparing myself better next time. 👇&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reread the Job description&lt;/li&gt;
&lt;li&gt;Revisit the resume&lt;/li&gt;
&lt;li&gt;research possible questions and try answering&lt;/li&gt;
&lt;li&gt;Stage a mock up - Practice answering interview questions with a friend or family member&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exposure and application of leadership principles&lt;/strong&gt; 💡&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g80Xi6sY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661119205792/0iFykL7I7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g80Xi6sY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1661119205792/0iFykL7I7.png" alt="image.png" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazon is famous for its &lt;a href="https://www.amazon.jobs/en/principles"&gt;16 leadership principles&lt;/a&gt; and you will be given a list of questions. Read all 16 Leadership Principles on the official site of &lt;a href="https://www.amazon.jobs/en/principles"&gt;Amazon&lt;/a&gt; and try to relate your real life incidents with the answers of LP questions. I also learnt how to answer questions based on the STAR method.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application of data structures&lt;/strong&gt; 📚&lt;/p&gt;

&lt;p&gt;When interviewing for tech-based roles within FAANG companies, having the knowledge of data structure and algorithms is a must. Many question revolve on solving a coding problem using the best optimized way possible. Having a solid understanding od data structures and algorithms, how to implement them in an optimized manner and where to use them is essential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Knowledge of system design&lt;/strong&gt; 🗼&lt;/p&gt;

&lt;p&gt;Honestly, I had no idea he would ask questions on this topic. Even when i did my research during preparation for the interview, i came along very few scenarios where system design was implemented so i did not prepare on this scope. It just hit me by surprise. Assumptions are deadly. &lt;em&gt;"Why is it that often the questions and topics you skip always find a way of locating and embarrassing you?"&lt;/em&gt;😂😂😂&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Theres More to Being Qualified for a Job&lt;/strong&gt; 🎭&lt;/p&gt;

&lt;p&gt;Soft skills are as important as hard skills. Hard skills should go handy with soft skills. Learning hot to answer behavioral questions in an interview is very essential. I read somewhere that " it is not the skill but the will". Some companies or recruiters go in search for soft skills and train hard skills later. However, having a combination of the two is a gain. We tend to focus so much on the hard skills that we forget we are humans and will need the soft skills in real life application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Always have a backup plan&lt;/strong&gt; 💯&lt;/p&gt;

&lt;p&gt;It's possible that your job interview went quite well. You could tell the interviewers were pleased, and you felt good about the whole thing. However, whatever how well you believe the interview went, don't pin all your expectations on it. Always have a fallback strategy. After a job interview, don't wait weeks to hear back. Spend that time honing your skills. Sometimes a rejection can break your heart and diminish your morale. It's better to try various places,&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Best Code Interview Prep Platforms&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.interviewcake.com/"&gt;Interview Cake&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://interviewing.io/"&gt;Interviewing.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leetcode.com/"&gt;Leetcode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/"&gt;GeeksforGeeks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.educative.io/?aid=5082902844932096&amp;amp;utm_source=google&amp;amp;utm_medium=paid&amp;amp;utm_content=search-educative&amp;amp;utm_term=educative&amp;amp;utm_campaign=Educative+Branded+-+ROW&amp;amp;utm_source=adwords&amp;amp;utm_medium=ppc&amp;amp;hsa_acc=5451446008&amp;amp;hsa_cam=6976044439&amp;amp;hsa_grp=80247129576&amp;amp;hsa_ad=390482498144&amp;amp;hsa_src=g&amp;amp;hsa_tgt=aud-1467590469532:kwd-418757981888&amp;amp;hsa_kw=educative&amp;amp;hsa_mt=b&amp;amp;hsa_net=adwords&amp;amp;hsa_ver=3&amp;amp;gclid=Cj0KCQjwr4eYBhDrARIsANPywCi9KZGPohpDsk-_rcDi6EDJqOQJ-eV6Uss-285AIPUdrMUP7nD5f0oaAjAXEALw_wcB"&gt;Educative&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.hackerearth.com/"&gt;Hackerearth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.hackerrank.com/"&gt;HackerRank&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://interviewbuddy.in/"&gt;InterviewBuddy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.techmockinterview.com/"&gt;Tech Mock Interview&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Final Thoughts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Most people let failure stop them forgetting that everyone fails at something&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Henry Ford once said " Failure is simply an opportunity to begin again, this time more intelligently."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every time i fail on an interview, i get to discover on the areas i could have improved.&lt;/p&gt;

&lt;p&gt;Make it OK to fail, if you want to succeed Xavier Dagba&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;See rejection as a redirection; a course of correction to your destiny.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A failure is only failure if you don't take anything out of it, and there's a lot to learn from job rejections. So, analyze the entire interview and pinpoint what might have gone wrong. You'll figure out a way to avoid such a scenario again.&lt;/p&gt;

&lt;p&gt;Looking forward to hearing about your failure stories and the lessons learnt from them. Share your experiences and feedback on the comment section. I will really appreciate.&lt;/p&gt;

&lt;p&gt;Let's connect 🚀: &lt;a href="https://twitter.com/Emma_Donery"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/emma-donery/"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://www.instagram.com/emma_donery/"&gt;Instagram&lt;/a&gt; | &lt;a href="https://github.com/EmmahCodes254"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy Interviewing 😍&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Emma Donery is a software engineer passionate about data science and also a freelance technical writer. She love writing articles that inspire and help other developers become better at what they do. In her free time, Emma enjoys reading, nature walks and listening to music.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>The Art of Data Storytelling 🧚</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Fri, 19 Aug 2022 09:10:42 +0000</pubDate>
      <link>https://dev.to/emma_donery/the-art-of-data-storytelling-3k8a</link>
      <guid>https://dev.to/emma_donery/the-art-of-data-storytelling-3k8a</guid>
      <description>&lt;blockquote&gt;
&lt;h4&gt;
  
  
  “facts and figures” into “story”
&lt;/h4&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nkBYTj-e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4000/1%2A5YRnyn0pTrzIxuMjC0NZtQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nkBYTj-e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4000/1%2A5YRnyn0pTrzIxuMjC0NZtQ.png" alt="" width="880" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data has become a buzz word in today’s world and has become one of the most valuable business assets. With data, businesses are able to get insights that make them make guided decisions that have seen their success against their competitors.&lt;/p&gt;

&lt;blockquote&gt;
&lt;h5&gt;
  
  
  &lt;em&gt;“The ability to take data-to be able to understand it, to process it, to extract value from it, to communicate it — that’s going to be a hugely important skills in the next decades&lt;/em&gt;” — Hal Varian, Chief Economist at Google
&lt;/h5&gt;
&lt;/blockquote&gt;

&lt;p&gt;The good thing is you do not need to be an English major to be able to tell a compelling data story. As Hal has emphasized, the ability to find a valuable insight and then able to share it effectively is going to be a huge important skill, or in my opinion already is an essential and effective skill.&lt;/p&gt;

&lt;p&gt;Are you a looking forward to tell compelling stories with data? This article is intended for anyone who works with data and has to communicate it to others. We are going to look at the key components of data storytelling, why storytelling is an impactful communication tool, and how to craft a compelling narrative of your own. Data Storytelling is the next big thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is data storytelling? 🤔
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;h5&gt;
  
  
  &lt;em&gt;“Numbers have an important story to tell. They rely on you to give them a clear and convincing voice.”&lt;/em&gt; — Stephen Few
&lt;/h5&gt;
&lt;/blockquote&gt;

&lt;p&gt;What comes to mind when you hear the term “data analysis”? Your thoughts could immediately turn to combing through spreadsheets, putting algorithms into practice, and performing mathematical calculations — all “hard talents” of data analysis. However, without their &lt;strong&gt;soft skill&lt;/strong&gt; partners, hard skills are useless. Data storytelling is a skill that is necessary in order to effectively express the story that the data tells. It is not sufficient to merely examine data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data storytelling&lt;/strong&gt; is the concept of building a compelling narrative based on complex data and analytics which help support the message of your story to influence and inform a particular audience&lt;/p&gt;

&lt;blockquote&gt;
&lt;h5&gt;
  
  
  &lt;em&gt;“The goal is to provide inspiring information that moves people to action”&lt;/em&gt; — Guy Kawasaki
&lt;/h5&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Data Story?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;h5&gt;
  
  
  &lt;em&gt;“Storytelling is the most powerful way to put ideas into the world today&lt;/em&gt;”— Robert McKee
&lt;/h5&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Data stories&lt;/strong&gt; are narratives that explain how and why data changes over time — often through visuals. However, making excellent charts and data presentations is only one aspect of data storytelling. It’s about communicating insights that deliver real value&lt;/p&gt;

&lt;h2&gt;
  
  
  Data stories vs. data visualizations
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Data stories&lt;/em&gt; are good for conveying complex information in an easily understandable way. &lt;em&gt;Visuals&lt;/em&gt; help the audience absorb, digest, and understand complex data points faster and easier than if the same data was provided in a table or text format.&lt;/p&gt;

&lt;h3&gt;
  
  
  Elements of a data story
&lt;/h3&gt;

&lt;p&gt;These three elements compliment each other.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hXls50GU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2300/0%2AR8zS8lJTuumod_kh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hXls50GU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2300/0%2AR8zS8lJTuumod_kh.png" alt="" width="880" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data is the building block of every data story. We must have the accurate data, to reach correct insights&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Narratives&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The linear structure of your data storytelling will be determined by your narrative and environment. Narrative focuses on the straightforward language used to convey the facts and can be thought of as giving the data a voice. Each piece of data is a protagonist and a character in a narrative with a unique tale to tell.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Visuals&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visualizations help uncover trends and convey them in a comprehensible way. They reveal trends and patterns in datasets, which are not easily seen in the rows and columns of spreadsheets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why data storytelling is important
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Helps communicate complex ideas and simplify (and accelerate) the decision-making process for stakeholders.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Providing a human touch to your data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adds value to your data and insights.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It Boosts Client Communication &amp;amp; Engagement&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Craft a Compelling Data Story
&lt;/h2&gt;

&lt;p&gt;(i) &lt;strong&gt;Identify your story&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First you have to uncover a story worth telling. You can start by formulating a question or a hypothesis, then gather and delve into pertinent data to uncover solutions.&lt;/p&gt;

&lt;p&gt;Approaches that may help you to uncover your story&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Look for any interesting correlations and connections between data points&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identify trends — they help you indicate the direction by which something is changing or developing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Draw comparisons to uncover interesting correlations and relationships&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Look for outliers (data that does not fit with the rest of your dataset)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pay attention to data that is counterintuitive — Any data that surprises you&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(ii) &lt;strong&gt;Be Aware of your audience&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your data must be relevant and interesting to your intended audience. Your audience’s age, demographics, job, and subject matter expertise will affect how they understand and respond to your stories (and should inform how you tell your stories)&lt;/p&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Who is your audience?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Is this narrative relevant to my audience?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Have they heard it before?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(iii) &lt;strong&gt;Build your narrative&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As with any good story, a data tale needs a beginning, a middle, an end, and some actionable insights. Your data story has to follow a formula:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is the situation ❓&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Characters&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Who are the key players ❓&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What is the conflict ❓&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Solutions / Recommendations&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What are the key actionable insights ❓&lt;/p&gt;

&lt;p&gt;How can the problem be solved ❓&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;✨ &lt;em&gt;Make sure you tell your story in a linear fashion&lt;/em&gt; ✨&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;(iv) &lt;strong&gt;Use visual to present and clarify your message&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make sure to chose visuals that are easy for your audience to understand and engage with the data.&lt;/p&gt;

&lt;p&gt;You can visualize your data using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Scatterplots&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bar graphs&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pie charts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Flow charts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Infographics&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Road maps&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data storytelling tools
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://storymaps.arcgis.com/"&gt;ArcGis StoryMaps&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://help.qlik.com/en-US/sense/February2021/Subsystems/Hub/Content/Sense_Hub/StoryTelling/use-data-storytelling.htm"&gt;Qlik Sense Stories&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.tableau.com/about/blog/2014/5/82-preview-tell-story-your-data-story-points-30761"&gt;Tableau Story Points&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.viqtordavis.com/en-us/media/storytelling-with-power-bi"&gt;PowerBI&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://observablehq.com/"&gt;Observable&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Podcasts about Data Storytelling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://statsandstories.net/episodes"&gt;Stats + Stories&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://leapica.com/podcast/"&gt;Present Beyond Measure&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.storytellingwithdata.com/podcast"&gt;Storytelling with Data&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Instead of handing your team a data spreadsheet and a list of figures, think about how you may activate different brain regions. You may make your arguments more memorable and actionable by using data storytelling to elicit an emotional response on a brain level. It is possible to produce captivating data tales that inspire change by fusing the finest practices for visualization, data analysis, and storytelling.&lt;/p&gt;

&lt;p&gt;Happy storytelling 😍&lt;/p&gt;

&lt;p&gt;Let's connect 🚀&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/emma-donery/"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/Emma_Donery"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.instagram.com/emma_donery/"&gt;Instagram&lt;/a&gt; | &lt;a href="https://github.com/EmmahCodes254"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Being a Woman in Tech: My Journey 👩‍💻</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Wed, 13 Jul 2022 20:50:25 +0000</pubDate>
      <link>https://dev.to/emma_donery/being-a-woman-in-tech-my-journey-1mo8</link>
      <guid>https://dev.to/emma_donery/being-a-woman-in-tech-my-journey-1mo8</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RCQ3R84F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mw5we48umeiqrx6yqcb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RCQ3R84F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mw5we48umeiqrx6yqcb1.png" alt="Image description" width="880" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tech has always been a male-dominated field, and although over the recent past, this notion has taken another course, there are women who still cling to it. We are at an inflection point, and there is a lot of awareness about diversity. Take this chance and stand out. As a tech advocate and a woman in tech, writing this article has brought a lot of fulfillment to me as it serves as an inspiration to help as many women as possible to follow the same path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Firsts things first: Getting to know me
&lt;/h2&gt;

&lt;p&gt;Hi,👋 I'm Emma! I'm a Software engineer and Technical writer who is passionate about building solutions and building the community both online and offline. Outside work, i am the founder of CodeHer Mentorship program(I always wished I had more female mentors and support and leaders, I felt it was time for me to give back with a bigger impact) where i enjoy helping women transition to tech and promote gender divesrity and inclusion. I am also building Acute Labs Inc., a data-driven company that is geared towards leveraging AI, Big Data and IoT to offers solutions to Agriculture in Africa, and Tech It Girl Podcasts(still under development).And oooh!!!, i forgot to mention that I am a big Open-Source fun.&lt;/p&gt;

&lt;h3&gt;
  
  
  BREAKING INTO TECH: MY STORY 🚀
&lt;/h3&gt;

&lt;p&gt;I first got exposed to programming and coding in Campus.I enrolled at the university to undertake "Software Engineering" though i wanted to become a doctor or a civil engineer. Ever since i was young, i like to get my head into tough subjects. However, when i was done with my high school course, i wasn't sure what i really wanted to be in life. I applied for different courses in different universities and somehow i only landed into Software Engineering. If i may be honest with you, my first year in campus was about exploring what all this course was about. During my second and 3rd years, i met several people who guided me as well as peers where we helped each other out. Despite being taught in class, i can admit that most of my skills came from the adventure that i set on my own, the thing i got to explore on my own. Basically, the lecturer would only introduce you to a concept(theoretically), but software engineering doesn't stop there, right?.. You have to put efforts on your own, do more research, learn and Practice and Practice and Practice. While in undegrad, i realized that tech is growing and is everywhere, plus it has endless opportunities and one could be geographically flexible. To cut the long story short, I always thank God that i somehow followed this path. I am not perfect yet, but i have seen great progress over the years. &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;HTML CSS: EASY Peasy, Right?&lt;/strong&gt; ✨
&lt;/h4&gt;

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

&lt;p&gt;First time i came across HTML and Css, well i thought? easy peasy, then i got introduced to Javascript and i was like, &lt;em&gt;"what's changing,,,i thought things were going on well"&lt;/em&gt;😥DO NOT MISTAKE ME HERE, i am not saying html and css are easy,...there are days when i burnt the midnight oil, still do sometimes, trying to make peace with CSS. But Javascript introduced programming concepts to me, but the good thing is with much learning and more practice, i started getting comfortable. I also got introduced to tech communities and these doubled my progress as well as my growth.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The power of tech communities&lt;/strong&gt; 💪
&lt;/h2&gt;

&lt;p&gt;Mentioning tech communities, they acted a support support system for me till today. I get to meet new people and network at tech event, learn about new trends in the tech ecosystem, share and generate ideas, link up with like-minded people, find opportunities, get help and much more. My growth is highly reliant on community engagement, consistency and hard-work.&lt;/p&gt;

&lt;p&gt;My emphasis is, do not just join a community, do participate(actively) and get involved. That is when you get to reap the full benefits.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Benefits of Belonging to a community&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Community Support&lt;/strong&gt; 💪
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tTszyo6A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mwjrvuu2uxih5hjj0m1p.jpeg" alt="Image description" width="626" height="566"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many times one can feel lost, but a community is there to guide you through and hold your hand. And i believe everyone needs a support system&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Access to valuable resources&lt;/strong&gt; 🦄&lt;br&gt;
There are tones and volumes of great resources that people share with each other.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Networking&lt;/strong&gt; 🧑‍🤝‍🧑 &lt;br&gt;
this is the number one reason why people join tech communities. Ensure you make genuine connections with people who can help you boost your career. There are many peopler out there who got jobs through their network.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Communities you can Join&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/womentechmakers"&gt;Google WomenTechMakers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.womentech.net/"&gt;WomenTechNetwork&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.shecodes.io/"&gt;SheCodes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.womenwhocode.com/"&gt;Women Who Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://girlsintech.org/"&gt;Girls in Tech&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are not an active member of any community, i invite you to please join one, contribute to open source,to attend meetups, to develop a habit of giving back to the community in any form (blogs, vlogs, podcast etc). There as so many ways one can contribute to a community.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to overcome challenges as a woman in tech&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kill Self-doubt  imposter syndrome&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Self-doubt is a powerful thing that has killed many professions and careers. Do not allow to feed this monster.&lt;br&gt;
Honestly speaking, how many women are victims of imposter syndrome? I have been a victim countless times?&lt;br&gt;
&lt;em&gt;I have very personally felt the overwhelming loneliness, self-doubt, and frustration that often comes with the minority status of a woman in engineering. However, this did not stop me.&lt;/em&gt;&lt;br&gt;
Always believe in you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mentorship and networks&lt;/strong&gt;&lt;br&gt;
Find a good mentor. Navigating the Tech career trajectory on your own, will be a hard road to trek and will leave you feeling burnt out and "feeling like giving up everytime.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Never Stop Learning&lt;/strong&gt;📖&lt;br&gt;
I learnt somwhere that the only constant in technology is change. So, in order to stay relevant in tech, you have to keep onn learning and being up-to-date with current trends.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Speak Up 🗣 - Know your worth&lt;/strong&gt;&lt;br&gt;
Never forget who you are and the goals you have set for yourself. When people get to belittle you, remember you are not worth less than them and you have worked hard and earned to be where you are. Do not let anyone dim your light. Do not entertain horrifying behaviors, shout out! Blow the whistle! Always put your own needs first. Don’t let life happen to you, take control and speak up. Dare to express your opinion and ideas&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build a Support System&lt;/strong&gt;&lt;br&gt;
There’s great strength in numbers. Having a support system is always helpful, especially when those people have an inherent knowledge of the issues you face.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Be Patient&lt;/strong&gt; 📌&lt;br&gt;
Growth takes time. You cant see your results right away so be patient with yourself. Work hard, star consistent and never give up.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Find Out What Motivates You&lt;/strong&gt; 👏&lt;br&gt;
Make sure that everything you do is driven by passion and motivation and have a good attitude.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;What worked out for me&lt;/strong&gt;
&lt;/h2&gt;


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

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--fKyyL-ss--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1514301149511356418/5QBerDhP_normal.jpg" alt="Emma_Donery profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Emma_Donery
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/emma_donery"&gt;@emma_donery&lt;/a&gt;
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      DEEP WORK 101: 📌📌&lt;br&gt;Have 3 hours of UNDISTRACTED work everyday.&lt;br&gt;No social media. No email. No phone.&lt;br&gt;Staying focused and removing distractions is key if you want to accomplish more.&lt;br&gt;&lt;br&gt;&lt;a href="https://twitter.com/hashtag/100DaysOfCode"&gt;#100DaysOfCode&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/WomenWhoCode"&gt;#WomenWhoCode&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/CodeNewbie"&gt;#CodeNewbie&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/softwareengineering"&gt;#softwareengineering&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      16:28 PM - 25 Jun 2022
    &lt;/div&gt;


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


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Progress over Perfection&lt;/strong&gt; 👌&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Strive for progress not perfection&lt;br&gt;
“Perfectionism prevents us from taking double steps in our career. We think we have to be perfect, but we don’t.” -- Reshma Saujani&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Learn when to rest&lt;/strong&gt;🌙&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mental health is everything!&lt;br&gt;
Take breaks whenever necessary, read books, listen to your favorite music, go for adventures and nature walk, pray. meditate...do what you get to do to stay vibrant.&lt;br&gt;
Give yourself a permission to rest.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Embrace failure&lt;/strong&gt; 🫂&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Take failures as stepping stones and not hurdles. Seek hrlp whenever you can. Dare to fail, only then can you learn.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Learn. Learn. Learn&lt;/strong&gt;📖&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One thing that i came to learn is, self taught skills are the art to mastery. In tech, we never stop learning. Always educate yourself when something new comes up. Never stop learning, be curious  and take time to meet people with more experience than you to keep you motivated&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📎&lt;strong&gt;Document your journey&lt;/strong&gt;📎 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you learn something, share it with others by either blogging, vlogging or any means that suits you. I often do this by writing blog articles. There are many free platforms out there where you can start blogging, or writing out your progress. Such include dev.to, hashnode, medium etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Get social&lt;/strong&gt;💡&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start posting your progress and naking people see what you have been doing. This is how you get to land opportunities&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consistency&lt;/strong&gt; ⏲️ &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;"We are what we repeatedly do. Excellence, then, is not an act, but a habit."&lt;/em&gt; — Aristotle&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My rule is: A little progress everyday bring big results.&lt;/em&gt; Success does not come from what you do occasionally, it comes from what you do consistently. The secret is always hidden in your daily routine.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Where do i start&lt;/strong&gt;❓
&lt;/h2&gt;

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

&lt;p&gt;I have been asked this question so many times in the recent past. And my advice is; start where you are, with what you have. After doing research and deciding on which path you want to take,always start by learning the basics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE&lt;/em&gt;&lt;/strong&gt;: Tech has many careers, you do not have to code to be in tech or to contribute to communities and open source, there are non-tech  careers that are amazing too. For example, i mentioned i am a technical writer too and i find it very fulfilling, Just find what resonates with you and put your best, be the best. Just be intentional about the area you choose. The tech industry is so large that you can choose to specialize in a myriad of sub-areas. Do your research and find what interests you.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Questions that i have been asked frequently&lt;/strong&gt;? 🤔
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Is Tech Scary?&lt;/strong&gt; 👹&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--625NrHNw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6k715v5gh0t7nv4ehip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--625NrHNw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6k715v5gh0t7nv4ehip.png" alt="Image description" width="72" height="72"&gt;&lt;/a&gt;&lt;br&gt;
Absolutely Not! Actually tech is that "sweet lover" that you cant let go once you fall in love. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Is tech for introverts?&lt;/strong&gt;&lt;br&gt;
Again nooo...Personality isn't an issue here. Whether you are sanguine, phlegmatic, choleric or melancholic does not matter. What really matters is your passion, determination, hardwork and consistency.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thank you for reading this article!&lt;br&gt;
Happy Teching It! 😍&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Wanna talk over coffee ☕&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qI8wVkGw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uvz2ks0zmq9dq5qnb5jp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qI8wVkGw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uvz2ks0zmq9dq5qnb5jp.gif" alt="Image description" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I love chatting with people about tech careers. Wannachat about your career path and experiences you've heard along the way?, i would love to listen. Can be like a networking series where we het to talk about mentorships, challanges, work-life balance,gender equality and inclusion, life at general and everything else that comes up.&lt;/p&gt;

&lt;p&gt;📬: &lt;a href="mailto:kawirakangori@gmail.com"&gt;kawirakangori@gmail.com&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🎙️ My podcast 🎙️
&lt;/h3&gt;

&lt;p&gt;Love podcasts??&lt;br&gt;
I love podcasts and i listen to them alot. I am developing my own podcast channel where we get to gain insights, inspirations and empowerment from experienced women in tech as well as give a platform to other women rising or getting started in their careers to share their journey.&lt;/p&gt;

&lt;p&gt;"To engineer a better society, we need people of different gender, races and backgrounds solving our problems." - That's  the motto.&lt;/p&gt;

&lt;p&gt;📌 However, the project is under development and i hope to launch it soon.&lt;/p&gt;

&lt;p&gt;Stay tuned 📻&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U6FJTL75--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j64isojnvp0r8ynp8aye.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U6FJTL75--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j64isojnvp0r8ynp8aye.jpeg" alt="Image description" width="580" height="387"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When you enter tech, you realize that there are more men than women. You can’t deny that. But, I don’t think you can make that an obstacle. You need to ignore the naysayers and surround yourself with people who believe in you, believe in your abilities and help you grow. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/emmadonery"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zQj764Ae--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" width="434" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can connect with me over the social. Let's chat.&lt;br&gt;
&lt;a href="https://twitter.com/Emma_Donery"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.linkedin.com/in/emma-donery/"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://github.com/EmmahCodes254"&gt;Github&lt;/a&gt; | &lt;a href="https://www.instagram.com/emma_donery/"&gt;Instagram&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;THE FUTURE IS FEMALE&lt;/strong&gt; 💁‍♀️ ♀️
&lt;/h3&gt;

&lt;p&gt;GO Girls! &lt;/p&gt;


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

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--fKyyL-ss--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1514301149511356418/5QBerDhP_normal.jpg" alt="Emma_Donery profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Emma_Donery
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/emma_donery"&gt;@emma_donery&lt;/a&gt;
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      “Though we do need more women to graduate with technical degrees, I always like to remind women that you don’t need to have science or technology degrees to build a career in tech."&lt;br&gt;&lt;br&gt; THE FUTURE IS FEMALE 📌&lt;br&gt;&lt;br&gt;&lt;a href="https://twitter.com/hashtag/WomenWhoCode"&gt;#WomenWhoCode&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/women"&gt;#women&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/CodeNewbie"&gt;#CodeNewbie&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/women"&gt;#women&lt;/a&gt;intech &lt;a href="https://twitter.com/hashtag/coding"&gt;#coding&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/100daysofcoding"&gt;#100daysofcoding&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      11:26 AM - 29 Jun 2022
    &lt;/div&gt;


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


</description>
    </item>
    <item>
      <title>Recursion Demystified: Think Recursively</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Fri, 01 Jul 2022 11:34:50 +0000</pubDate>
      <link>https://dev.to/emma_donery/recursion-demystified-think-recursively-58g5</link>
      <guid>https://dev.to/emma_donery/recursion-demystified-think-recursively-58g5</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1chs1dz4ge4753on6qq4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1chs1dz4ge4753on6qq4.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
In my experience, when most people especially beginners are presented with the concept of recursion, they react surprisingly as if the have been exposed to a new trick. Rather than embracing it is as a new programming concept or methodology,they overlook it and later becomes hard for them to write programs that require recursion. Recursion is a very useful technique in programming.It is a notion that can frequently be challenging especially for beginning computer science students because it nearly seems like circular reasoning. This articles seeks to demystify all it entails with practical examples enabling one to think recursively. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Recursion is the programmer's most important weapon&lt;/em&gt;&lt;/strong&gt;. Curious to find out how or why?...Read through this article.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;:All the code written in this article is implemented using python programming language.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisite&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Introduction to programming concepts&lt;/li&gt;
&lt;li&gt;Python basics&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;What is recursion?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In computer science, recursion is mathematical and programming technique using function or algorithm that calls itself one or more times until a specified condition is met at which time the rest of each repetition is processed from the last one called to the first. &lt;/p&gt;

&lt;p&gt;Simply stating, it is the process of defining something in terms of itself. A concept of well-defined self-reference.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;What is recursion in Python&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In Python, recursion is the process of a function calling itself directly or indirectly. It enables one to find a solution to a problem by breaking it into smaller and simpler steps. We keep breaking it down until we reach a problem that is small enough to be solved easily.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Why use Recursion&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Shorter and easier code to write than an iterative code&lt;/li&gt;
&lt;li&gt;Useful for tasks composed of similar subtasks - most useful for tasks that can be defined in terms of similar subtasks.&lt;/li&gt;
&lt;li&gt;Loops are also converted into recursive functions when they are compiled or interpreted.&lt;/li&gt;
&lt;li&gt;Using recursion, it is easier to generate the sequences compared to iteration&lt;/li&gt;
&lt;li&gt;Efficient Sort and Search: Recursion is especially useful for Python data science as it is the foundation of popular sort algorithms like mergesort.&lt;/li&gt;
&lt;li&gt;In some cases, it's more natural to “&lt;strong&gt;&lt;em&gt;think recursively&lt;/em&gt;&lt;/strong&gt;”. Recursion is the clearest, simplest way to solve problems in data structures like trees where a recursive structure is simple to understand.&lt;/li&gt;
&lt;li&gt;There are some problems which are quite difficult or impossible to solve with Iteration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Properties of Recursion:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Performing the same operations multiple times with different inputs.&lt;/li&gt;
&lt;li&gt;In every step, we try smaller inputs to make the problem smaller.&lt;/li&gt;
&lt;li&gt;Base condition is needed to stop the recursion otherwise infinite loop will occur.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Types of Recursion&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Direct&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Direct recursion is When a function calls itself directly, from within its body. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A method calling itself is considered to be direct recursion
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;recursion&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;span class="nf"&gt;recursion&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Indirect&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Indirect recursion is when a function calls some other function, which in turn calls its caller function again.&lt;br&gt;
A method can invoke another method which invokes another etc., until eventually the original method is invoked again. This is what indirect recursion is all about. It is more difficult to trace and debug.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;func1&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;span class="nf"&gt;func2&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;func2&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
&lt;span class="nf"&gt;func1&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Recursive Function Format&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Comprises of two main parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Base case&lt;/strong&gt;
When using recursion, we have to write sensible code that instructs the compiler, when to stop the process otherwise it will run endlessly. However, writing such a code in Python returns an error to prevent this.
Sample error: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;RecursionError: maximum recursion depth exceeded...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Therefore, A &lt;strong&gt;&lt;em&gt;Base Case&lt;/em&gt;&lt;/strong&gt; is a case, whose result is known or predetermined, without any recursive calling. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recursive case&lt;/strong&gt;
It computes the result by making recursive calls to the same function, but with the inputs decreased in size or complexity.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Base case&lt;/strong&gt; &lt;em&gt;(When to stop)&lt;/em&gt;&lt;br&gt;
The base case is where all further calls to the same function stop, meaning that it does not make any subsequent recursive calls. &lt;br&gt;
📌&lt;strong&gt;NOTE&lt;/strong&gt;:📌 The base case in a recursive function, MUST BE REACHABLE!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recursive case&lt;/strong&gt; &lt;em&gt;(call ourselves)&lt;/em&gt;&lt;br&gt;
The recursive case is where the function calls itself repeatedly until it reaches the base case. The desired state has not been reached and the function enters another recursive step.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Python Syntax of a Recursive Function&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;RecursiveFunction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# Base Case
&lt;/span&gt;  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;baseCaseCondition&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;some&lt;/span&gt; &lt;span class="n"&gt;base&lt;/span&gt; &lt;span class="n"&gt;case&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;

  &lt;span class="c1"&gt;# Recursive Case
&lt;/span&gt;  &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nf"&gt;return&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;recursive&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nb"&gt;any&lt;/span&gt; &lt;span class="n"&gt;other&lt;/span&gt; &lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Iterative Vs. Recursive&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Definition&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Recursion refers to a situation where a function calls itself repeatedly until a base condition is satisfied, at which point further recursive calls stop.&lt;/p&gt;

&lt;p&gt;Iteration refers to a situation where some statements are executed again and again using loops until some condition is satisfied.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Application&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Recursion is a process because is always called on a function. Used with functions.&lt;/p&gt;

&lt;p&gt;Iterative code is applied to variables. It is a set of instructions that are called upon repeatedly. Used with loops.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Program Termination&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Terminates when the base case becomes true. Recursive code terminates when the base case condition is satisfied.&lt;/p&gt;

&lt;p&gt;Terminates when the condition becomes false. Iterative code either runs for a particular number of loops or until a specified condition is met.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Code Size&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Smaller code size. Recursive code is smaller in length and neater.&lt;/p&gt;

&lt;p&gt;Larger code size. Iterative code is usually extensive and cluttered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Overhead Time&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Recursive code has an overhead time for each recursive call that it makes.&lt;/p&gt;

&lt;p&gt;Iterative code has no overhead time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Speed&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Recursive code is slower than iterative code, since it not only runs the program but must also invoke stack memory.&lt;/p&gt;

&lt;p&gt;Iterative code has a relatively faster runtime speed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Stack Utilization&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Recursion uses a stack to store the variable changes and parameters for each recursive call. Every recursive call needs extra space in the stack memory.&lt;/p&gt;

&lt;p&gt;Every iteration does not require any extra space. Iterative code does not use a stack.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Disadvantages of recursion&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It is slower as compared to iteration.&lt;/li&gt;
&lt;li&gt;Hard to debug - Logical but difficult to find the error, if any exists.&lt;/li&gt;
&lt;li&gt;Recursion is expensive in both memory and time.It requires extra storage space this is because, for every recursive call, separate memory is allocated for the variables.&lt;/li&gt;
&lt;li&gt;Recursive functions often throw a Stack Overflow Exception when processing or operations are too large.&lt;/li&gt;
&lt;li&gt;Though it looks simple, it is sometimes hard to make the algorithms using recursion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NB&lt;/strong&gt;: When using recursion, you should be very careful as it can be quite easy to slip into writing a function which never terminates, or one that uses excess amounts of memory or processor power&lt;/p&gt;

&lt;p&gt;📌&lt;strong&gt;TIP&lt;/strong&gt;:📌 You can find out what Python’s recursion limit is with a function from the &lt;code&gt;sys module&lt;/code&gt; called &lt;code&gt;getrecursionlimit()&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;getrecursionlimit&lt;/span&gt;
&lt;span class="nf"&gt;getrecursionlimit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output: &lt;code&gt;1000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To change the limit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;setrecursionlimit&lt;/span&gt;
&lt;span class="nf"&gt;setrecursionlimit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;getrecursionlimit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output: &lt;code&gt;2000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can set it to be pretty large, but you can’t make it infinite.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Recursion Examples&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Calculate Factorial&lt;/strong&gt;
_&lt;strong&gt;Question&lt;/strong&gt;: Write a program and recurrence relation to find the Factorial of n where n&amp;gt;2 . _
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;factorial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="c1"&gt;# base case
&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&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;1&lt;/span&gt;
    &lt;span class="c1"&gt;# recursive case
&lt;/span&gt;    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;factorial&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Time complexity: &lt;code&gt;O(2n)&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auxiliary Space: &lt;code&gt;O(n)&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Tail-Recursion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;It is a unique form of recursion, where the function calls itself at the end.&lt;/p&gt;

&lt;p&gt;Recursive methods are either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tail recursive&lt;/li&gt;
&lt;li&gt;Non-tail recursive&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tail recursive methods have recursive call as the last statement in the method.&lt;/p&gt;

&lt;p&gt;Recursive methods that are not tail-recursive are called non-tail recursive&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Why Tail Recursion ?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It is important to have tail-recursive methods because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The amount of information that gets stored during computation is independent to the number of recursive calls.&lt;/li&gt;
&lt;li&gt;Some compilers can produce optimized code that replaces tail recursion by iteration hence saving the overhead cost of the recursive calls&lt;/li&gt;
&lt;li&gt;Tail recursion is important in languages like Prolang and functional languages like Clean,Haskell, Miranda and SML that do not have explicit loop constructs (loops are simulated by recursion)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Finding the sum of numbers using tail recursion
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;last&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&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="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output: &lt;code&gt;6&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Recursion is a great technique that allows for programs whose correctness can be easily verified without losing performance, but it forces programmers to adopt a fresh perspective on their craft. The majority of programming introductions concentrate on imperative languages and methodologies because imperative programming is frequently a more natural and intuitive beginning point for novice programmers. Recursive programming, however, offers the programmer a superior approach to organize code in a way that is both maintainable and logically consistent as systems grow more complicated.&lt;/p&gt;

&lt;p&gt;Recursion is a key concept and a crucial part in every developer's skillset. It often takes up a large portion of interview questions at coding interviews and are essential for dynamic programming questions.&lt;/p&gt;

&lt;p&gt;📌&lt;strong&gt;TAKEAWAY:&lt;/strong&gt;📌&lt;br&gt;
&lt;em&gt;Most Common Recursion Applications&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Invert an Array&lt;/li&gt;
&lt;li&gt;Fibonacci Sequence&lt;/li&gt;
&lt;li&gt;Sum from 1 to n&lt;/li&gt;
&lt;li&gt;0-1 knapsack problem&lt;/li&gt;
&lt;li&gt;Balanced parentheses question&lt;/li&gt;
&lt;li&gt;Convert tree to a doubly linked list&lt;/li&gt;
&lt;li&gt;Reverse a stack&lt;/li&gt;
&lt;li&gt;Reverse a Linked List&lt;/li&gt;
&lt;li&gt;Print all leaf nodes of a Binary Tree from left to right&lt;/li&gt;
&lt;li&gt;Lowest common ancestor&lt;/li&gt;
&lt;li&gt;Remove spaces from a string&lt;/li&gt;
&lt;li&gt;Towers of Hanoi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✨&lt;strong&gt;About Me&lt;/strong&gt;:✨&lt;/p&gt;

&lt;p&gt;Hey there, My name is &lt;em&gt;Emma Donery&lt;/em&gt;, currently, a Software Engineer building data platforms. My interests include data analysis, data engineering, ui/ux design, competitive coding, and Machine Learning. Please feel free to connect with me through my socials. I always love to have a chat with similarly minded people.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/emma-donery/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt; | &lt;a href="https://twitter.com/Emma_Donery" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; | &lt;a href="https://www.instagram.com/emma_donery/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; | &lt;a href="https://www.facebook.com/EmmaDonery/" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt; | &lt;a href="https://github.com/EmmahCodes254" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope you enjoyed reading this article. Happy learning!&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8u7426avu7yd91rlu09r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8u7426avu7yd91rlu09r.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>python</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>MeiliSearch: Next generation search API</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Thu, 20 Jan 2022 14:49:51 +0000</pubDate>
      <link>https://dev.to/emma_donery/meilisearch-next-generation-search-api-5g56</link>
      <guid>https://dev.to/emma_donery/meilisearch-next-generation-search-api-5g56</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9lo10cdv23exdhodgv9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9lo10cdv23exdhodgv9.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a long time, medium-sized datasets and smaller applications have gone through the nightmare of using insufficient search engines, which result in hidden costs in terms of user experience and retention due to poor search fulfillment.There are numerous search engines available on the internet, both open-source and commercial. Choosing the ideal search solution for your project is crucial, but it's also complicated. In this article, i am going to discuss why Meilisearch is the suitable choice among other search engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is MeiliSearch?&lt;/strong&gt;🤔
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MeiliSearch&lt;/strong&gt; is a powerful, fast, open-source, easy to use and deploy search engine. It is a REST-based search API. It intends to be a ready-to-use solution for everyone who wishes to give a speedy and relevant search experience to their end-users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created by Meili SAS company based in paris in 2018&lt;/li&gt;
&lt;li&gt;It is an open source search engine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It promises:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Blazingly fast and relevant search experience for the end user&lt;/li&gt;
&lt;li&gt;Is scalable, mantainable, customizable and that is easy to get it setup for developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohn7tqylqwvkxa8rwflr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohn7tqylqwvkxa8rwflr.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why MeiliSearch ?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;It is a free, open-source solution that can be used by anybody and is tailored to meet a variety of needs. It requires very little setting upon installation, but it is highly customizable. With features like typo correction, filters, custom ranks, and more, it gives an immediate search experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Features of MeiliSearch&lt;/strong&gt;💡
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Search as you type&lt;/em&gt;&lt;/strong&gt; - Also known as "quick search." While you're still typing in your query, you'll get results. When you type more text into the search box, the displayed results alter in real time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Ultra relevant&lt;/em&gt;&lt;/strong&gt; - MeiliSearch's default relevancy rules are designed to give a simple search experience with minimal setup. They can be tinkered with to get the best results for your dataset.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Typo tolerant&lt;/em&gt;&lt;/strong&gt; - MeiliSearch will always find the results you're looking for, rather than letting typos ruin your search.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Synonyms&lt;/em&gt;&lt;/strong&gt; - Synonyms allow you to make your search experience more personalized and intuitive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Highlighting&lt;/em&gt;&lt;/strong&gt; - Highlight query phrases to make matches stand out. It is not necessary for users to read the complete paragraph in order to find a match.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Filters&lt;/em&gt;&lt;/strong&gt; - MeiliSearch allows you to apply filters to your search results to reduce them down based on user-defined criteria.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Faceting&lt;/em&gt;&lt;/strong&gt; - It aids in the classification of search results and the creation of user-friendly navigation interfaces.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Sorting&lt;/em&gt;&lt;/strong&gt; - By sorting search results at query time, users can pick which sorts of results they want to see first.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Placeholder search&lt;/em&gt;&lt;/strong&gt; - If you search without any query words, MeiliSearch will return all of the documents in that index, organized by its custom ranking rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Phrase search&lt;/em&gt;&lt;/strong&gt; - MeiliSearch will only return documents that contain your search phrases in the order you specify if you use double quotes (") around them. As a result, users will be able to conduct more precise searches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;API key management&lt;/em&gt;&lt;/strong&gt; - The usage of API keys in MeiliSearch allows you to secure your instances. You may control which users have access to specific indexes, routes, and endpoints using API keys.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Comprehensive language support&lt;/em&gt;&lt;/strong&gt; - MeiliSearch is a multilingual search engine! Every language spoken in the global community will be supported.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Module's Architecture&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Divided into two main parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service&lt;/strong&gt;, which servers as a wrapper for MeiliSearch PHP library. It's purpose is making API calls to the MeiliSearch server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search API backend plugin&lt;/strong&gt; extends the functionality of the search API module and provides a backend on which you can attach indexes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Demo of SearchAPI MeiliSearch&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Installation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;There are many ways to &lt;a href="https://docs.meilisearch.com/learn/getting_started/installation.html#download-and-launch" rel="noopener noreferrer"&gt;install and run meilisearch&lt;/a&gt;. Be sure to check them out. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;NB:&lt;/em&gt;&lt;/strong&gt; you can also download MeiliSearch from Homebrew or APT or cURL or others. The link on how to install using all these ways is attached.&lt;/p&gt;

&lt;p&gt;In this article, i will install using the pip3 commandline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;pip3 &lt;span class="nb"&gt;install &lt;/span&gt;meilisearch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Getting Started : MeiliSearch Python&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Add Documents&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;meilisearch&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;meilisearch&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;http://127.0.0.1:7700&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;masterKey&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# An index is where the documents are stored.
&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;index&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;books&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;documents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;book_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;123&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Pride and Prejudice&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;book_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;456&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Le Petit Prince&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;book_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Alice In Wonderland&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;book_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1344&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;The Hobbit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;book_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Harry Potter and the Half-Blood Prince&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;book_id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;The Hitchhiker&lt;/span&gt;&lt;span class="se"&gt;\'&lt;/span&gt;&lt;span class="s"&gt;s Guide to the Galaxy&lt;/span&gt;&lt;span class="sh"&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;# If the index 'books' does not exist, MeiliSearch creates it when you first add the documents.
&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add_documents&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documents&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# =&amp;gt; { "updateId": 0 }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Basic Search&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# MeiliSearch is typo-tolerant:
&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;harry pottre&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"hits"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;[{&lt;/span&gt;
    &lt;span class="s2"&gt;"book_id"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 4,
    &lt;span class="s2"&gt;"title"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Harry Potter and the Half-Blood Prince"&lt;/span&gt;
  &lt;span class="o"&gt;}]&lt;/span&gt;,
  &lt;span class="s2"&gt;"offset"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 0,
  &lt;span class="s2"&gt;"limit"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 20,
  &lt;span class="s2"&gt;"processingTimeMs"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 1,
  &lt;span class="s2"&gt;"query"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"harry pottre"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Custom Search&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;prince&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;attributesToHighlight&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;filters&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;book_id &amp;gt; 10&lt;/span&gt;&lt;span class="sh"&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;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"hits"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;
        &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="s2"&gt;"book_id"&lt;/span&gt;: 456,
            &lt;span class="s2"&gt;"title"&lt;/span&gt;: &lt;span class="s2"&gt;"Le Petit Prince"&lt;/span&gt;,
            &lt;span class="s2"&gt;"_formatted"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
                &lt;span class="s2"&gt;"book_id"&lt;/span&gt;: 456,
                &lt;span class="s2"&gt;"title"&lt;/span&gt;: &lt;span class="s2"&gt;"Le Petit &amp;lt;em&amp;gt;Prince&amp;lt;/em&amp;gt;"&lt;/span&gt;
            &lt;span class="o"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;]&lt;/span&gt;,
    &lt;span class="s2"&gt;"offset"&lt;/span&gt;: 0,
    &lt;span class="s2"&gt;"limit"&lt;/span&gt;: 20,
    &lt;span class="s2"&gt;"processingTimeMs"&lt;/span&gt;: 10,
    &lt;span class="s2"&gt;"query"&lt;/span&gt;: &lt;span class="s2"&gt;"prince"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Module compatibility&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;meilisearch - v0.18.1&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Take away&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;MeiliSearch comes with a lot of customizing options. These customizing choices, unlike those offered by other search engines, are only that: optional. Try out MeiliSearch now. Thank me later.&lt;/p&gt;

&lt;p&gt;Feel free to connect with me on &lt;a href="https://twitter.com/Emma_Donery" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; or &lt;a href="https://www.linkedin.com/in/emma-donery-0831a7188/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. Please feel free to leave a feedback on the comment section.&lt;/p&gt;

</description>
      <category>python</category>
      <category>showdev</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Amazon Machine Learning: Amazon SageMaker 🔥</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Mon, 17 Jan 2022 12:20:33 +0000</pubDate>
      <link>https://dev.to/emma_donery/amazon-machine-learning-amazon-sagemaker-4ljj</link>
      <guid>https://dev.to/emma_donery/amazon-machine-learning-amazon-sagemaker-4ljj</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e8irEijX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avgq0293lnbeqyntydnn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e8irEijX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/avgq0293lnbeqyntydnn.png" alt="Image description" width="880" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Amazon Web Services (AWS) offers a wealth of services and tools that help data scientists leverage machine learning to craft better, more intelligent solutions. This article is ideal for data scientists, programmers, and machine-learning enthusiasts who want to learn about the artificial intelligence and machine learning capabilities of&lt;br&gt;
the Amazon Web Services.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is cloud computing&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Cloud computing&lt;/strong&gt; is the on-demand delivery of IT resources over the Internet with pay-as-you-go pricing. &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Cloud Service providers&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Web Services&lt;/li&gt;
&lt;li&gt;Google Cloud platform&lt;/li&gt;
&lt;li&gt;Microsoft azure&lt;/li&gt;
&lt;li&gt;IBM Cloud&lt;/li&gt;
&lt;li&gt;Digital Ocean&lt;/li&gt;
&lt;li&gt;Terremark&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is AWS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Amazon Web Services&lt;/strong&gt;(AWS) is a secure cloud services platform, offering compute power, database, storage, content delivery and other functionality to help businesses scale and grow.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Why Amazon Web Services&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Easy to use&lt;/li&gt;
&lt;li&gt;Flexible&lt;/li&gt;
&lt;li&gt;Cost-Effective&lt;/li&gt;
&lt;li&gt;Reliable&lt;/li&gt;
&lt;li&gt;Scalable and high-performance&lt;/li&gt;
&lt;li&gt;Secure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is Machine Learning?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Machine Learning is a subset of Artificial Intelligence in the field of computer science that often uses statistical techniques to provide computers with the ability to learn&lt;br&gt;
with data without being programmed.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What is Amazon Machine Learning?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Amazon Machine Learning&lt;/strong&gt; is a service that allows users to create prediction apps based on their data using algorithms and mathematical models.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  &lt;strong&gt;What is Amazon SageMaker?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Amazon SageMaker helps data scientists and developers to prepare, build, train, and deploy high-quality machine learning models quickly by bringing together a broad set of capabilities purpose-built for machine learning. &lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Why Amazon SageMaker?&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;In the hosted environment, many data scientists design, train, and deploy machine learning models. Unfortunately, they did not have the capability to scale up or down resources as needed. AWS SageMaker addresses this problem by making it easier for developers to construct and train models in order to bring them into production faster and at a reduced cost.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;How machine learning works with AWS SageMaker.&lt;/strong&gt;
&lt;/h4&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Prepare and build the models&lt;/em&gt;&lt;/strong&gt; -Connecting to additional AWS services like S3 and manipulating data in Amazon SageMaker notebooks completes the build stage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Train and tune&lt;/em&gt;&lt;/strong&gt; -The train step is about using AWS SageMaker's algorithms and frameworks for distributed training, or bringing our own.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Deploy and analyze&lt;/em&gt;&lt;/strong&gt; - Models can be delivered to Amazon SageMaker endpoints for real-time or batch predictions once they've been trained.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This article gives a brief introduction on Machine learning with AWS. Next we will learn hoe to build, train, and deploy Machine Learning Models using AWS SageMaker. &lt;br&gt;
Stay Tuned🎈&lt;/p&gt;

&lt;p&gt;Let's Connect on &lt;a href="https://twitter.com/Emma_Donery"&gt;Twitter&lt;/a&gt; or &lt;a href="https://www.linkedin.com/in/emma-donery-0831a7188/"&gt;Linkein&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>machinelearning</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Learning Python Like a Pro in 2022: Getting Started</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Fri, 07 Jan 2022 11:13:34 +0000</pubDate>
      <link>https://dev.to/emma_donery/learning-python-like-a-pro-in-2022-getting-started-28d</link>
      <guid>https://dev.to/emma_donery/learning-python-like-a-pro-in-2022-getting-started-28d</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4l3daufx71ybir2e6xa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4l3daufx71ybir2e6xa.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Python has become one of the most famous programming language in the world. In this article, you will get a hands on introduction in python programming language. Whether you're new to programming or an experienced developer, this article can help you get started with Python easily. So lets jump right in.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is python&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Python is a simple, general purpose, high level, and object-oriented programming language founded by Guido Van Rossum.&lt;/p&gt;

&lt;p&gt;Python is also an interpreted programming language, this means that as a developer you write Python (.py) files in a text editor and then put those files into the python interpreter to be executed.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Features of python&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Easy to use and Learn&lt;/li&gt;
&lt;li&gt;Expressive Language&lt;/li&gt;
&lt;li&gt;Interpreted Language&lt;/li&gt;
&lt;li&gt;Object-Oriented Language&lt;/li&gt;
&lt;li&gt;Open Source Language&lt;/li&gt;
&lt;li&gt;Extensible&lt;/li&gt;
&lt;li&gt;Learn Standard Library&lt;/li&gt;
&lt;li&gt;GUI Programming Support&lt;/li&gt;
&lt;li&gt;Integrated&lt;/li&gt;
&lt;li&gt;Embeddable&lt;/li&gt;
&lt;li&gt;Dynamic Memory Allocation&lt;/li&gt;
&lt;li&gt;Wide Range of Libraries and Frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Installation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Many PCs and Macs will have python already installed. To check whether python is installed on your system, enter the following command on your terminal&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If not installed: Then you can download it for free from the following &lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;website&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Python versions: Python 2 vs. Python 3&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The two versions Python 2 and Python 3 are very much different from each other. I will not dive deep into the differences between the two. However, for the sake of this article, we will be using python 3 which is the most recent version.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Applications of Python&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Data Science&lt;/li&gt;
&lt;li&gt;Date Mining&lt;/li&gt;
&lt;li&gt;Desktop Applications&lt;/li&gt;
&lt;li&gt;Console-based Applications&lt;/li&gt;
&lt;li&gt;Mobile Applications&lt;/li&gt;
&lt;li&gt;Software Development&lt;/li&gt;
&lt;li&gt;Artificial Intelligence&lt;/li&gt;
&lt;li&gt;Web Applications&lt;/li&gt;
&lt;li&gt;Enterprise Applications&lt;/li&gt;
&lt;li&gt;3D CAD Applications&lt;/li&gt;
&lt;li&gt;Machine Learning&lt;/li&gt;
&lt;li&gt;Computer Vision or Image Processing Applications.&lt;/li&gt;
&lt;li&gt;Speech Recognitions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt;There are many IDEs to run our python project.However in these series of articles, i will be using visual stusio code to write and run our projects. There are great tools out there to run python programs, you can test them out. You can use any other editor or IDE that you prefer.&lt;/p&gt;

&lt;p&gt;To install Visual studio code, visit their &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;website&lt;/a&gt; and follow the guidelines&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This article was basically giving a brief intro on what is python, its features and application. I am making a series on "Learning Python Like a Pro in 2022" and on my next article i will be tackling on the basics of Python.&lt;/p&gt;

&lt;p&gt;In the mean time feel free to connect with me on &lt;a href="https://twitter.com/Emma_Donery" rel="noopener noreferrer"&gt;twitter&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/emma-donery-0831a7188/" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See you om the next article! Happy reading😊&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>The Twelve Factor App Methodology</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Mon, 03 Jan 2022 06:38:59 +0000</pubDate>
      <link>https://dev.to/emma_donery/the-twelve-factor-app-methodology-2beo</link>
      <guid>https://dev.to/emma_donery/the-twelve-factor-app-methodology-2beo</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VdWvC8YY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/et2y2xkgwqlqjmmfejhh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VdWvC8YY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/et2y2xkgwqlqjmmfejhh.png" alt="Image description" width="500" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey there 👋!For any developer building or going to build applications that run as a service,and to Ops engineers who are deploy and manage such applications this article is going to cover the 12-factor app in details. Happy Learning&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The twelve-factor app methodology is a framework for building software-as-a-service apps that is based on twelve strict rule that act as building blocks for developing and deploying SaaS applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What is Saas&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Software as a service (SaaS) is a method of delivering software as a service through the Internet. Instead of installing and maintaining software, you simply use the Internet to access it, eliminating the need for complicated software and device maintenance.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Benefits of the 12-factor app methodology&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Elasticity:&lt;/strong&gt; Applications based on the 12 factors can grow and shrink as per the need&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modularity&lt;/strong&gt;: Allows for flexibility&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Information Security:&lt;/strong&gt; it ensures security and also enforces segregation of duties by instructing that your credentials or any other confidential information should not be in code repo but in the application’s environment&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Twelve Factors&lt;/strong&gt;
&lt;/h2&gt;

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

&lt;p&gt;I.&lt;strong&gt;Factor 1: Codebase&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;One codebase tracked in revision control, many deploys&lt;/em&gt; - The principle maintains that your code base should have a logical version control system that’s easy to understand. every application should have just a single codebase. However, multiple deployments are possible.&lt;/p&gt;

&lt;p&gt;II. &lt;strong&gt;Factor 2: Dependencies&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Explicitly declare and isolate dependencies&lt;/em&gt; - This principle implies that your app might depend on external packages or libraries. The application should be isolated sufficiently to avoid interactions with conflicting libraries that are installed on the host machine. Hence, you should never rely on the implicit existence of system-wide packages&lt;/p&gt;

&lt;p&gt;III. &lt;strong&gt;Factor 3: Config&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Store config in the environment&lt;/em&gt; - Your configurations should have a separate file and shouldn’t be hosted within the code repository. Storing configurations in environment variables (env vars or env) makes it is easy to change between the deploys without having to change the code&lt;/p&gt;

&lt;p&gt;IV. &lt;strong&gt;Factor 4: Backing services&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Treat backing services as attached resources&lt;/em&gt; - any services that don’t support the core app must be accessed as a service&lt;/p&gt;

&lt;p&gt;V. &lt;strong&gt;Factor 5: Build, release, run&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Strictly separate build and run stages&lt;/em&gt; - there should be a strict separation between these stages to avoid code break or any other risk.&lt;/p&gt;

&lt;p&gt;VI. &lt;strong&gt;Factor 6: Processes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Execute the app as one or more stateless processes&lt;/em&gt; - The rule suggests storing of any data that is required to persist in a stateful backing service, such as databases. The idea is that the process is stateless and shares absolutely nothing.&lt;/p&gt;

&lt;p&gt;VII. &lt;strong&gt;Factor 7: Port binding&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Export services via port binding&lt;/em&gt; - 12-factor apps must always be independent from additional applications. Every function should be its own process—in full isolation.&lt;/p&gt;

&lt;p&gt;VIII. &lt;strong&gt;Factor 8: Concurrency&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Scale out via the process model&lt;/em&gt; - A 12-factor app is designed for scaling. Build your applications so that scaling in the cloud is seamless.Basically, it supports horizontal scaling of an app instead of vertical scaling.&lt;/p&gt;

&lt;p&gt;IX. &lt;strong&gt;Factor 9: Disposability&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Maximize robustness with fast startup and graceful shutdown&lt;/em&gt; - The concept of disposable processes means that an application can die at any time, but it won’t affect the user—the app can be replaced by other apps, or it can start right up again. It focuses on maximizing an application’s robustness with fast startup and graceful shutdown.&lt;/p&gt;

&lt;p&gt;X. &lt;strong&gt;Factor 10: Dev/prod parity&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Keep development, staging, and production as similar as possible&lt;/em&gt; - This principle suggests that the development, staging, and production of an app should be as similar as possible to ensure that anyone can understand and release it.&lt;/p&gt;

&lt;p&gt;XI. &lt;strong&gt;Factor 12: Logs&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Treat logs as event streams&lt;/em&gt; -this principle maintains that you should stream logs to a chosen location—not simply dump them into a log file.&lt;/p&gt;

&lt;p&gt;XII. &lt;strong&gt;Factor 13: Admin processes&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Run admin/management tasks as one-off processes&lt;/em&gt; - This principle proposes separating administrative tasks from the rest of your application&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In today's world, the 12 factors are extremely essential in building microservices-based and cloud-native applications. These factors help design and maintain a robust and modern app architecture for cloud applications ensuring the timely release of new features and fixes.&lt;/p&gt;

&lt;p&gt;Lets connect...&lt;a href="https://twitter.com/Emma_Donery"&gt;twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/emma-donery-0831a7188/"&gt;linkendin&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>cloud</category>
      <category>saas</category>
    </item>
    <item>
      <title>MACHINE LEARNING WITH PYTHON: INTRODUCTION</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Fri, 03 Dec 2021 15:10:03 +0000</pubDate>
      <link>https://dev.to/emma_donery/machine-learning-with-python-introduction-4e67</link>
      <guid>https://dev.to/emma_donery/machine-learning-with-python-introduction-4e67</guid>
      <description>&lt;p&gt;This article is for current and aspiring machine learning practitioners looking to implement solutions to real-world machine learning problems. It is an introductory article suitable for beginners with no previous knowledge of machine learning or artificial intelligence (AI).&lt;/p&gt;

&lt;p&gt;This is the first article on my series "Machine Learning with Python". I will introduce the fundamental concepts of Machine Learning, its applications and how to set up our working environment as well as a hands on practices on a simple project.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction to Machine Learning&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Machine learning is a type of artificial intelligence (AI) that provides computers with the ability to learn without being explicitly programmed.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Classification of Machine Learning&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At a broad level, machine learning can be classified into three types:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Supervised learning&lt;/li&gt;
&lt;li&gt;Unsupervised learning&lt;/li&gt;
&lt;li&gt;Reinforcement learning&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Python?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Python has become the lingua franca for many data science applications providing data scientists with a large array of general and special-purpose functionality.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It combines the power of general-purpose programming languages with the ease of use of domain-specific scripting languages like MATLAB or R.&lt;/li&gt;
&lt;li&gt;It has libraries for data loading, visualization, statistics, natural language processing, image processing, and more.&lt;/li&gt;
&lt;li&gt;It has the ability to interact directly with the code, using a terminal or other tools like the Jupyter Notebook.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Importance or Machine learning&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Rapid increment in the production of data&lt;/li&gt;
&lt;li&gt;Solving complex problems, which are difficult for a human&lt;/li&gt;
&lt;li&gt;Decision making in various sector including finance&lt;/li&gt;
&lt;li&gt;Finding hidden patterns and extracting useful information from data.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Applications of Machine Learning&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Self-driving cars&lt;/li&gt;
&lt;li&gt;Robotics&lt;/li&gt;
&lt;li&gt;Language Processing&lt;/li&gt;
&lt;li&gt;Vision Processing&lt;/li&gt;
&lt;li&gt;Forecasting stock market trends&lt;/li&gt;
&lt;li&gt;Recommendation systems&lt;/li&gt;
&lt;li&gt;Image and Speech recognition&lt;/li&gt;
&lt;li&gt;Predictions&lt;/li&gt;
&lt;li&gt;Detection&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Machine learning Life cycle&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data Gathering/extraction&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the first phase of the machine learning lifecycle that is concerned with identifying and obtaining all data-related problems.&lt;br&gt;
There are many data sources which we can gather data from. such include files, database, internet, or mobile devices.&lt;/p&gt;

&lt;p&gt;This step includes the below tasks:&lt;br&gt;
    - Identify various data sources&lt;br&gt;
    - Collect data&lt;br&gt;
    - Integrate the data obtained from different sources&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data Preparation&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data preparation is a step where we put our data into a suitable place and prepare it to use in our machine learning training.&lt;br&gt;
After gathering data, we need to prepare it so that we can use it in our project. this phase can be divided into two:&lt;/p&gt;

&lt;p&gt;i). Data exploration&lt;br&gt;
It's utilized to figure out what kind of data we're dealing with. We must comprehend data's features, format, and quality. In this, we find Correlations, general trends, and outliers.&lt;/p&gt;

&lt;p&gt;ii). Data Preprocessing / wrangling&lt;br&gt;
Data preprocessing is the process of transforming raw data into an understandable format.&lt;br&gt;
In real-world applications, collected data may have various issues, including:&lt;br&gt;
    - Missing Values&lt;br&gt;
    - Duplicate data&lt;br&gt;
    - Invalid data&lt;br&gt;
    - Noise&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data Analysis&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal of this step is to create a machine learning model that will study the data using a variety of analytical approaches and then evaluate the results. It begins with the identification of the problem type, followed by the selection of machine learning techniques such as classification, regression, cluster analysis, association, and so on, followed by the construction of the model using prepared data, and finally the evaluation of the model.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Model Training&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this step we train our model to improve its performance for better outcome of the problem. Training a model is required so that it can understand the various patterns, rules, and, features.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Model Testing&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We test our machine learning model once it has been trained on a specific dataset. We check the correctness of our model in this stage by feeding it a test dataset.&lt;br&gt;
The percentage correctness/accuracy of the model is determined by testing it against the project or problem's requirements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Model Evaluation and Improvement&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Model evaluation is an important step in the creation of a model. It assists in determining the optimal model to represent our data and how well that model will perform in the future.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last step of machine learning life cycle is deployment, where we deploy the model in the real-world system.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Popular Python Libraries and Tools for Machine Learning&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Jupyter Notebook&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is an interactive environment for running code in the browser.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Numpy&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NumPy is a python library mainly used for working with arrays and to perform a wide variety of mathematical operations on arrays.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pandas&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pandas is a Python library for data wrangling and analysis.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Matplotlib&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is the primary scientific plotting library in Python. It provides functions for making publication-quality visualizations such as line charts, histograms, scatter&lt;br&gt;
plots, and so on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scikit-learn&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Scikit-learn (Sklearn) is the most useful and robust library for machine learning in Python. It provides a selection of efficient tools for machine learning and statistical modeling including classification, regression, clustering and dimensionality reduction via a consistence interface in Python.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Environment setup&lt;/strong&gt;
&lt;/h2&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Installing Anaconda and Python&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Download and Install Anaconda (Python 3.6 version) &lt;a href="https://www.anaconda.com/download/"&gt;Download&lt;/a&gt; and choose according to your OS.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open a terminal&lt;/li&gt;
&lt;li&gt;Confirm conda is installed correctly, by typing:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;conda -V&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm Python is installed correctly by typing:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;python -V&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Confirm your conda environment is up-to-date, type:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;conda update conda
conda update anaconda
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Hands on practice: Understanding &amp;amp; Classifying Iris Species&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this section, we will go through a simple machine learning application and create our first model.&lt;/p&gt;

&lt;p&gt;The data we will use for this example is the Iris dataset, a classical dataset in machine learning and statistics. It is included in scikit-learn in the datasets module. We can load it by calling the load_iris function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;sklearn.datasets&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_iris&lt;/span&gt;
&lt;span class="n"&gt;iris_dataset&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;load_iris&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This dataset consists of 3 different types of irises’ (Setosa, Versicolour, and Virginica) petal and sepal length, stored in a 150x4 numpy.ndarray&lt;/p&gt;

&lt;p&gt;The rows being the samples and the columns being: Sepal Length, Sepal Width, Petal Length and Petal Width. Our goal is to create a machine learning model that can learn from the measurements of known-species irises in order to predict the species of a new iris.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Parts of the iris flower&lt;/em&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--73dHu-AQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xt66o930oz82ajdme3a3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--73dHu-AQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xt66o930oz82ajdme3a3.png" alt="Image description" width="300" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a supervised learning problem because we have measurements for which we know the correct iris species. We wish to anticipate one of numerous options in this situation (the species of iris). This is an illustration of a classification issue. The possible outputs (various irises species) are referred to as classes. This is a three-class classification problem since each iris in the dataset belongs to one of three classes. The species of this flower is the desired output for a single data point (an iris). The species to which a data point belongs is referred to as its label.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Target:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;{}"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;iris_dataset&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'target'&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Target:
&lt;span class="o"&gt;[&lt;/span&gt;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The meanings of the numbers are given by the iris['target_names'] array: 0 means setosa, 1 means versicolor, and 2 means virginica. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Measuring Success: Training and Testing Data&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We can't evaluate the model using the same data we used to generate it. This is because our model can always remember the entire training set and, as a result, will always predict the proper label for any given point in the training set.&lt;/p&gt;

&lt;p&gt;To evaluate the model's performance, we present it with new data (data it hasn't seen before) and labels. This is often accomplished by dividing the labeled data (in this case, our 150 flower measurements) into two halves. The training data or training set is a subset of the data that is utilized to develop our machine learning model. The remaining data will be used to evaluate the model's performance; this is known as the test data, test set, or hold-out set.&lt;/p&gt;

&lt;p&gt;The train test split function in scikit-learn is a function that shuffles and separates the dataset for you. As the training set, this function extracts 75% of the rows in the data, together with the accompanying labels for this data. The test set is made up of the remaining 25% of the data as well as the remaining labels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; In scikit-learn, data is usually denoted with a capital X, while labels are denoted by&lt;br&gt;
a lowercase y. Let’s call train_test_split on our data and assign the outputs using this nomenclature:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;sklearn.model_selection&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;train_test_split&lt;/span&gt;
&lt;span class="n"&gt;X_train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;X_test&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_test&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;train_test_split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
 &lt;span class="n"&gt;iris_dataset&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'data'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;iris_dataset&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'target'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;random_state&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output of the train_test_split function is X_train, X_test, y_train, and y_test, which are all NumPy arrays. X_train contains 75% of the rows of the dataset, and X_test contains the remaining 25%&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"X_train shape: {}"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_train&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"y_train shape: {}"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y_train&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;shape&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;X_train shape: &lt;span class="o"&gt;(&lt;/span&gt;112, 4&lt;span class="o"&gt;)&lt;/span&gt;
y_train shape: &lt;span class="o"&gt;(&lt;/span&gt;112,&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Inspecting our data&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One of the best ways to inspect data is to visualize it. One way to do this is by using a scatter plot. A scatter plot of the data puts one feature along the x-axis and another along the y-axis, and draws a dot for each data point.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# create dataframe from data in X_train
# label the columns using the strings in iris_dataset.feature_names
&lt;/span&gt;&lt;span class="n"&gt;iris_dataframe&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DataFrame&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;iris_dataset&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;feature_names&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# create a scatter matrix from the dataframe, color by y_train
&lt;/span&gt;&lt;span class="n"&gt;grr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scatter_matrix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;iris_dataframe&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;y_train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;marker&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;'o'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="n"&gt;hist_kwds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'bins'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cmap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;mglearn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cm3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The data points are colored according to the species the iris belongs to. To create the plot, we first convert the NumPy array into a pandas DataFrame. pandas has a function to create pair plots called scatter_matrix. The diagonal of this matrix is filled with histograms of each feature:&lt;/p&gt;

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

&lt;p&gt;The three classes appear to be relatively well distinguished using the sepal and petal measurements, as seen in the graphs. This means that a machine learning model will almost certainly be able to distinguish them. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Model Building: k-Nearest Neighbors&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;we will use a k-nearest neighbors classifier, which is easy to understand The training set is the only thing that needs to be stored while creating this model. The algorithm identifies the point in the training set that is closest to the new point to create a prediction for a new data point. The label of this training point is then assigned to the new data point.&lt;/p&gt;

&lt;p&gt;Instead of employing only the closest neighbor to the new data point, the k in k-nearest neighbors denotes that any fixed number k of neighbors can be included in the training (for example, the closest three or five neighbors). The majority class among these neighbors can then be used to construct a prediction.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;sklearn.neighbors&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;KNeighborsClassifier&lt;/span&gt;
&lt;span class="n"&gt;knn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;KNeighborsClassifier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n_neighbors&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="n"&gt;knn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_train&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y_train&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;KNeighborsClassifier&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;algorithm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'auto'&lt;/span&gt;, &lt;span class="nv"&gt;leaf_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30, &lt;span class="nv"&gt;metric&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'minkowski'&lt;/span&gt;,
 &lt;span class="nv"&gt;metric_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;None, &lt;span class="nv"&gt;n_jobs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1, &lt;span class="nv"&gt;n_neighbors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;1, &lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2,
 &lt;span class="nv"&gt;weights&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'uniform'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Making Predictions&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;After building our model, we are now ready to make predictions. To make a prediction, we call the predict method of the knn object:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prediction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;knn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_new&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Prediction: {}"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prediction&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Predicted target name: {}"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
 &lt;span class="n"&gt;iris_dataset&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'target_names'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="n"&gt;prediction&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our model predicts that this new iris belongs to the class 0, meaning its species is&lt;br&gt;
setosa. &lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Model Evaluation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This is where the test set that we created earlier comes in. This data was not used to build the model, but we do know what the correct species is for each iris in the test&lt;br&gt;
set. Therefore, we can make a prediction for each iris in the test data and compare it against its label (the known species). We can measure how well the model works by computing the accuracy, which is the fraction of flowers for which the right species was predicted:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;y_pred&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;knn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;predict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;X_test&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Test set predictions:&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt; {}"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y_pred&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Test set score: {:.2f}"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;y_pred&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;y_test&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Test &lt;span class="nb"&gt;set &lt;/span&gt;predictions:
 &lt;span class="o"&gt;[&lt;/span&gt;2 1 0 2 0 2 0 1 1 1 2 1 1 1 1 0 1 1 0 0 2 1 0 0 2 0 0 1 1 0 2 1 0 2 2 1 0 2]
Test &lt;span class="nb"&gt;set &lt;/span&gt;score: 0.97
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For this model, the test set accuracy is about 0.97, which means we made the right prediction for 97% of the irises in the test set.&lt;/p&gt;

&lt;p&gt;Did you like this article? If Yes, please leave a comment below&lt;br&gt;
Lets connect on &lt;a href="https://twitter.com/Emma_Donery"&gt;twitter&lt;/a&gt; and &lt;a href="https://www.linkedin.com/in/emma-donery-0831a7188/"&gt;linkedin&lt;/a&gt;&lt;br&gt;
Happy Pythoning!🎊🎊&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>machinelearning</category>
      <category>ai</category>
    </item>
    <item>
      <title>Getting Started with Nodejs, Express and Docker</title>
      <dc:creator>Emma Donery</dc:creator>
      <pubDate>Sat, 09 Oct 2021 12:37:49 +0000</pubDate>
      <link>https://dev.to/emma_donery/getting-started-with-nodejs-express-and-docker-5ffa</link>
      <guid>https://dev.to/emma_donery/getting-started-with-nodejs-express-and-docker-5ffa</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1xejpq7xut9egz9r1br.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1xejpq7xut9egz9r1br.png" alt="image" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this article, we are going to learn how to get started with Nodejs, Express and Docker.&lt;br&gt;
If you want some basics on how to use Docker i would advice you to read my article on &lt;a href="https://dev.toDocker%20-%20Understanding%20the%20Basics"&gt;Understanding Docker Basics&lt;/a&gt;. This will equip you with all the necessary knowledge you need to start working with Docker.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Javascript&lt;/li&gt;
&lt;li&gt;Docker Basics&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Understanding Docker&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt; is an open source platform that provides an open platform for building, shipping, and running distributed applications. It automates routine configuration procedures and is used across the development lifecycle to create fast, simple, and portable applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Understanding Nodejs And Express&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Node.js&lt;/strong&gt; is a JavaScript runtime framework which is used to create networking and server-side applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Express&lt;/strong&gt; is a small framework that sits on top of Node.js’s web server functionality that provides a robust set of features to develop web and mobile applications.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Why Dockerize your application&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Rapid application deployment&lt;/li&gt;
&lt;li&gt;Portability across machines&lt;/li&gt;
&lt;li&gt;Version control and component reuse&lt;/li&gt;
&lt;li&gt;Sharing of images/dockerfiles&lt;/li&gt;
&lt;li&gt;Lightweight footprint and minimal overhead&lt;/li&gt;
&lt;li&gt;Simplified maintenance&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;NodeJs app&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new directory where all the files would live&lt;/li&gt;
&lt;li&gt;Create a package.json file in this directory to define your project and its dependencies:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express_app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;version&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1.0.0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;license&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;MIT&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Node.js and express on Docker&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;author&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Firstname Lastname &amp;lt;mynames@example.com&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;main&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;app.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scripts&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;start&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node app.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dependencies&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;^4.16.1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Using the Express.js framework, create a app.js file that describes a web app:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&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;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;HOST&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;0.0.0.0&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="c1"&gt;// App&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&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;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello World&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;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;HOST&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Our app running on http://&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;HOST&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Run the app&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;$ node app.js&lt;/code&gt;&lt;br&gt;
Go to &lt;a href="http://localhost:3000/" rel="noopener noreferrer"&gt;http://localhost:3000/&lt;/a&gt; in your browser to view it.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Dockerizing the Application&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create empty Dockerfile&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Dockerfile&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; node:12-alpine3.14&lt;/span&gt;

&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /usr/src/app&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; package*.json ./&lt;/span&gt;

&lt;span class="k"&gt;RUN &lt;/span&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;

&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 8080&lt;/span&gt;

&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; [ "node", "app.js" ]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is what is happening:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Set the working directory to /usr/src/app&lt;/p&gt;

&lt;p&gt;Copy the package.json file to /usr/src/app&lt;/p&gt;

&lt;p&gt;Install node_modules&lt;/p&gt;

&lt;p&gt;Copy all the files from the project's root to /usr/src/app&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Create a &lt;em&gt;.dockerignore&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node_modules
npm-debug.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;NB&lt;/strong&gt;: If you are working with Git then you will also want to add your .git directory and .gitignore file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build Docker Image
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; hello-world &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Run docker container
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Sharing the docker image&lt;br&gt;
For you to share a docker image, you have to first signup at Docker hub. &lt;br&gt;
Docker Hub is a Docker service that allows you to locate and share container images with your team.&lt;br&gt;
After signing up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Re-create the image with your Docker Hub credentials.
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker build &lt;span class="nt"&gt;-t&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;USERNAME]/hello-world &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;ul&gt;
&lt;li&gt;Login to Docker Hub
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker login
&lt;/code&gt;&lt;/pre&gt;



&lt;ul&gt;
&lt;li&gt;Push the image to Docker Hub
&lt;/li&gt;
&lt;/ul&gt;

&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker push &lt;span class="o"&gt;[&lt;/span&gt;USERNAME]/hello-world
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Congratulations!🎉 🎉  The image can now be used on any server or PC that has Docker installed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="o"&gt;[&lt;/span&gt;USERNAME]/hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Docker Compose&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Docker Compose is a tool for running multi-container applications on Docker. You configure your application's services with Compose using a YAML file. Then you build and start all of the services from your setup with a single command.&lt;/p&gt;

&lt;p&gt;Compose enables running apps in a single or more containers simple. To construct or execute containers, we don't need to remember particularly long commands. Your applications will operate smoothly as long as you can run docker-compose build and docker-compose up.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the project root directory, create a docker-compose.yml file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;docker-compose.yml&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;version: &lt;span class="s1"&gt;'3.8'&lt;/span&gt;  &lt;span class="c"&gt;#specifies docker compose version&lt;/span&gt;
services:
  web:
    build:
      context: ./
      target: dev
    volumes:
      - .:/src
    &lt;span class="nb"&gt;command&lt;/span&gt;: npm run start:dev
    ports:
      - &lt;span class="s2"&gt;"8080:8080"&lt;/span&gt;
    environment:
      NODE_ENV: development
      DEBUG: nodejs-docker-express:&lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this article, i have a service name web which has  a build context and a target set to dev. This tells Docker that i want to build the Docker image with the dev stage.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;volume&lt;/strong&gt; instructs Docker to copy and sync changes from the local directory./ of the host with /src on the Docker container.&lt;/p&gt;

&lt;p&gt;Exposing port 8080 exposes the port where the Node.js Express web server runs by default.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Build and run your app with Compose&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;start up your application by running the docker-compose up command
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker-compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Access &lt;a href="http://localhost:8000/" rel="noopener noreferrer"&gt;http://localhost:8000/&lt;/a&gt; in a browser to see the application running.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stop the application from running using the docker-compose down command.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker-compose down
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Docker Compose is an excellent tool for launching numerous containers. For the sake of this article, i solely used Node.js with a single container running on Docker.&lt;/p&gt;

&lt;p&gt;Node.js and Docker gets along swimmingly. The development experience is substantially smoother when docker-compose is used. You can use this article as a starting point for learning more advanced Docker and Node.js skills. &lt;/p&gt;

&lt;p&gt;😊 Have fun coding!😊 &lt;br&gt;
Be sure to leave any comments for me.&lt;/p&gt;

&lt;p&gt;You can connect with me on twitter &lt;a href="https://twitter.com/EmmaDonery" rel="noopener noreferrer"&gt;https://twitter.com/EmmaDonery&lt;/a&gt;&lt;br&gt;
or Linkedin &lt;a href="https://www.linkedin.com/in/emma-donery-0831a7188/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/emma-donery-0831a7188/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>docker</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
