<?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: Hassan Sani</title>
    <description>The latest articles on DEV Community by Hassan Sani (@inidaname).</description>
    <link>https://dev.to/inidaname</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%2F32769%2Fa6a3d4f8-f12c-4dfb-96a4-ef69c371f575.jpg</url>
      <title>DEV Community: Hassan Sani</title>
      <link>https://dev.to/inidaname</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/inidaname"/>
    <language>en</language>
    <item>
      <title>Performance &amp; User Experience: Why They Are Two Sides Of The Same Coin</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Tue, 01 Nov 2022 14:35:47 +0000</pubDate>
      <link>https://dev.to/inidaname/discussing-application-performance-175m</link>
      <guid>https://dev.to/inidaname/discussing-application-performance-175m</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2Fr26isimo4iao8xlnk7xl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fr26isimo4iao8xlnk7xl.jpg" alt="Traffic image at night" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The importance of application performance is critical to the business and the users it serves. In this article, I identify some of the key factors and benefits of good application performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Performance
&lt;/h3&gt;

&lt;p&gt;Performance is how fast your application renders and how effectively it responds to the user’s interactions.&lt;/p&gt;

&lt;p&gt;Providing smooth and quick user interactions or feedback regarding the application’s activities and processes is crucial to good performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Performance
&lt;/h3&gt;

&lt;p&gt;A great user experience depends on the performance of your application. Most visitors are unaware of a good application’s performance, but they often notice a bad one.&lt;/p&gt;

&lt;p&gt;Performance can vary for the user’s device and the internet connection speed. A user accessing the application on a desktop with a fiber optic internet connection will have a fast download and a smoother user experience. While a user on a mobile device with a 3G connection accessing the same application may have a slow download and a terrible user experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance Factors
&lt;/h3&gt;

&lt;p&gt;Before we identify why performance is important here are a few factors that affect performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Application Size&lt;/strong&gt; : The size of your rendered application can affect its performance, from the paragraph above, we mentioned two possible scenarios where users could access your application. The size can greatly affect the time it takes to render depending on the speed and the user’s device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interactive response&lt;/strong&gt; : User interaction with your application if not handled well can affect the application’s performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsive Content&lt;/strong&gt; : Rendered content if not well arranged can not only affect the performance but also push some content out of the screen’s viewport.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance Benefit
&lt;/h3&gt;

&lt;p&gt;Now that we have identified some of the things that can affect an application’s performance let’s dive into why performance consideration is important.&lt;/p&gt;

&lt;h4&gt;
  
  
  It enforces Accessibility
&lt;/h4&gt;

&lt;p&gt;Accessibility or accessible application is an application that can be accessible to keyboard, mouse, and touch screen users, and any other way users access the web, including screen readers and voice assistants like Alexa and Google Home.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Accessibility" rel="noopener noreferrer"&gt;MDN webdocs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Considering performance for your application can enforce building with accessibility in mind. As you build to provide based on a user’s device it equally enforces you to implement features that are specific for the device while making the application responsive.&lt;/p&gt;

&lt;h4&gt;
  
  
  Improve conversion rates
&lt;/h4&gt;

&lt;p&gt;Every application is built to provide paid or free services or products. A conversion rate is a rate at which site visitors perform a measured or desired action.&lt;/p&gt;

&lt;p&gt;The application’s load time is a major factor for conversion rate and is easy to notice by users. Google identified in its research papers that 90% of users will navigate away from a site if takes more than 5 seconds to load. &lt;a href="https://think.storage.googleapis.com/docs/mobile-page-speed-new-industry-benchmarks.pdf" rel="noopener noreferrer"&gt;Learn more here&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Great User Experience
&lt;/h4&gt;

&lt;p&gt;Performance is all about user experience, making sure every component works as expected and is easy to use without unforeseen blockers.&lt;/p&gt;

&lt;p&gt;Key statistics for implementing great user experience — &lt;a href="https://startupbonsai.com/ux-statistics/" rel="noopener noreferrer"&gt;StartupBonsai&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;88% of consumers are less likely to return to a site with a bad User Experience and more likely to tell their friends about it.&lt;/li&gt;
&lt;li&gt;75% of consumers judge a site’s credibility based on how it looks.&lt;/li&gt;
&lt;li&gt;32% of users will leave a brand they love if they have one bad experience.&lt;/li&gt;
&lt;li&gt;45% of users expect content to display correctly across different devices.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Great performance is not all about beautiful designs with lots of content, it is about considering the user and providing a comfortable experience for the application’s result.&lt;/p&gt;

&lt;p&gt;Let discuss performance on Twitter &lt;a href="https://twitter.com/inidaname" rel="noopener noreferrer"&gt;@inidaname&lt;/a&gt;&lt;/p&gt;

</description>
      <category>metrics</category>
      <category>performance</category>
      <category>softwareengineering</category>
      <category>apm</category>
    </item>
    <item>
      <title>These five software topics are boring but important</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Tue, 11 Oct 2022 21:33:28 +0000</pubDate>
      <link>https://dev.to/inidaname/these-five-software-topics-are-boring-but-important-1kbj</link>
      <guid>https://dev.to/inidaname/these-five-software-topics-are-boring-but-important-1kbj</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2F802tr5fjjyicxqnwzral.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F802tr5fjjyicxqnwzral.png" alt="Image of people on table" width="612" height="367"&gt;&lt;/a&gt;&lt;br&gt;
When implementing new products and features, we are blinded by shipping the product and we forget the critical and essential part of the product itself. In this article, I discussed five boring requirements of every app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Performance
&lt;/h2&gt;

&lt;p&gt;Measuring the performance of your application is a boring topic to discuss, it's not like any important person will be required to use your app. But what if.&lt;/p&gt;

&lt;p&gt;Did you know that 53% of mobile site visits are abandoned if pages take longer than 3 seconds to load?&lt;/p&gt;

&lt;p&gt;Performance is as important as writing the code itself, approaching a project with a performance and optimization mindset will put you on edge for an excellent user experience.&lt;br&gt;
Performance measurement gives room to improve or discard app features as need be.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simplicity
&lt;/h2&gt;

&lt;p&gt;My 3 years old can effectively scan through the contents and select what to watch on YouTube Kids.&lt;/p&gt;

&lt;p&gt;Don't make something that is supposed to be enjoyable become a punishment for your users. Interaction with the app should not take the user through research, it should be as seamless and easy even for a 3 years old.&lt;/p&gt;

&lt;p&gt;Every feature you implement must be with the mindset that your users have no idea what it is because they don't. Make it self-explanatory.&lt;/p&gt;

&lt;p&gt;News Flash: as the developer, you will not be there to explain every feature to your users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building for the User
&lt;/h2&gt;

&lt;p&gt;Every feature is important and perfect for the solution you are building.&lt;/p&gt;

&lt;p&gt;This is only true if you know who your users are. Conducting user research is the only way to identify your potential users.&lt;/p&gt;

&lt;p&gt;Without identifying your users you will be building a beautiful perfect solution for yourself, it's not a bad thing until you implement every feature and no one uses them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility
&lt;/h2&gt;

&lt;p&gt;Regarding the user's experience, accessibility is the least discussed most important part of building apps. Apps should be usable by everyone including people with disabilities, you have no right to deny anyone from using your application. It should be a crime if it's not.&lt;/p&gt;

&lt;p&gt;Implement every feature with accessibility rules for everyone either using a mouse, screen reader, or tabs equally getting your content on desktop or mobile.&lt;/p&gt;

&lt;p&gt;This is not an option, maybe boring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every new tool should be used
&lt;/h2&gt;

&lt;p&gt;Yes! Stay with the trend. I agree with that.&lt;/p&gt;

&lt;p&gt;Personal opinion but more than 90% of projects can be implemented with just HTML, CSS, and JavaScript or Java, or python.&lt;/p&gt;

&lt;p&gt;You aim to provide a simple and friendly user experience. When you try to use any of the shiny tools or libraries achieving this becomes almost impossible and you end up adding complex libraries and features when you should be discarding, you serve large files to the user's device consuming storage and power. This is not good.&lt;/p&gt;

&lt;p&gt;Be minimal.&lt;/p&gt;

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

&lt;p&gt;Your approach to building apps should primarily be the users.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How it affects the user's day-to-day activities like storage - and batteries.&lt;/li&gt;
&lt;li&gt;How the user interacts&lt;/li&gt;
&lt;li&gt;How long it keeps your users waiting&lt;/li&gt;
&lt;li&gt;What content do you feed the users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope when next you are building a cool product you will consider these boring topics and discuss them because it won't only give you the user's perspective, it also enforces you to only focus on the essential features of the product.&lt;/p&gt;

&lt;p&gt;Are you interested in discussing these boring topics? Shoot me a tweet &lt;a href="https://twitter.com/inidaname" rel="noopener noreferrer"&gt;@iNidAName&lt;/a&gt;&lt;/p&gt;

</description>
      <category>perfomance</category>
      <category>userexperience</category>
      <category>ux</category>
      <category>boring</category>
    </item>
    <item>
      <title>What is build?</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Wed, 05 Oct 2022 15:08:11 +0000</pubDate>
      <link>https://dev.to/inidaname/what-is-build-5flk</link>
      <guid>https://dev.to/inidaname/what-is-build-5flk</guid>
      <description>&lt;h4&gt;
  
  
  Understanding the software build process
&lt;/h4&gt;

&lt;p&gt;This is my journey to learn the basics of build in the software context.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fjjxclz0vat6s30bmkqjn.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fjjxclz0vat6s30bmkqjn.jpeg" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;First, build here, is not about the idea of writing software codes. It’s about the process after the developer’s code is deployed or something in that line.&lt;/p&gt;

&lt;p&gt;You may have heard the term &lt;em&gt;“My code is building”&lt;/em&gt; or initiated one yourself: knowingly, unknowingly, or mistakenly, don’t be shocked &lt;em&gt;it exists.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  So, what is build?
&lt;/h3&gt;

&lt;p&gt;Definition: Build is a process that compiles your codes using all required components, configurations, environment assets, and any other external libraries to produce an executable or usable application.&lt;/p&gt;

&lt;p&gt;I hope you get the point, basically the process to produce your result.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why are we talking about this?
&lt;/h4&gt;

&lt;p&gt;I believe if we look into the build process of applications, and how some build engines handle our codes we will be able to write readable and scalable codes.&lt;/p&gt;

&lt;p&gt;What happens under the hood, the process and the way we write codes can help both our users and the developer, &lt;em&gt;You&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Shall we begin?
&lt;/h3&gt;

&lt;p&gt;Picture this, you order shawarma from a restaurant and all you had to do was to give the specifics of your order, “Chicken Shawarma, no sausage, and little hot sauce.” &lt;em&gt;Now I’m hungry.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now, Picture this, you get a frozen chicken, some veggies, Shawarma bread, and hot sauce. You go home, set the fire, fry your chicken and make your shawarma just the way you want it. &lt;em&gt;This is probably the worst shawarma.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before you take that break, I may have caused, here is my point. Build could be of two categories, custom or industrial.&lt;/p&gt;

&lt;p&gt;I wouldn’t talk much about custom because just like homemade shawarma, custom build is not easy to set up and sometimes may turn out to be a pain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Industrial Build
&lt;/h3&gt;

&lt;p&gt;This type of build is preconfigured for a particular use case. With industrial configuration, like the restaurant analogy, all you do is order the type that suits you.&lt;/p&gt;

&lt;p&gt;Now we can order that shawarma, and we know where we want it, on the table or in our hands. Same for the application, on the device, or in the browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fkvdv952xleez1j49f4y3.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fkvdv952xleez1j49f4y3.jpeg" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A fairly reminder that this is about build and not about shawarma 🤣.&lt;/p&gt;

&lt;p&gt;Okay, so let’s go on.&lt;/p&gt;

&lt;p&gt;Whichever you choose custom build or industrial build, they both achieve the same results. A deployable project. Now let's dive in, &lt;em&gt;not the shawarma.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Types of Build
&lt;/h3&gt;

&lt;p&gt;They are two types of build: Full Build and Incremental Build&lt;/p&gt;

&lt;h4&gt;
  
  
  Full Build
&lt;/h4&gt;

&lt;p&gt;Back to our shawarma, for this type of build, the shawarma ingredients are always fresh and every process starts from the beginning not considering if you may have available shawarma or not, it just starts from scratch and gives you new shawarma.&lt;/p&gt;

&lt;p&gt;Full build produces a new packaged application every time the build process is initiated, it re-fetches the source files, runs the process from scratch, checks every environment, and deploys a fresh project.&lt;/p&gt;

&lt;p&gt;This type of build takes the same time to produce the result no matter the amount of code change.&lt;/p&gt;

&lt;h4&gt;
  
  
  Incremental Build
&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;This is impossible for our shawarma I guess 😂. Also, maybe it is enough before I trigger a shawarma campaign.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Incremental build checks if a built project is present then compare changes and only updates the components or part of source files that changes, without running every process from scratch when a build command is triggered.&lt;/p&gt;

&lt;p&gt;This type of build time is dependent on the number of changes in the source file.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Process
&lt;/h3&gt;

&lt;p&gt;An industrial build process happens on the cloud ☁️ in most cases or on a configured tool provided by a vendor. At the basic, it follows the same process.&lt;/p&gt;

&lt;p&gt;The system fetches the source code, prepares the environment, fetches dependencies, runs tests if included, triggers the configurations, and finally translates the source code to an executable code or machine-readable depending on the environment.&lt;/p&gt;

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

&lt;p&gt;Hope you got the idea of what build is and how it applies. I also hope I didn’t push you to prepare shawarma while reading this.&lt;/p&gt;

&lt;p&gt;Why don’t reach out to me on twitter to talk about build and tech &lt;a class="mentioned-user" href="https://dev.to/inidaname"&gt;@inidaname&lt;/a&gt;&lt;/p&gt;

</description>
      <category>build</category>
      <category>projectmanagement</category>
      <category>developer</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to start a new phase of yourself</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Mon, 03 Oct 2022 05:04:20 +0000</pubDate>
      <link>https://dev.to/inidaname/how-to-start-a-new-phase-of-yourself-4h78</link>
      <guid>https://dev.to/inidaname/how-to-start-a-new-phase-of-yourself-4h78</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.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%2Fuavj9lnl5clil53l8rm8.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fuavj9lnl5clil53l8rm8.jpeg" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The discussion of a Journey is what makes the distance far. The moment you start, it’s only a few miles to your destination —&lt;a href="https://en.wikipedia.org/wiki/Nupe_people" rel="noopener noreferrer"&gt; Nupe people&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The secret to every journey is something in particular, but before I dive into the mystery, let me point out that everything has ingredients. In this article, I will discuss the five things to building yourself and the secret ingredient you need.&lt;/p&gt;

&lt;p&gt;Here are five things to help you start the journey of building yourself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accept the Fear.
&lt;/h3&gt;

&lt;p&gt;Starting anything new comes with fear and uncertainty. The same applies to building yourself. It’s scary. No doubt about that.&lt;/p&gt;

&lt;p&gt;Everybody who is anybody, has faced challenges and self-doubts as they grew into becoming who they are today.&lt;/p&gt;

&lt;p&gt;It is okay to be scared, confused, and doubtful. Accepting these facts will prepare you confidently to move into the new phase of yourself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define a Goal
&lt;/h3&gt;

&lt;p&gt;The start can be a lot. You should be able to look at where you are and where you want to be.&lt;/p&gt;

&lt;p&gt;There is a reason you want to embark on this journey, financial stability, family value, self-confidence, or a new career goal. Few questions to ask&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where are you right now?&lt;/li&gt;
&lt;li&gt;Where do you want to be?&lt;/li&gt;
&lt;li&gt;What do you need to do to get there?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Set attainable goals using the answers you get from these questions. Your goals should be achievable and trimmed down to the smallest detail.&lt;/p&gt;

&lt;h3&gt;
  
  
  Define a plan and celebrate the small wins
&lt;/h3&gt;

&lt;p&gt;Now that we have defined the goal, the next thing is to create a plan and stick to it. Define a roadmap that will guide you and help track your progress as you go.&lt;/p&gt;

&lt;p&gt;Break down your plans into small tasks with attainable achievements and incentives to reward yourself for every win.&lt;/p&gt;

&lt;h3&gt;
  
  
  Learn as you go
&lt;/h3&gt;

&lt;p&gt;Mistakes will happen, setbacks will come, and plans can change. The goal is to learn from these. Understand what happened and what you could have done better.&lt;/p&gt;

&lt;p&gt;These will guide you and keep you focused on the goal.&lt;/p&gt;

&lt;h3&gt;
  
  
  Just Start
&lt;/h3&gt;

&lt;p&gt;The secret ingredient, this is it! JUST START. Don’t prepare for tomorrow, and don’t wait for some element to be in place. Just start.&lt;/p&gt;

&lt;p&gt;Start working on the business idea, start talking to your friends. Start that journey today.&lt;/p&gt;

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

&lt;p&gt;One thing I’d love for you to take away from this article is that the start of everything is the key to its success. Once you start, the rest will come into place.&lt;/p&gt;

&lt;p&gt;Do you have any tips, advice, or questions? Will love to hear them let’s connect my &lt;a href="https://twitter.com/inidaname" rel="noopener noreferrer"&gt;@iNidAName&lt;/a&gt;&lt;/p&gt;

</description>
      <category>selfawareness</category>
      <category>selfcare</category>
      <category>selfimprovement</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Set Up Testing (TDD) for Typescript Nodejs API</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Sat, 20 Nov 2021 16:15:57 +0000</pubDate>
      <link>https://dev.to/inidaname/how-to-set-up-testing-tdd-for-typescript-nodejs-api-3lak</link>
      <guid>https://dev.to/inidaname/how-to-set-up-testing-tdd-for-typescript-nodejs-api-3lak</guid>
      <description>&lt;p&gt;In this article, we will see how to set up TDD for Nodejs Typescript API.&lt;/p&gt;

&lt;h2&gt;
  
  
  The benefits of writing tests
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The purpose of a test case is to determine if different features within a system are performing as expected and to confirm that the system satisfies all related standards, guidelines and customer requirements. The process of writing a test case can also help reveal errors or defects within the system.&lt;br&gt;
-- Kate Brush, &lt;a href="https://searchsoftwarequality.techtarget.com/definition/test-case" rel="noopener noreferrer"&gt;What is a Test Case? - SearchSoftwareQuality&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The above is the best way to describe tests. &lt;/p&gt;

&lt;h2&gt;
  
  
  Typescript
&lt;/h2&gt;

&lt;p&gt;TypeScript is a strongly typed programming language that builds on JavaScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Node.js
&lt;/h2&gt;

&lt;p&gt;Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jest
&lt;/h2&gt;

&lt;p&gt;Jest is a JavaScript Testing Framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install Nodejs &lt;a href="https://nodejs.org" rel="noopener noreferrer"&gt;https://nodejs.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Familiarity with Typescript or JavaScript is required&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Check if Nodejs is installed
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should have the below output, it varies on the version you install&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v14.18.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Start the project
&lt;/h2&gt;

&lt;p&gt;We will start by initializing a new nodejs application. Create a folder for your project, let call it &lt;code&gt;HelloWorld&lt;/code&gt;. In the directory open your terminal and run the code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm init -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You are instructing Nodejs to initialize a new application and accept every question as default, this should create a &lt;code&gt;package.json&lt;/code&gt; file in the directory.&lt;/p&gt;

&lt;p&gt;Typescript is a superset of javascript, in this case, typescript still transpile to javascript before you can run and execute your code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dependencies
&lt;/h3&gt;

&lt;p&gt;Let's add dependencies for the application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expressjs: A nodejs API framework.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To install Expressjs run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  DevDependencies
&lt;/h3&gt;

&lt;p&gt;Development dependencies, this is a typescript project we are required to install dependencies types as devDependencies to help nodejs with type definitions for the dependencies.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;@types/express&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@types/node: This helps with type definitions for Node.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ts-node: It JIT transforms TypeScript into JavaScript, enabling you to directly execute TypeScript on Node.js without precompiling, we should run the tests without compiling our code into javascript first.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;jest, jest-cli: Javascript testing framework to run tests&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@types/jest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ts-jest: A Jest transformer with source map support that lets you use Jest to test projects written in TypeScript.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;supertest: HTTP assertions to help our test make API calls of GET, POST, etc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@types/supertest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;typescript: well, this is a Typescript project&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let install these dependencies.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install --save-dev @types/express @types/node ts-node jest jest-cli @types/jest ts-jest supertest @types/supertest request @types/request typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Typescript
&lt;/h3&gt;

&lt;p&gt;To set up the typescript project we need to initialise typescript configuration, run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx tsc --init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will create a &lt;code&gt;tsconfig.json&lt;/code&gt; file with the minimal configuration which is okay for this tutorial.&lt;/p&gt;

&lt;h3&gt;
  
  
  Jest Configuration
&lt;/h3&gt;

&lt;p&gt;Now we will set up jest configuration for the test environment, create a file name &lt;code&gt;jest.config.ts&lt;/code&gt; and add the below code. To learn more about jest configuration visit &lt;a href="https://jestjs.io/docs/getting-started" rel="noopener noreferrer"&gt;https://jestjs.io/docs/getting-started&lt;/a&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default {
  moduleFileExtensions: ["ts", "tsx"],
  transform: {
    "^.+\\.(ts|tsx)$": "ts-jest",
  },
  testMatch: [
    "**/tests/**/*.spec.ts",
    "**/tests/**/*.test.ts",
  ],
  testEnvironment: "node",
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A little about the properties above.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;moduleFileExtensions: An array of file extensions your modules use&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;transform: This is to tell jest that we will be using a different file extension not the usual .js files, in our case we are using .ts so we passed a Regex to match our file type and a module to help handle the filetype, this is where we make use of ts-jest we installed&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;testMatch: This property is to tell jest the directory and/or files to run for test cases&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;testEnvironment: We are telling jest which environment our project is targeted for in this case we are targeting Node environment&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Directory
&lt;/h2&gt;

&lt;p&gt;This is our proposed directory structure&lt;/p&gt;

&lt;pre&gt;
├──jest.config.ts
├──package.json
├──package-lock.json
├──tsconfig.json
├──server.ts
├──src
│   └──  app.ts
└──tests
     └── app.spec.ts
&lt;/pre&gt;

&lt;p&gt;It is preferred to structure your app directory in this format for testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now the Codes
&lt;/h2&gt;

&lt;p&gt;Create a folder name &lt;code&gt;src&lt;/code&gt; and create a file in the &lt;code&gt;src&lt;/code&gt; folder name &lt;code&gt;app.ts&lt;/code&gt; with the following code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import express, { Request, Response } from 'express';
const app = express();

app.get('/', (req: Request, res: Response): Response =&amp;gt; {
  return res.status(200).json({message: 'Hello World!'})
});

export default app;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Let work through the codes
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;First, we import the &lt;code&gt;express&lt;/code&gt; module and types of &lt;code&gt;Request, Response&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Then we initialize our application with express and assign it to a variable.&lt;/li&gt;
&lt;li&gt;Then we call the &lt;code&gt;get method&lt;/code&gt; for routing, with a callback handler for our route, this callback takes to parameter &lt;code&gt;req&lt;/code&gt; type Request, &lt;code&gt;res&lt;/code&gt; type Response, which returns a &lt;code&gt;Response&lt;/code&gt; type. For typescript, it is recommended to type variables, parameters and function returns in your codes.&lt;/li&gt;
&lt;li&gt;The handler returns a response of Http status code (&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status" rel="noopener noreferrer"&gt;Learn More about status codes here&lt;/a&gt;)  &lt;code&gt;status: 200&lt;/code&gt; and a json of &lt;code&gt;message: 'Hello World!'&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then we export our application for testing purposes and to modularize.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Was that a lot?&lt;/p&gt;

&lt;p&gt;Next we create another file in the root folder and name it &lt;code&gt;server.ts&lt;/code&gt; containing the following code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import app from './src/app';

const server = app.listen(3000, ()=&amp;gt; {
  console.log(`This is running on port 3000`)
})

export default server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is our application entry point.&lt;/p&gt;

&lt;h3&gt;
  
  
  Test
&lt;/h3&gt;

&lt;p&gt;Create a directory name &lt;code&gt;tests&lt;/code&gt; in the directory create a file name &lt;code&gt;app.spec.ts&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import request from "supertest";
import {Express} from 'express-serve-static-core';
import app from "../src/app"

let server: Express

describe('APP should say "Hello World!"', () =&amp;gt; {
  beforeAll(() =&amp;gt; {
    server = app;
  });

  it('should return 200',  (done) =&amp;gt; {
    request(server)
      .get('/')
      .expect(200)
      .end((err, res) =&amp;gt; {
        if (err) return done(err)
        expect(res.body).toMatchObject({'message': `Hello World!`})
        done()
      })
  });
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Let walk through the codes
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;We import the &lt;code&gt;supertest&lt;/code&gt; module and assign a variable name &lt;code&gt;request&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Import the Express interface&lt;/li&gt;
&lt;li&gt;We then import our app&lt;/li&gt;
&lt;li&gt;Then we declare a variable &lt;code&gt;server&lt;/code&gt; with the type of Express without assigning any value to&lt;/li&gt;
&lt;li&gt;We describe our test suite for a test block, &lt;code&gt;describe&lt;/code&gt; is a jest global function that accepts a &lt;code&gt;string&lt;/code&gt; and a &lt;code&gt;callback&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;We passed a description of the test suite with a string &lt;code&gt;APP should say "Hello World!"&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In the &lt;code&gt;callback&lt;/code&gt; scope we call another global function &lt;code&gt;beforeAll&lt;/code&gt; which accepts a &lt;code&gt;callback&lt;/code&gt;, this is to tell jest that we will want to run a block of code before the suite run its tests. In this case, we want to first assign a value to our declared variable &lt;code&gt;server&lt;/code&gt; which will be to assign the app that we have imported so we can run our tests.&lt;/li&gt;
&lt;li&gt;Then we call another global function &lt;code&gt;it&lt;/code&gt; which is a test closure that takes two parameters a &lt;code&gt;name&lt;/code&gt; and a &lt;code&gt;callback&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The name of our test closure is &lt;strong&gt;should return 200&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;We then pass a &lt;code&gt;done&lt;/code&gt; callback as a parameter for the closure callback&lt;/li&gt;
&lt;li&gt;We call &lt;code&gt;request&lt;/code&gt; and pass the &lt;code&gt;server&lt;/code&gt; variable to run our app in the test scope.&lt;/li&gt;
&lt;li&gt;We call the get method and pass &lt;code&gt;'/'&lt;/code&gt; route. In this case, we are running HTTP GET Method to our application on the route &lt;code&gt;'/'&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;We expect the HTTP GET Method should return 200 Ok status and return the message &lt;code&gt;'meesage':'Hello World!'&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;We call &lt;code&gt;end&lt;/code&gt; method which takes a callback with two parameters of &lt;code&gt;error&lt;/code&gt; and &lt;code&gt;respond&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;We check if the test has error then we return the &lt;code&gt;done&lt;/code&gt; method with the &lt;code&gt;error&lt;/code&gt; from the test if otherwise which means the test runs successfully, so we call the &lt;code&gt;expect&lt;/code&gt; global method which we check &lt;code&gt;body&lt;/code&gt; property from the &lt;code&gt;respond&lt;/code&gt; parameter to match our expected result.&lt;/li&gt;
&lt;li&gt;Then we finally call &lt;code&gt;done&lt;/code&gt; method to tell jest we are through with this suite.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Before we are done
&lt;/h2&gt;

&lt;p&gt;And finally, we need a way to run our test, so edit the &lt;code&gt;package.json&lt;/code&gt; file in the scripts section change &lt;code&gt;test&lt;/code&gt; property. The scripts section should look something like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
  "scripts": {
    "dev": "ts-node server.ts",
    "test": "jest --verbose"
  },
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now when you run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm run test
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You see result like the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F4e637fhgthx3aj7l0agw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F4e637fhgthx3aj7l0agw.png" alt="Image of a successful test" width="346" height="157"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let say we change the return value in &lt;code&gt;app.ts&lt;/code&gt; file from &lt;code&gt;Hello World!&lt;/code&gt; to &lt;code&gt;World Hello&lt;/code&gt; you should see a failed test like the screenshot below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fho4sf2w4dwaco6h241x6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fho4sf2w4dwaco6h241x6.png" alt="Image of a failed test" width="466" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Writing test could mean to write more code but a few lines are worth the hours it will save. I'm a Full Stack developer using React, React Native and Nodejs with Typescript.&lt;/p&gt;

&lt;p&gt;Feel free to put questions or suggestion in the comment or you can also reach out on Twitter &lt;a href="https://twitter.com/inidaname" rel="noopener noreferrer"&gt;iNidAName&lt;/a&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>api</category>
      <category>testing</category>
      <category>node</category>
    </item>
    <item>
      <title>Explain API gateway to me like I’m five</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Fri, 24 Jul 2020 10:18:48 +0000</pubDate>
      <link>https://dev.to/inidaname/explain-api-gateway-to-me-like-i-m-five-21fc</link>
      <guid>https://dev.to/inidaname/explain-api-gateway-to-me-like-i-m-five-21fc</guid>
      <description>&lt;p&gt;Many large applications uses the Microservice architecture, which has an API gateway. How would you explain an API gateway to a newbie to Microservice architecture?&lt;/p&gt;

</description>
      <category>explainlikeimfive</category>
      <category>api</category>
      <category>discuss</category>
      <category>microservices</category>
    </item>
    <item>
      <title>What’s the secret of your career?</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Wed, 15 Jul 2020 13:36:01 +0000</pubDate>
      <link>https://dev.to/inidaname/what-s-the-secret-of-your-career-4b0a</link>
      <guid>https://dev.to/inidaname/what-s-the-secret-of-your-career-4b0a</guid>
      <description>&lt;p&gt;I've been asked, I’ve also asked employed developers and asking you now. I would love to know if you could discuss in this thread to help job seekers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What was your first tech job?&lt;/li&gt;
&lt;li&gt;Did you get your first tech job through online Job Boards (Stack Overflow Job, LinkedIn, etc)?&lt;/li&gt;
&lt;li&gt;What’s your advice to newbies searching for their first gig?&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Developers: How to stay on top of your game even without a job.</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Fri, 24 Jan 2020 18:47:53 +0000</pubDate>
      <link>https://dev.to/inidaname/developers-how-to-stay-on-top-of-your-game-even-without-a-job-2iam</link>
      <guid>https://dev.to/inidaname/developers-how-to-stay-on-top-of-your-game-even-without-a-job-2iam</guid>
      <description>&lt;p&gt;It difficult. You know that book, titled &lt;em&gt;"To Be a developer is not a Day Job"&lt;/em&gt;. &lt;br&gt;
You probably know it by a different name, so let just agree to disagree.&lt;/p&gt;

&lt;p&gt;You may be at the time of your career where you're either; transitioning to tech, a non-cs student learning to code, a cs graduate, or just a regular developer trying to keep up with your skills, (aren't we all). Don't even get me started on JavaScript.&lt;/p&gt;

&lt;p&gt;So, you spent the weekend waiting for the recruiter's respond, and when it finally came, it say's "We decided to go with another candidate", you've tried every tutorial online but still can't stop using google, or may be you've just built something so cool and you are ready to title yourself the world best developer but then you tap on twitter, here is a 12 years old bragging about how he has just launched his third start up. Like "Did I miss something?"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fwzqaunohdrvmpnx66gm9.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fwzqaunohdrvmpnx66gm9.gif" alt="Did I miss something" width="486" height="230"&gt;&lt;/a&gt;Picture Credit: &lt;a href="https://imgur.com/gallery/I6gKIc1/comment/180506276" rel="noopener noreferrer"&gt;imgur&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before I continue, I will like you to know that every successful developer you see out here has been through this same sh*t Please don't argue it the same. You can ask them&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Which now bring me to why I am writing this. I'm not going to take you through some Wikipedia of who I am, but the past few months, let's just say I found a way out of it, and it not a Job.&lt;/p&gt;

&lt;p&gt;There may come a time in live, where it feels like everything is just coming down on you, that was where I was a few month ago.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2F63794emxeakil966skhp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2F63794emxeakil966skhp.gif" alt="Thanos throwing a moon" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But this is not about me so enough with the introduction. &lt;em&gt;Let's get to work!&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;You need to love this Job.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;It not a suggestion or a recommendation, it the base of it all. It not just coding, to grow in any aspect of life you need to find love and passion in it. &lt;/p&gt;

&lt;p&gt;If you can't find passion in coding, I suggest you start searching for it, because to be honest, you are going no where without the love for it. Take it from me, this profession is that jealous.&lt;/p&gt;

&lt;p&gt;Being passionate about what you do, it will push you to always do more, it will kick you up from your bed in the middle of the night, it will make you talk to yourself on the street and it will always challenge you to the point you start second guessing yourself. But at the end of it all, even the smallest achievement will always give you joy and fulfillment.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Be honest, even with yourself.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You have to decide what you want to do with your skills. Do you want to work as a developer? Do you want to be a freelancer? or Do you want to start your own Startup. &lt;em&gt;Remember, we are talking about staying on top.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This decision will help you focus on your journey, it will create a pathway for you to navigate. This is not as simple as it sounds, making this decision may probably take it own time and it okay if through your journey this decision changes, it is natural.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Be calm, be positive and play it cool.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Your inbox is probably fill with rejections, &lt;em&gt;they choose to go with another candidate. &lt;strong&gt;Yes! but that doesn't mean something is wrong with you!&lt;/strong&gt;&lt;/em&gt; they were not satisfied with your technical test result. &lt;strong&gt;Good! now you know what you need to work on!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This here is the big one: &lt;em&gt;After evaluating your resume your profile and the job description are not a good fit at the moment &lt;strong&gt;(I've lost count of how many mails I have with this in the body)😂😉&lt;/strong&gt;&lt;/em&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You don't know what is going, Eventuarry 😁 (ask Nigerian Twitter)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every time I apply for a job, I always create imaginery moment of me in the office smiling with my colleagues and building stuff, but when I get a response, I just start all over again.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Join a community&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Go on twitter, dev.to or most effectively attend meet ups. You get to learn how others are navigating through this journey, you get to network and even get a job offer.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Be ready to speak up.&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Be ready to tell anyone and everyone about your skills and your current background. If you are looking for a job, say it. If you are in need of gigs, let them know. If you need resources to help you learn, ask for it. You will be surprised who is willing to help. And do not be afraid to reach out to your Mentors.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Get a Mentor&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;On a final one, get a mentor. Not necessarily but look up to someone, seek guidance.&lt;/p&gt;

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

&lt;p&gt;Do you have tips you can share? will love to talk about it in the comments. Share this article, with others.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>recruiting</category>
      <category>developer</category>
      <category>growing</category>
    </item>
    <item>
      <title>Software Development</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Thu, 23 Jan 2020 08:56:01 +0000</pubDate>
      <link>https://dev.to/inidaname/software-development-4l47</link>
      <guid>https://dev.to/inidaname/software-development-4l47</guid>
      <description>&lt;h4&gt;
  
  
  What you should know as an Entrepreneur
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---Y_vuF71--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A14okYBLvC2fvbSGMt30lDA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---Y_vuF71--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A14okYBLvC2fvbSGMt30lDA.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;21st Century, using, building and integration of software across industries are more of a necessity. If your product or solution does not require interaction with any sort of technology, then probably you are a time traveller from the 80s. Building a product or solution for this generation requires an interface with technology either for delivery, communication or production, this means that at some point your product must need technology to scale and if you are not adopting or integrating technology into what you are building then be rest assured your competitors will, it only good that you are ahead.&lt;/p&gt;

&lt;p&gt;This is not technical writing for how to build software or when to build one, this is aimed at explaining the process and components involved in building one.&lt;/p&gt;

&lt;p&gt;This is to provide you with an overview so that when you are looking to build your product, where it may require you to own the Software as a product, integration of software or just a simple solution using tech, before employing a software developer or software consultancy, you will be able to identify the process, duration, manpower and resources required before kickoff.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software as a Product.
&lt;/h3&gt;

&lt;p&gt;Software is like a physical product you may pick off the shelf. Take a book for example; to own a book you must purchase one (the user), from a bookstore (the interface), the bookstore has a stack of books (the database), and someone will need to attend to you at the time you are purchasing it (the server).&lt;/p&gt;

&lt;p&gt;Now your favourite bookstore was built by a few people; let’s say the structure was design to accommodate at least 10 customers at a time (software architecture), the bricklayers (the developers) did a good job to achieve that, but only with the help of a good architect (User Experience developers) and the painters (User Interface Designers) did a nice job adapting calm colours for the store. Do you see where I’m going with this?&lt;/p&gt;

&lt;p&gt;Now the stacked books are categorized in shelves so you know where every genre is located (Data Scientist), each shelf in the bookstore has been checked for things like title arrangements, shelves strengths, health hazard and insects (software tester), the bookstore has never lacked a title you request or whenever you need a new edition (deployment), and this bookstore is open 24 hours a day (you know this).&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Components
&lt;/h3&gt;

&lt;p&gt;With the little description of software as a product, it fair to also mention that software is not necessarily an application you install in your computer, Facebook is a software, Google is a software and WhatsApp these are all software but some are only usable on the web or mobile.&lt;/p&gt;

&lt;p&gt;It doesn’t matter how you want your software to be used, it all has the same components as described in the bookstore analogy.&lt;/p&gt;

&lt;h3&gt;
  
  
  The User
&lt;/h3&gt;

&lt;p&gt;When building a software, the primary purpose is to deliver a solution to a user, this could be a person, business, a service or a device.&lt;/p&gt;

&lt;p&gt;Always have the user in mind when building your product, what do you want the user to achieve. This is your job as the product owner.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Interface
&lt;/h3&gt;

&lt;p&gt;This is the product’s look and feels, the end delivery of the product. This is what the user will interact with, this is the image that defines you as a brand or a person to your users. A User Interface should be simple to use and not with too many information as not to confuse the user.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Database
&lt;/h3&gt;

&lt;p&gt;As a product or software, you will have visitors, users, returning users and storage of goods or services you own. The information that will help you identify the user, the goods or services for the users are all going to be stored, the database will collect all information and also serve when requested by you, a user or a service.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Server-Side
&lt;/h3&gt;

&lt;p&gt;This is the product section that interacts with the database, provide security and also maintain the activities of the software.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Host
&lt;/h3&gt;

&lt;p&gt;As all these are required the software also needs to reside somewhere, this is where your users will visit whenever they wish to access and interact with your software, it’s highly recommended that delivery is not delayed and always reachable. This could be on a single computer (not advised) or in the cloud (another topic).&lt;/p&gt;

&lt;h3&gt;
  
  
  Software: Process and Resources.
&lt;/h3&gt;

&lt;p&gt;The process and resources of building software are not something one person put together not even you.&lt;/p&gt;

&lt;p&gt;Let me take you through.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Interface
&lt;/h3&gt;

&lt;p&gt;As mentioned, this includes the colours, segmentation and data presentation of the software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Process&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For an interface to meet the international practice, a User Experience developer will have to put together something called a prototype; this is a proposed skeleton look-alike of the software, this will help you decide how to present your click sections, segment arrangements and data placements.&lt;/p&gt;

&lt;p&gt;After the User Experience developer, a User Interface Designers will put a face to the skeleton, giving it colours, providing responsiveness and accessibility for all users. This stage is to give you and the developers the look of what to produce, at this stage making corrections are easily effective.&lt;/p&gt;

&lt;p&gt;After the User Interface Design, the Frontend Developer’s job start, this is the stage where the software or product starts to come to live, clickable and navigation are visible at this stage. A Frontend Developer will write software codes to bring your product to life.&lt;/p&gt;

&lt;p&gt;At the end of this stage, you have a full User Interface of your product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Resources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should provide resources such as Logo, Images, product description, company description, your contact details and any assets you will want to see on the software.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Server-Side
&lt;/h3&gt;

&lt;p&gt;This is also referred to as the Backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Process&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the backend to effectively serve your software, few things you must put into consideration include security of your software and your users, speed of accessing your stored information, and authentication or authorization of users.&lt;/p&gt;

&lt;p&gt;At this stage, a backend developer will write software codes that implement authentication and authorization checks, interacts with a database, make sure data sent to the user is the data requested at the time and also identify returning users. At the stage, your product is interacting with both the database and the user interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Resources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should provide resources such as what user information you want to store, what information you want to present to the user, how you want to authenticate a user and how to authorize the user.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deployment
&lt;/h3&gt;

&lt;p&gt;Whatever your product, you will need somewhere it resides. Probably your software is an in-house use product it still needs to be deployed for usage and access, this is called a Server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Process&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For effective and reliable delivery, a cloud solution is recommended, otherwise, any will still do. A server manager will package all the codes and assets for deployment, at this stage also a security layer required which is to encrypt your data interaction session. The package codes will be transferred to a server and it’s ready for your users to access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Resources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should provide resources such as a server where your product will reside, an address where your user will access the product and also a security protocol you want it to use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software: The Producers
&lt;/h3&gt;

&lt;p&gt;Before I move on, let me take you back to the bookstore analogy again, and just ask yourself, can one man build a bookstore? I’m guessing your answer is no, so why would you think one man can build software.&lt;/p&gt;

&lt;h3&gt;
  
  
  The involved professionals
&lt;/h3&gt;

&lt;p&gt;Just like we had use employed some professionals to build the bookstore, we also need more than one professional to produce software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product Owner&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Product Owner responsibility is to describe the product in details and identify deliverable of the product this could be you the entrepreneur, but it is recommended you employ a professional that can communicate your idea to the developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Experience Developer (UX).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The UX’s responsibility is to produce a sketch of the product for better description between the developers, product owner and potential users.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Interface Designer (UI).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The UI designer’s responsibility is to place colours, images, define the screen sizes and identify accessibilities and responsiveness of the software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frontend Developer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Frontend Developer’s responsibility is to write the codes, that is to translate the design into usable software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend Developer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Backend Developer’s responsibility is to write the server-side codes for database interaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quality Assurance (QA) Engineer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For software to meet industry’s standard some recommendations must be put in place, it is the responsibility of the QA Engineer to make sure these recommendations are met and that the software will not fail to run properly once deployed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server Manager.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once your software is deployed for your users, it needs maintenance and regular updates to keep it running at all time. It’s the responsibility of the Server Manager to always make sure the server is up and running at all time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessible Solutions
&lt;/h3&gt;

&lt;p&gt;As an entrepreneur, this may sound more like too much or overkill for your small project or budget, they are consultants or organization with all these mentioned professionals as a team or a built product to provide some of these as a service, a little research will get you started.&lt;/p&gt;

&lt;p&gt;That said, I’m going to repeat it. Please do not employ a single person to do all these.&lt;/p&gt;

</description>
      <category>entrepreneur</category>
      <category>softwaredevelopment</category>
      <category>startup</category>
    </item>
    <item>
      <title>Explain Kubernetes to me like I'm Five</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Sat, 21 Sep 2019 20:57:19 +0000</pubDate>
      <link>https://dev.to/inidaname/explain-kubernetes-to-me-like-i-m-five-5a3f</link>
      <guid>https://dev.to/inidaname/explain-kubernetes-to-me-like-i-m-five-5a3f</guid>
      <description>&lt;p&gt;For the past month I've been working with Docker, it an awesome tool I get what I am doing but I still find it difficult to wrap my head around Kubernetes or Docker Swamp.&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>kubernetes</category>
      <category>devops</category>
      <category>explainlikeimfive</category>
    </item>
    <item>
      <title>Let's talk about that project you never want to talk about.</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Sat, 13 Jul 2019 22:16:12 +0000</pubDate>
      <link>https://dev.to/inidaname/let-s-talk-about-that-project-you-never-want-to-talk-about-5fb7</link>
      <guid>https://dev.to/inidaname/let-s-talk-about-that-project-you-never-want-to-talk-about-5fb7</guid>
      <description></description>
      <category>discuss</category>
    </item>
    <item>
      <title>How to understand Angular using the Documentation</title>
      <dc:creator>Hassan Sani</dc:creator>
      <pubDate>Mon, 08 Apr 2019 13:42:25 +0000</pubDate>
      <link>https://dev.to/angular/how-to-understand-angular-using-the-documentation-i87</link>
      <guid>https://dev.to/angular/how-to-understand-angular-using-the-documentation-i87</guid>
      <description>&lt;p&gt;When learning a new language or framework, identifying the right resources could be difficult, relying on the documentation is your best bet. It provides the basic knowledge to get you started.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Manuals are the most important documents no one read&lt;br&gt;
&lt;em&gt;- Lot of Us.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But for most developers, documentation could be difficult to understand or too large to read.&lt;/p&gt;

&lt;p&gt;Angular has one of the most detailed documentation I have read, the team did a great job simplifying it.&lt;/p&gt;

&lt;p&gt;In this post, I will explain how I read and got the most out of Angular's documentation, the pattern that helped me and I hope it will help you.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Structure.
&lt;/h3&gt;

&lt;p&gt;Angular's Documentation is structured to take you from a beginner to an Angular developer.&lt;/p&gt;

&lt;p&gt;On Angular's official page &lt;a href="https://angular.io" rel="noopener noreferrer"&gt;angular.io&lt;/a&gt;, click on &lt;strong&gt;Get Started&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fsr7iq7bsjc2q13vzmi6h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fsr7iq7bsjc2q13vzmi6h.png" alt="Angular's Documentation Page Mobile View" width="303" height="538"&gt;&lt;/a&gt;Mobile View&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.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%2Fuxl6ftsbovhag15cfs3n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.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%2Fuxl6ftsbovhag15cfs3n.jpg" alt="Angular's Documentation Page Desktop View" width="800" height="428"&gt;&lt;/a&gt;Desktop View&lt;/p&gt;

&lt;h4&gt;
  
  
  The Document's table of contents.
&lt;/h4&gt;

&lt;p&gt;To view the Documentation's Table of Contents, click on the burger menu at the top left of the screen, a navigation menu will slide out.&lt;/p&gt;

&lt;p&gt;Let's talk about them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;br&gt;
The Getting Started section will guide you on setting up your Angular environment, installation of other software used by Angular, and a first Angular application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tutorial&lt;/strong&gt;&lt;br&gt;
The Tutorial section will walk you through building a full functional Angular application, with some code along examples to provide you with production-ready Angular skills.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fundamentals&lt;/strong&gt;&lt;br&gt;
The Fundamentals section explains the features and the architect behind Angular's build block, how Angular is structured around these features and how these features can help you write better codes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Techniques&lt;/strong&gt;&lt;br&gt;
The Techniques section describes the Angular's added features and implementation, including how to use first/third party libraries and features.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Setup and Deployment&lt;/strong&gt;&lt;br&gt;
The Setup and Deployment section describes the file structure, environment configuration, other concepts like the general life-circle of an application, and how your application interacts with the browser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Release Information&lt;/strong&gt;&lt;br&gt;
The Release Information section explains why Angular is frequently updated by the community. When to expect a major release of the framework, plus what features to expect including how to update your application to the latest version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quick References&lt;/strong&gt;&lt;br&gt;
Other information you will need, code style guides and definition of terms used through the documentation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CLI Commands&lt;/strong&gt;&lt;br&gt;
List of CLI commands for Angular CLI, with other flags that increase your productivity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;API&lt;/strong&gt;&lt;br&gt;
List of all Angular's API with detailed descriptions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Navigating
&lt;/h2&gt;

&lt;p&gt;All mentioned above could be overwhelming but don't worry, let me walk you through a secret.&lt;/p&gt;

&lt;h4&gt;
  
  
  Where to go
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;First Time with Angular&lt;/strong&gt;: you are new to Angular, you've seen an online tutorial or you're are making a framework switch. I recommend you start with &lt;em&gt;Getting Started&lt;/em&gt;, follow the guide, read through and understand. Follow up with the &lt;em&gt;Tutorial&lt;/em&gt; section, code along and practice more after the tutorial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHY&lt;/strong&gt;: The getting started section will walk you through scaffolding your application, it will explain the basic process, how to install the Angular CLI and how to start or initiate an Angular project. This is a fundamental instruction as a beginner. &lt;br&gt;&lt;br&gt;
The tutorial section will provide you with a functional application that covers the most important parts of building application with Angular, syntax and features that will give you the basic knowledge of Angular.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Moving Forward&lt;/strong&gt;: Next I recommend you navigate to &lt;em&gt;Fundamentals&lt;/em&gt;, you do not need to do a code along in this section. Read through to understand, this will open you up to see Angular under the hood, it is literally the Aha section.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHY&lt;/strong&gt;: The team focused on explaining how each component of the framework interacts with one another, the concept behind the framework's features and how it was structured to give developers flexibility and power to build applications. While I was reading this section it felt like a Dan Brown's Novel 😊😊.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Now Breaking the Chain&lt;/strong&gt;: Jump four steps to the &lt;em&gt;CLI Commands&lt;/em&gt; section, read it topic by topic like a reference list, practice each topic, &lt;em&gt;not important&lt;/em&gt; but you get to see what these commands can do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHY&lt;/strong&gt;: At this stage, during your tutorial/practice you've used some of these commands, this section provides you a detailed explanation of each command plus some you didn't even know existed, including possible flags you can pass through. When done, you will be writing CLI commands like an Angular pro.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step Back a Little&lt;/strong&gt;: Go back to techniques, at this point you are an Angular genius, go forth and build. &lt;em&gt;May The NGs be with you&lt;/em&gt;. But even geniuses make mistakes and to be a master you must never stop learning. &lt;br&gt; These mistakes may cause a security breach on your application, the Technique section explained the best approach to help with security checks, some &lt;em&gt;dos and don'ts&lt;/em&gt;. The section will guide you on how to implement some of the latest software development practice like implementing Service Worker for an Angular PWA and many other cool practices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are we still here&lt;/strong&gt;: Okay, head to the &lt;em&gt;Setup and Deployment&lt;/em&gt; section, this is more of a descriptive section. It describes how to prepare your Angular application for production or development environment, how to test and set up a testing environment and how to produce and deploy your Angular application &lt;em&gt;aka&lt;/em&gt; &lt;code&gt;Hello World!&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Save the rest for last&lt;/strong&gt;: As I said, "you must never stop learning". The API section is an ocean of knowledge and that is what it should be. My recommendation may be yet my confirmation is that you cannot read the API on a page by page style, even more confusing it is alphabetically arranged. So not to confuse your confusion, you do not need to read this section right way. It should be the section that brings you back to the documentation from time to time.&lt;/p&gt;

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

&lt;p&gt;Learning a new framework is an exciting journey, and fun when you have the right tools and resources to help you. The way you learn or use these resources can affect the journey. You may have your own way of learning, some learn with video, blogs or physical couching, some don't even need documentation, &lt;em&gt;"Believe me, they exist 😉"&lt;/em&gt;. I am not enforcing you to follow this guide, it's something that really helped me on my journey. Please if you have any guide that may have helped you on your journey or resources that you feel was helpful, I will be happy to hear about it please share in the comment section, Thank You.&lt;br&gt;
I wish you luck on learning and understanding Angular and again &lt;em&gt;"May the NGs be with you…"&lt;/em&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>tutorial</category>
      <category>learning</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
