<?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>Forem: Brocoders</title>
    <description>The latest articles on Forem by Brocoders (@brocoders).</description>
    <link>https://forem.com/brocoders</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%2Forganization%2Fprofile_image%2F3023%2F9aeacac4-96b2-4a6b-86b8-1fdc8aacb328.jpg</url>
      <title>Forem: Brocoders</title>
      <link>https://forem.com/brocoders</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/brocoders"/>
    <language>en</language>
    <item>
      <title>Types of QA Testing: A Comprehensive Guide</title>
      <dc:creator>yulyabrocoders</dc:creator>
      <pubDate>Wed, 02 Aug 2023 10:54:05 +0000</pubDate>
      <link>https://forem.com/brocoders/types-of-qa-testing-a-comprehensive-guide-47b3</link>
      <guid>https://forem.com/brocoders/types-of-qa-testing-a-comprehensive-guide-47b3</guid>
      <description>&lt;p&gt;In the dynamic world of software development, ensuring the quality and reliability of software products is paramount. This is where Quality Assurance (QA) testing plays a pivotal role. QA testing encompasses a range of methodologies, techniques, and tools aimed at uncovering defects, verifying functionality, and validating the overall performance of software systems.&lt;/p&gt;

&lt;p&gt;The global software testing market reached $45 billion in 2022, and keeps growing, being driven by the increasing demand for high-quality software, the rapid adoption of agile and DevOps methodologies, and the growing importance of ensuring security and compliance in software applications. Also, due to the increasing demand for mobile apps, many companies worldwide are expanding their focus on mobile testing, which is likely to supplement the software testing market growth.&lt;/p&gt;

&lt;p&gt;This QA guide provides a detailed analysis of the various types of testing, exploring their significance in optimizing the sales funnel and maximizing customer satisfaction throughout the software development lifecycle. Understanding QA types will allow you to effectively identify and address defects, improve software quality, and deliver reliable products that meet customer expectations.&lt;/p&gt;

&lt;p&gt;At Brocoders, we have extensive experience and a proven track record in the field of QA, enabling us to provide exceptional software testing services that enhance your QA strategy and deliver reliable products that exceed your customers' expectations. Keep reading to discover how we can help propel your business forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding QA Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;QA testing, short for Quality Assurance testing, refers to the systematic process of evaluating software products to ensure they meet the required quality, functionality, and performance standards. It involves conducting various tests, identifying defects or issues, and verifying that the software functions as intended. The primary purpose of QA testing is to improve the overall quality of software products and enhance user experience. It aims to identify and correct defects, bugs, and vulnerabilities, ensuring that the software meets customer expectations, performs reliably, and delivers a seamless experience to users.&lt;/p&gt;

&lt;p&gt;QA testing also helps optimize software performance, mitigate risks, and contribute to the overall success of software development products. It is also crucial for maintaining compliance with industry standards and regulations, enhancing the software’s security and maximizing customer satisfaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;QA, QC, and Testing. What’s the Difference?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Along with Quality Control or QC and testing, QA is essential to ensuring software quality. While the three terms are sometimes used interchangeably, they use different approaches to deliver a product of the best possible quality.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Quality Assurance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quality Assurance is a broad term that focuses on preventing defects and ensuring that the development process adheres to established standards. It involves process definition, process monitoring, and process improvement. The goal of QA is to ensure the software development process is efficient, effective and meets quality objectives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quality Control&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Quality Control involves activities that are performed to detect and correct defects in the software. It includes product inspections, testing, and the overall monitoring of the software development process. QC is applied to the finished product and performed before the product release. It is reactive and aims to identify and rectify defects after they occur.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Testing is a crucial part of both QA and QC. It involves the systematic evaluation of software to ensure it meets specified requirements and quality standards. Testing includes activities such as test planning, design, execution, and defect management. Its purpose is to uncover defects, validate functionality, and verify the software's performance and reliability.&lt;/p&gt;

&lt;p&gt;All these three components work together to ensure that software products are high quality, meet customer expectations, and perform reliably.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Role of QA Testing in SDLC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;QA testing plays a crucial role in SDLC by ensuring a software application's quality, reliability, and overall success. It acts as a quality gatekeeper throughout the development process, working closely with other stakeholders to identify and address defects, ensure compliance with requirements, and enhance the user experience.&lt;/p&gt;

&lt;p&gt;In the early stages of SDLC, QA testers collaborate with business analysts and stakeholders to define testable requirements, ensuring they are clear, specific, and measurable. During the design phase, testers review design documents and provide input to ensure testability and identify potential risks. They also participate in peer reviews to validate the design's alignment with quality standards and industry best practices.&lt;/p&gt;

&lt;p&gt;As development progresses, QA testers conduct various testing activities such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Unit testing;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integration testing;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;System testing;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Acceptance testing.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They run various test cases, identify and report defects, and collaborate with developers to ensure timely bug fixes. QA testing involves functional and non-functional testing, including performance, security, usability, compatibility, and accessibility testing, depending on the project requirements. Testers also play a crucial role in maintaining test environments, test data, and test automation frameworks. They continuously monitor and analyze test results, track metrics, and provide feedback to the development team and project stakeholders.&lt;/p&gt;

&lt;p&gt;Incorporating different QA testing types in the sales funnel brings the benefits of improved product quality, enhanced customer satisfaction, and increased sales conversion rates. It also helps identify and fix potential issues early, reducing the risk of costly post-release defects and improving overall product reliability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of QA Testing&lt;/strong&gt;&lt;br&gt;
QA testing can be classified into different types based on whether the testing is performed manually or automatically. Based on these categories, testing can be divided into the following types:&lt;/p&gt;

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

&lt;p&gt;Let's take a closer look at some of the more common testing types:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Functional Testing&lt;/strong&gt;&lt;br&gt;
This is a fundamental type of testing that verifies if the software functions as expected and meets the specified requirements. It is widely used in both manual and automated testing approaches. Functional testing checks an app, website, or system to ensure that each function of a software application works as intended.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Performance Testing&lt;/strong&gt;&lt;br&gt;
Performance testing allows testers to check the system’s behavior under various workload conditions. This type of testing can be automated to simulate heavy loads and measure a software application's speed, response times, scalability, and resource usage. Performance tests help confirm the product’s stability and reliability and verify if the extra load will degrade system performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Testing&lt;/strong&gt;&lt;br&gt;
This type of testing assesses the resilience of a system against potential security threats and vulnerabilities. Security testing often combines manual and automated approaches. It aims at finding any potential flaws and weaknesses in a software system that could lead to the loss of data, revenue, or reputation of the company.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Usability Testing&lt;/strong&gt;&lt;br&gt;
Usability testing evaluates how user-friendly and intuitive an application is for end-users. During this testing, testers evaluate the learnability, efficiency, navigation, error handling, consistency, feedback, and accessibility of the application to identify any usability issues and improve the overall user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compatibility Testing&lt;/strong&gt;&lt;br&gt;
This testing type ensures an application functions correctly across different platforms, browsers, and devices. Compatibility testing aims to identify compatibility issues and provide a seamless user experience across different environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regression Testing&lt;/strong&gt;&lt;br&gt;
Software regression testing verifies that changes or fixes in an application haven't introduced new defects or disrupted existing functionality. This testing type ensures that previously developed and tested software works as expected by performing functional and non-functional tests. Regression testing is an essential testing type in software development and maintenance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Localization and Internationalization Testing&lt;/strong&gt;&lt;br&gt;
This testing validates that an application is adapted to different languages, cultures, and locales, enabling it to effectively cater to a global audience and meet specific regional requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessibility Testing&lt;/strong&gt;&lt;br&gt;
Accessibility testing assesses the usability of an application for individuals with disabilities, ensuring compliance with accessibility standards. During this testing, testers check for compliance with accessibility standards and guidelines, assess keyboard navigation, screen reader compatibility, color contrast, alternative text for images, and other accessibility features to identify potential barriers and ensure that individuals with diverse abilities can use the application.&lt;/p&gt;

&lt;p&gt;The table below outlines the advantages, disadvantages, and best scenarios for each testing type mentioned.&lt;/p&gt;

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

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

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

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

&lt;p&gt;Incorporating various types of QA testing throughout SDLC is paramount to building high-quality software products. Each testing type serves a specific purpose, whether it is functional testing to ensure core functionalities work as intended, security testing to safeguard against potential breaches, usability testing to enhance the user experience, or compatibility testing to provide broad platform support. By integrating different testing types, organizations can identify and address defects, optimize performance, ensure accessibility, and enhance customer satisfaction. This approach not only minimizes the risk of post-release issues but also leads to improved product quality, increased sales conversion rates, and, ultimately, a stronger competitive advantage.&lt;/p&gt;

</description>
      <category>qa</category>
      <category>testing</category>
    </item>
    <item>
      <title>React vs. Vue.js. An in-depth overview of their main differences.</title>
      <dc:creator>Oleg Goncharenko</dc:creator>
      <pubDate>Fri, 25 Jun 2021 09:09:31 +0000</pubDate>
      <link>https://forem.com/brocoders/react-vs-vue-js-an-in-depth-overview-of-their-main-differences-59ha</link>
      <guid>https://forem.com/brocoders/react-vs-vue-js-an-in-depth-overview-of-their-main-differences-59ha</guid>
      <description>&lt;p&gt;Vue.js and React have lots of similar features. Although React is a library, it suits building the view of the single-page application the same efficiently as Vue.js.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common features in Vue.js and React:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;They enable writing front-end with JavaScript and utilize the virtual DOM for fast data rendering.&lt;/li&gt;
&lt;li&gt;Components have the same single file structure and support JSX.&lt;/li&gt;
&lt;li&gt;Both systems allow uni- and bidirectional data flow for the components.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's study the component build principles in detail. At the end of our journey, we will uncover the key difference between React and Vue.js.&lt;/p&gt;

&lt;h3&gt;
  
  
  Table of content
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Component build principles in React and Vue.js&lt;/li&gt;
&lt;li&gt;How do components impact browser DOM?&lt;/li&gt;
&lt;li&gt;Data binding of the components&lt;/li&gt;
&lt;li&gt;Brief industry comparison of React and Vue.js&lt;/li&gt;
&lt;li&gt;Useful resources&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Component build principles in React and Vue.js
&lt;/h2&gt;

&lt;h3&gt;
  
  
  JSX and single-file component structure in React
&lt;/h3&gt;

&lt;p&gt;The reason why JavaScript is used for front-end development could be explained so: Google Chrome and Safari have inbuilt JavaScript engines in their core. Hence, developing the code that directly talks to the browser methods makes sense.&lt;/p&gt;

&lt;p&gt;Since the UI is represented with components that need to pass the HTML data, React and Vue.js come up with their syntax extensions to JavaScript.&lt;/p&gt;

&lt;p&gt;React is using JSX, the JavaScript syntax extension, which allows either to return HTML in JavaScript, or it could be executed in HTML. Also, JavaScript variables can be assigned with HTML tags, like this:&lt;/p&gt;

&lt;p&gt;const message = &lt;/p&gt;
&lt;h1&gt;React is cool!&lt;/h1&gt;

&lt;p&gt;Dynamic variables could be put into bracket syntax ( { ... } ) in the middle of JSX.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;An example of React component, written with JSX&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;However, web browsers can not execute JavaScript, which includes HTML tags. To make the code readable, React uses Babel to transpile it to regular JS code.&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://stackshare.io/react"&gt;Stackshare&lt;/a&gt; statistics, the most favorite features of React are components (747) and simplicity (484). JSX, though, takes less user appreciation (31).&lt;/p&gt;

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

&lt;p&gt;I think the biggest concern about JSX is that it doesn't require a specific code structure. The logic and UI of components are in one file so that it could lead to messy code.&lt;/p&gt;

&lt;p&gt;The idea of the single-file component is opposed to Angular, which proposed keeping HTML, JavaScript and CSS in separate files. Completing components in a single file didn't get enough popularity unless Airbnb and Netflix joined the React community and began using React for their MVP construction.&lt;/p&gt;

&lt;p&gt;When searched for materials related to our topic, I found the 'Do Better Dev Show podcast'. In &lt;a href="https://podcasts.google.com/feed/aHR0cHM6Ly9hbmNob3IuZm0vcy80NjY3ZDcyMC9wb2RjYXN0L3Jzcw/episode/MWE0NzYwODAtZjYyNi00MzI5LWE0MjEtZTBmNmU4YjhhMWM1?ep=14"&gt;one&lt;/a&gt; of their episodes, Nathan Calvank and his co-host Gyanesh Mishra discussed the main difference between Vue and React. In the middle of the podcast show, Nathan shared his technique of code adjustment in React:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;JSX combines logic and presentation. You have got your HTML alongside your JavaScript in the same component. The way it is separated now: you have all your logic at the top, and you just return all your JSX below that.&lt;/p&gt;

&lt;p&gt;If you have a sufficiently complex application, you can pull out all of that logic to a container. The container holds all that logic and loads components, including this logic".&lt;/p&gt;

&lt;p&gt;You will get the benefit of JSX, getting the separation of concerns from the development side.&lt;/p&gt;

&lt;p&gt;So, dealing with the potential frustration of those things combined, this is a reasonable way of keeping these things separated.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Vue.js follows HTML templates for the component design
&lt;/h3&gt;

&lt;p&gt;The same as React, Vue.js proposes keeping the UI and logic in the same file. The component code in Vue.js is contained within a specific HTML template.&lt;/p&gt;

&lt;p&gt;The templating brings a clear image of the component code. It helps programmers keep an eye on the methods, view the properties and observe the render functions.&lt;/p&gt;

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

&lt;p&gt;Vue.js has a specific syntax. It uses double braces  as place-holders for data. HTML attributes are the directives in Vue.js and contain the prefix v-.&lt;/p&gt;

&lt;p&gt;The framework's system involves objects, classes and behavior categories. It matches with the experience of programmers who had worked with object-oriented programming.&lt;/p&gt;

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

&lt;p&gt;In the meanwhile, Vue.js enables writing with JSX, which extends the programmatic power of the framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary of the requirements:
&lt;/h3&gt;

&lt;p&gt;React requires solid JavaScript skills, while Vue.js is more oriented to novice developers. Similar to React, Vue.js enables writing with JSX, but the components are written with HTML templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do components impact browser DOM?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  React renders data through the virtual copy of browser DOM
&lt;/h3&gt;

&lt;p&gt;When a user opens the web page, the Internet browser parses it to a tree-like structure and reads it up to down. This tree-structured file is called the Document Object Model (DOM).&lt;/p&gt;

&lt;p&gt;If the user did some action on the page, the browser needs to recreate and re-read the DOM. It takes more loads and decreases the resources of the browser.&lt;/p&gt;

&lt;p&gt;React avoided the traditional DOM rendering and leveraged the capacity of data rendering in the browser.&lt;/p&gt;

&lt;p&gt;Pete Hunt, a core member of React team, described the idea for the InfoWorld magazine:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The browser itself is retain mode. You click an HTML element on the screen, and then you change it over time. The programming model we wanted for React was basically to throw out and redraw everything. We think that's easier to understand. However, the browser is not designed to work like that. What we did is we built something that we're calling the virtual DOM to abstract that. And so we have a way of basically rendering to a virtual DOM, throwing out the whole virtual DOM and re-creating it every time the data changes, and then React under the hood will convert that, will get the old virtual DOM with the new virtual DOM and then convert that to manipulations of the real browser DOM.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thank you, Pete. Based on your explanation, we could figure out how does the Virtual DOM operates:&lt;/p&gt;

&lt;p&gt;Before the web page is loaded in the web browser, React makes a copy of the DOM and places all the objects in a new component.&lt;br&gt;
When a user opens the web page, React doesn't access a real DOM but renders the copy of DOM. It is called the Virtual DOM.&lt;br&gt;
While the user walks through the page, React is computing the changes. If the user clicked a button or performed any other action, React creates a new snapshot of the DOM and compares it with the previous version.&lt;br&gt;
If one more node element has changed, React updates the page rendering the real DOM.&lt;br&gt;
Amazingly, that React team kept in mind an idea of the game engine when developed the virtual DOM:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The difference with React is the way that your program is much more like a game engine, as opposed to these alternative approaches, with data-binding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Further, he explains: "With a game engine effectively what happens is the screen is cleared at the beginning of every frame, and then you redraw the scene.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Vue.js is tracking only the dynamic parts in virtual DOM
&lt;/h3&gt;

&lt;p&gt;Vue.js has followed the idea of React's virtual DOM, but it is processing differently.&lt;/p&gt;

&lt;p&gt;Evan You, a founder of Vue.js, made a critical review of React virtual DOM. He shared his insights during the presentation in Toronto:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Some of you might know that virtual DOM allows us to compare two snapshots of your view structure and figure out what actual changes you should apply to the DOM. In most cases, it is relatively cheap and fast. However, there is still a cost because you are recreating lots of JavaScript objects. You have to walk through the whole tree on each update to figure out what has actually changed. And it counts pounds as your application gets larger. But the worst part about the virtual DOM is no matter how little dynamic content you have in your template, you always have to walk through the whole tree to find out what has exactly changed.&lt;/p&gt;

&lt;p&gt;Vue.js is now tracking the dependencies within each object of the DOM tree.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;The virtual DOM in Vue 3.0.11 is tracking the dynamic elements only, which contain &lt;/p&gt;
&lt;p&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary on comparison of the virtual DOM processing:
&lt;/h3&gt;

&lt;p&gt;Templating in Vue.js helps to represent a mini-DOM of a component. Instead of tracking each object, Vue.js goes over the dynamic parts in templates. So, it sufficiently optimized the operation of virtual DOM and leveraged the client-side rendering in Vue.js projects.&lt;/p&gt;

&lt;p&gt;Virtual DOM in React needs to track all the nodes in the tree, whether they are static or dynamic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data binding of the components
&lt;/h2&gt;

&lt;p&gt;While looking through the articles comparing React vs. Vue.js, you could find different views regarding the data binding. You could often read that React follows just a one-way data flow. Meanwhile, Vue.js provides just the two-way binding like Angular. That is not true.&lt;/p&gt;

&lt;p&gt;Both React and Vue.js support the one- and two-way data flow simultaneously. Moreover, they suggest the one-way data flow as most preferred.&lt;/p&gt;

&lt;p&gt;Let's get a look at the piece of &lt;a href="https://v3.vuejs.org/guide/component-props.html#one-way-data-flow"&gt;documentation on Vue 3.0.11&lt;/a&gt; that emphasizes the benefits of one-way data-binding:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;All props form a one-way-down binding between the child property and the parent one: when the parent property updates, it will flow down to the child, but not the other way around. This prevents child components from accidentally mutating the parent state, which can make your app's data flow harder to understand.&lt;/p&gt;

&lt;p&gt;In addition, every time the parent component is updated, all props in the child component will be refreshed with the latest value. This means you should not attempt to mutate a prop inside a child component. If you do, Vue will warn you in the console.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Even though React components are designed for one-way flow, they could work with the two-way direction.&lt;/p&gt;

&lt;p&gt;React supports callback functions so that the children components could fetch the props to their parents. For example, if a user is typing the text in the input field of the child component, these changes will reflect the parent and update its content.&lt;/p&gt;

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

&lt;p&gt;With that said, the React community is provided with react-hook libraries, which enable two-way data binding.&lt;/p&gt;

&lt;p&gt;We leverage the full potential of React.js to build highly competitive and scalable web and mobile solutions&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary:
&lt;/h3&gt;

&lt;p&gt;Vue.js and React support one-way as well as two-way data binding for components. In general, one-way data flow helps establish better control of the project functionality. Both frameworks recommend it as the best option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Brief industry comparison of React and Vue.js
&lt;/h2&gt;

&lt;h3&gt;
  
  
  React
&lt;/h3&gt;

&lt;p&gt;React.js is flexible and open to a variety of choices. It doesn't imply any opinionated direction or mentality for development. However, this approach has some cost because the developers need to have a strong knowledge of JavaScript and be experienced with Single page applications (SPA) design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros of React:
&lt;/h3&gt;

&lt;p&gt;Fast client-side rendering.&lt;br&gt;
Good control of the data flow.&lt;br&gt;
Light-weight architecture.&lt;br&gt;
Extensibility and scalability.&lt;br&gt;
Large community support.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cons of React:
&lt;/h3&gt;

&lt;p&gt;Steep learning curve.&lt;br&gt;
Does not operate without other libraries and services, like Redux, routing, etc.&lt;br&gt;
Structure-free code may get to spaghetti and boilerplate.&lt;/p&gt;

&lt;h3&gt;
  
  
  What companies should choose React:
&lt;/h3&gt;

&lt;p&gt;Early-stage startups that need fast feature development and validation campaigns on the market.&lt;br&gt;
Companies that are looking to outsource their development. It is much easier to find a React developer compared to the one with Vue.js expertise.&lt;br&gt;
Product-based companies will also require cross-platforming app development (React Native based on React technology, that it will be a good fit).&lt;/p&gt;

&lt;h3&gt;
  
  
  Vue.js
&lt;/h3&gt;

&lt;p&gt;Vue.js combined the top-level features of React and Angular, but its main feature is the perfect user experience. Also, it leveraged the capacity of the virtual DOM and optimized the code structure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros of Vue.js:
&lt;/h3&gt;

&lt;p&gt;Developer-friendly framework.&lt;br&gt;
Outstanding performance.&lt;br&gt;
Well-structured code.&lt;br&gt;
Elegant language syntax.&lt;br&gt;
Fine user documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cons of Vue.js:
&lt;/h3&gt;

&lt;p&gt;Lack of experienced developers.&lt;br&gt;
Small community.&lt;br&gt;
A big part of the documentation is written solely in Chinese.&lt;/p&gt;

&lt;h3&gt;
  
  
  What companies should choose Vue.js:
&lt;/h3&gt;

&lt;p&gt;Companies that approach the market of web-based products.&lt;br&gt;
Companies that are looking to implement a single flow in their development process.&lt;br&gt;
Companies with no previous experience of using frameworks in their build process or those looking to leverage their proficiency with JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  Top 10 companies that built their projects with React:
&lt;/h3&gt;

&lt;p&gt;Atlassian (Jira, Trello)&lt;br&gt;
Codecademy&lt;br&gt;
Dropbox&lt;br&gt;
Netflix&lt;br&gt;
Airbnb&lt;br&gt;
Facebook&lt;br&gt;
Instagram&lt;br&gt;
Twitter&lt;br&gt;
Reddit&lt;br&gt;
WhatsApp&lt;/p&gt;

&lt;h3&gt;
  
  
  Top 10 companies that constructed their projects with Vue.js:
&lt;/h3&gt;

&lt;p&gt;Behance&lt;br&gt;
Dribbble&lt;br&gt;
Adobe&lt;br&gt;
GitLab&lt;br&gt;
Alibaba&lt;br&gt;
Grammarly&lt;br&gt;
Nintendo&lt;br&gt;
Zoom&lt;br&gt;
Louis Vuitton&lt;br&gt;
Google Careers&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful resources
&lt;/h2&gt;

&lt;p&gt;You may find these materials helpful&lt;/p&gt;

&lt;h3&gt;
  
  
  Articles and tutorials
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.infoworld.com/article/2608181/react--making-faster--smoother-uis-for-data-driven-web-apps.html"&gt;React: Making faster, smoother UIs for data-driven Web apps&lt;/a&gt;, by Paul Krill, InfoWorld.&lt;br&gt;
&lt;a href="https://www.doria.fi/bitstream/handle/10024/177433/levlin_mattias.pdf?sequence=2&amp;amp;isAllowed=y"&gt;DOM benchmark comparison of the front-end JavaScript frameworks React, Angular, Vue, and Svelte, master’s thesis in computer science&lt;/a&gt; by Mattias Levin.&lt;br&gt;
&lt;a href="https://www.w3schools.com/whatis/whatis_react.asp"&gt;What is Vue.js?, What is React? | Tutorials at W3schools&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Podcast shows
&lt;/h3&gt;

&lt;p&gt;&lt;a href=""&gt;React vs Vue vs Angular, 03.29.2021 | Do Better Dev Show podcast&lt;/a&gt;&lt;br&gt;
&lt;a href="https://podcasts.google.com/feed/aHR0cHM6Ly9waW5lY2FzdC5jb20vZmVlZC9sYWR5YnVnLXBvZGNhc3Q/episode/aHR0cHM6Ly9waW5lY2FzdC5jb20vZ3VpZC9jNWYxNDUxZC1mNTg3LTQ0OTgtYWE0ZS1lZGU2OTYxMjk0OTI?ep=14"&gt;React, Vue, &amp;amp;&amp;amp; Angular, OH MY!, 10.14.2019 | Ladybug Podcast&lt;/a&gt;&lt;br&gt;
&lt;a href="https://podcasts.google.com/feed/aHR0cHM6Ly9hbmNob3IuZm0vcy8xM2NkYzc0OC9wb2RjYXN0L3Jzcw/episode/MTAwZjRmMDYtZDBlMC00YmYxLThkM2QtNzViZjczZjZmNzQ0?ep=14"&gt;A Conversation about ReactJS, 05.26.2020 | Headless {Creator Podcast}&lt;/a&gt;&lt;br&gt;
&lt;a href="https://podcasts.google.com/feed/aHR0cHM6Ly9yc3MuY3RvLmFpL2lmZWxzZQ/episode/OTcyNzBhMzMtMWI4Yi00MjMyLWI5YWQtODY5MTAzNzBhOTEy?ep=14"&gt;React vs. Vue: With Guests Cassidy Williams &amp;amp; Erik Hanchett, 10.21.2019 | If/Else&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Videos on YouTube:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://youtu.be/WLpLYhnGqPA"&gt;Design Principles of Vue 3.0&lt;/a&gt; by Evan You.&lt;br&gt;
&lt;a href="https://youtu.be/1oK8AvSlXyM"&gt;Differences between Vue and React&lt;/a&gt; (an interview with Sara Vieira).&lt;br&gt;
&lt;a href="https://youtu.be/DUP5TJtBL3I"&gt;Tech Talk: 1 vs 2 way Data Binding in React and Angular&lt;/a&gt; (Matthew Elmquist for Fullstack Academy).&lt;/p&gt;

</description>
      <category>vue</category>
      <category>react</category>
      <category>frontend</category>
    </item>
    <item>
      <title>How To Hire React Native Developer - A Guide For The Founder</title>
      <dc:creator>Oleg Goncharenko</dc:creator>
      <pubDate>Wed, 23 Jun 2021 09:12:02 +0000</pubDate>
      <link>https://forem.com/brocoders/how-to-hire-react-native-developer-a-guide-for-the-founder-2419</link>
      <guid>https://forem.com/brocoders/how-to-hire-react-native-developer-a-guide-for-the-founder-2419</guid>
      <description>&lt;p&gt;The hiring process of &lt;strong&gt;React Native developers&lt;/strong&gt; involves different parts, each of them requiring essential time and effort. To make the process less stressful, we suggest you follow these five steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Prepare the specifications.&lt;/li&gt;
&lt;li&gt;Outline the job requirements.&lt;/li&gt;
&lt;li&gt;Create a shortlist of candidates.&lt;/li&gt;
&lt;li&gt;Arrange the job interviews.&lt;/li&gt;
&lt;li&gt;Qualify the candidates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this post, we will uncover the first three parts of the hiring process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to create the specification for a React Native project.&lt;/li&gt;
&lt;li&gt;How to complete the job overview.&lt;/li&gt;
&lt;li&gt;How to shortlist the candidates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By the end of the reading, you will get prepared to reach out to potential candidates. In the second part of the article, we will observe the job interview process and qualifying the candidates.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create the specification for a React Native project
&lt;/h2&gt;

&lt;p&gt;Finding the best candidate requires good preparation. Your first goal will be to outline the project requirements.&lt;/p&gt;

&lt;p&gt;Be as specific as you can. Detailed documentation draws the attention of professional developers and encourages them to apply.&lt;/p&gt;

&lt;p&gt;What is needed to complete the project specifications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain the user flows.&lt;/li&gt;
&lt;li&gt;Create graphic layouts.&lt;/li&gt;
&lt;li&gt;Outline technical requirements.&lt;/li&gt;
&lt;li&gt;Explain the user flows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;User flows help to convey the core idea of the app. Based on that, the potential developer will evaluate the scope and define the biggest challenges in upcoming work.&lt;/p&gt;

&lt;p&gt;After finishing this part, you will get the confidence to explain your product specifics to potential contractors. Except for that, you will check if your product app is ready for the market. These questions will help you to revise your current progress:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is your application flow simple and easy to use?&lt;/li&gt;
&lt;li&gt;Does your app help users achieve their primary goals?&lt;/li&gt;
&lt;li&gt;What are the most priority features in your app?&lt;/li&gt;
&lt;li&gt;How do you encourage users to purchase the extra services?&lt;/li&gt;
&lt;li&gt;What advantages do you offer to your users?&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Writing the user flows is a crucial part of the product build. Here is the list of suggested questions that will help you develop the user flow overview:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What are user types (customers, suppliers, supervisors) presented in my application?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What abilities does each user category have?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What information will users request after their registration?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do I need users to confirm their registration via email or SMS?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How could users view the other user profile?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can users communicate with other users?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What kind of third-party applications would I like to integrate with my app?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How will the users complete the purchase process in my app?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How do I want to track the information about new and returned users?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do I want to view the billing information (invoices, payments)?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What types of notifications do I want to display to users?&lt;br&gt;
sample-of-user-flows&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YIdWE6n_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gj7ly6zq1nr56mqsy760.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YIdWE6n_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gj7ly6zq1nr56mqsy760.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of the user flows overview&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Create graphic layouts
&lt;/h3&gt;

&lt;p&gt;Now that you have the end-to-end descriptions of the user flows, your next turn will be to translate them to the graphic UI design.&lt;/p&gt;

&lt;p&gt;Benefits of the graphic UI design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It helps reflect the graphic animations and business logic.&lt;/li&gt;
&lt;li&gt;It makes it possible to find out the challenges and risks.&lt;/li&gt;
&lt;li&gt;It enables making a realistic timeline and cost evaluation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most popular tools for the graphic UI design:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Figma;&lt;/li&gt;
&lt;li&gt;Sketch;&lt;/li&gt;
&lt;li&gt;Adobe XD.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In general, mobile applications contain a different number of screens. There could be 20+ screens if it comes to developing a small social media app or 200+ screens if we talk about business-class mobile applications.&lt;/p&gt;

&lt;p&gt;So, depending on your case and engagement, you could choose your way: master any of the UI design tools, create the screens by yourself or outsource this work to the UI/UX designer.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Outline technical requirements
&lt;/h3&gt;

&lt;p&gt;React Native developers are creating the mobile UI. Their responsibility is to wire it up with the back-end. To handle this integration, developers need to obtain the documentation on the API first. &lt;/p&gt;

&lt;p&gt;It should involve the following parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resource descriptions.&lt;/li&gt;
&lt;li&gt;Endpoints and methods.&lt;/li&gt;
&lt;li&gt;Parameters.&lt;/li&gt;
&lt;li&gt;Request samples.&lt;/li&gt;
&lt;li&gt;Response examples.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are a non-technical specialist, you could ask for the help of a consultant specializing in developing the API specification.&lt;/p&gt;

&lt;p&gt;There are a few ways to find an eligible consultant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask a question on Quora or Stack Overflow.&lt;/li&gt;
&lt;li&gt;Invite an expert via Upwork or Toptal.&lt;/li&gt;
&lt;li&gt;Book a call with a consultant at Clarity.fm.&lt;/li&gt;
&lt;li&gt;Find a consultancy through Clutch, Upwork, YouTeam and book a call with them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consultants usually possess any of these positions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business analysts at a software development agency (most of the agencies produce the end-to-end documentation for the new projects).&lt;/li&gt;
&lt;li&gt;Software engineers with the back-end background (there could be either the back-end or full-stack engineers).&lt;/li&gt;
&lt;li&gt;Technical writers who specialize in back-end documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The specification on the back-end will help your team keep organized and deliver the project without unexpected distractions.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to complete the job overview
&lt;/h2&gt;

&lt;p&gt;We have reached the middle point of our road. From now, every new step will be easier to take.&lt;/p&gt;

&lt;p&gt;Your current task is to create the job overview. Generally, it includes the technical requirements along with preferences regarding the skills of the candidate.&lt;/p&gt;

&lt;p&gt;You could use the following template of the job overview for React Native developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Job requirements template
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project overview&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tell about your company and the core idea of the project.&lt;/li&gt;
&lt;li&gt;Provide a brief summary of the user roles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Main technical requirements&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mention the technological stack of your project.&lt;/li&gt;
&lt;li&gt;Preferences on UI design (graphic rendering, specific features).&lt;/li&gt;
&lt;li&gt;Third-party integrations, like map and geo-location services, mail and SMS integrations, payment gateways.&lt;/li&gt;
&lt;li&gt;Location.&lt;/li&gt;
&lt;li&gt;Language.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;Project duration.&lt;/li&gt;
&lt;li&gt;Work engagement (full-time or part-time).&lt;/li&gt;
&lt;li&gt;Time zone preference.&lt;/li&gt;
&lt;li&gt;Working environment (management system and approaches).
*Budget expectations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Skills requirements&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Development experience.&lt;/li&gt;
&lt;li&gt;Special technical skills.&lt;/li&gt;
&lt;li&gt;Projects on GitHub.&lt;/li&gt;
&lt;li&gt;Portfolio works.&lt;/li&gt;
&lt;li&gt;Education.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;References to the materials&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User flows overview.&lt;/li&gt;
&lt;li&gt;Graphic UI design.&lt;/li&gt;
&lt;li&gt;Back-end specification.&lt;/li&gt;
&lt;li&gt;Sample of the job overview&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Job post example
&lt;/h3&gt;

&lt;p&gt;Let's bring more practice to our process. At present, many companies are moving forward with creating ride-sharing services. Imagine for a moment that you represent the management of the transportation company.&lt;/p&gt;

&lt;p&gt;Our current task is to hire a React Native developer who will accomplish the front-end for the upcoming mobile service app. The first step will be to write down the announcement for a job post.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project overview&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;The logistics company Rideshare Services Int. is looking to extend its customer service and hopes to create a cross-platforming mobile application. The app is aimed to help car drivers to make an additional income to minimize their transportation expenses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User roles&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;There are three main user categories within the app: driver, passenger, admin.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Drivers indicate their daily route on the map and set a schedule. Based on that, the mobile app should find the passenger looking to request the ride at a specified time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Passengers can offer an individual price for the desired service. Drivers could take on the opportunity if they agree on the proposed cost.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The admin user should be able to view the general statistics and moderate users.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Technological stack&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;The mobile UI code needs to be created with React Native. The app developer is free of choice regarding the state management service - Redux or Mobx will work fine.&lt;/p&gt;

&lt;p&gt;The specification is ready and could be shared with the eligible candidate. The back-end is built with Node.js (Nest.js). The database is based on Postgresql. Preferred cloud service: Amazon Web Services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preferences on UI design&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;The screen designs are already completed with Figma. There are 90 screens ready for implementation. The requirements for the graphic animation are minimal since the project is at the early MVP stage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skills requirements&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;previous experience of utilizing React-hook-forms in the project is much preferred;&lt;/li&gt;
&lt;li&gt;experience of work with Swift and Android Studio (to be able to work with native modules on iOS and Android platforms);&lt;/li&gt;
&lt;li&gt;knowledge of TypeScript is must have;&lt;/li&gt;
&lt;li&gt;experience of work with Google Map API;&lt;/li&gt;
&lt;li&gt;experience with Twilio and Stripe will be a big advantage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Location and language&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Our project will be based only in the UK for the initial stage, so that we would require only one language there. In the future, we are hoping to extend it with Norwegian and Dutch versions.&lt;/p&gt;

&lt;p&gt;We are working in the UK time zone, but we are flexible as for your time preferences. We hope to have 3-4 hours overlap within our time zones, preferably in the morning hours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Duration of the project&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Based on our preliminary estimation, the project would take 3,5 - 4 months to finish. Since the deadline is tight, you need to work full-time (40 hours per week).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working environment&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;We use GitHub for the code repository.&lt;br&gt;
All communications are run through Slack and Zoom.&lt;br&gt;
We manage the tasks with Jira.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Budget expectations&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Our budget capacity varies within USD 30-35K (based on our assumptions regarding the timeline).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Required skills&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;Master's or bachelor's degree in computer sciences.&lt;br&gt;
3+ years of experience with React Native, both iOS and Android.&lt;br&gt;
You have a good understanding of Agile and Scrum principles.&lt;br&gt;
Project materials:&lt;/p&gt;

&lt;p&gt;Besides the graphic UI layouts and specifications on the back-end, we are willing to share the user flows overview. We will send you the documentation after reviewing your application form.&lt;/p&gt;

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

&lt;p&gt;Please, send us your resume once you are interested in taking this job position. In your answer, describe your skills regarding the project requirements.&lt;br&gt;
Share the links to the mobile apps you have done before and specify your team's role while working on the project.&lt;/p&gt;

&lt;p&gt;Now we are ready to publish the job overview. You will receive a significant number of replies after placing the job announcement on those social platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hub Staff Talent;&lt;/li&gt;
&lt;li&gt;Topdevelopers.co;&lt;/li&gt;
&lt;li&gt;LinkedIn;&lt;/li&gt;
&lt;li&gt;Youteam;&lt;/li&gt;
&lt;li&gt;Upwork;&lt;/li&gt;
&lt;li&gt;Toptal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Except for the mentioned, there are some global social websites, which provide job search opportunities to their community. &lt;br&gt;
So, you could also use their service to hire the React Native developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stack Overflow;&lt;/li&gt;
&lt;li&gt;AngelList;&lt;/li&gt;
&lt;li&gt;GitHub;&lt;/li&gt;
&lt;li&gt;Dev.to&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each platform will make a difference in your outreach process. For example, Upwork ensures you will get over 100 proposals on the first day. To prove our expectations, we simulated the hiring process on that platform.&lt;/p&gt;

&lt;p&gt;We published the same job overview and requirements as we mentioned in our sample. Now you could check the outcomes of this experiment. The activity was so high that we obtained over 40 proposals in the first two hours.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;Break down your job requirements so that the applicants will grasp your project idea and respond fast&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So, it makes sense to iterate your publications and post your requirements on the web resources one by one.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to shortlist the candidates&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will get dozens of applications straight after publishing your post. Now you need to pre-qualify the candidates based on the following criteria:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the applicant specify the works related to your industry area?&lt;/li&gt;
&lt;li&gt;Did the applicant describe their skills and experience based on your mentioned requirements?&lt;/li&gt;
&lt;li&gt;Could the applicant work full-time on your project?&lt;/li&gt;
&lt;li&gt;Did the candidate describe their role in the previous projects?&lt;/li&gt;
&lt;li&gt;Did the applicant provide the link to their profile at GitHub?&lt;/li&gt;
&lt;li&gt;Do they have some recommendations from past clients or employers?&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Create a list of the first 20 candidates matching your expectations. Respond to them via email or the job search platform, appreciating their time and interest. Propose them to book a meeting with you, sending them a link over Calendly or any other booking service that you normally use. Along with that, share your specifications with the candidates, so they could prepare for a job interview.&lt;/p&gt;

&lt;p&gt;In our next post, we will provide you with further details on the hiring process of the React Native engineer. The essential part of it will be devoted to the questions you could ask your candidate during the job interview.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and good luck with your preparation!&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>hiring</category>
    </item>
    <item>
      <title>React vs Angular, who wins the competition?</title>
      <dc:creator>Oleg Goncharenko</dc:creator>
      <pubDate>Mon, 22 Mar 2021 15:47:31 +0000</pubDate>
      <link>https://forem.com/brocoders/react-vs-angular-who-wins-the-competition-30o2</link>
      <guid>https://forem.com/brocoders/react-vs-angular-who-wins-the-competition-30o2</guid>
      <description>&lt;p&gt;Choosing the best option for front-end development&lt;/p&gt;

&lt;p&gt;React.js vs Angular. They are equally good at building web-based applications. Some of the world projects are built with React.js, others of the same size, with Angular.&lt;/p&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%2Fdeqpnufjg49yo4djtebd.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%2Fdeqpnufjg49yo4djtebd.png" alt="Companies that use React.js and Angular"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These examples emphasizing both React.js and Angular are suited for making large and scalable platforms, handling massive requests per moment.&lt;/p&gt;

&lt;p&gt;React.js gets on the top position and overruns Angular with the number of Node Package Manager (NMP) downloads on GitHub. The difference is huge.&lt;/p&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%2F9sdo1rkq6p90lol2nitt.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%2F9sdo1rkq6p90lol2nitt.png" alt="React.js is more popular than Angular"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Last year's survey among Stackoverflow's users demonstrates that React.js is 10% more popular than Angular.&lt;/p&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%2Ftcrctmix13fcjcobvc1y.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%2Ftcrctmix13fcjcobvc1y.png" alt="Technology survey on Stackoverflow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Does it mean that something goes wrong with Angular? Or, does it imply React.js offered better solutions than Angular?&lt;/p&gt;

&lt;h3&gt;
  
  
  Main principles of Angular
&lt;/h3&gt;

&lt;p&gt;Let's figure it out by overviewing both systems in a nutshell. Angular originates from the startup products of Google, where the key of product development was to manage multiple processes in one place. Any unreasonable decision could lead to a problem and affect billions of user operations run in a moment.&lt;/p&gt;

&lt;p&gt;Angular became a monolithic framework that predefined programming steps. Even though it enriches the development process with the services, controllers and modules, it dictates its own way of thinking and working. That places a distance between programmer and framework.&lt;/p&gt;

&lt;p&gt;Along with that, there are a few other factors that make Angular less accessible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Angular uses object-oriented programming (OOP), so its knowledge is hard-skill.&lt;/li&gt;
&lt;li&gt;Developers should have a good command of TypeScript.&lt;/li&gt;
&lt;li&gt;Knowledge of RxJS is a must-have too.&lt;/li&gt;
&lt;li&gt;Apparently, the learning curve is very high. Unlike React.js, Angular demands more OOP-related experience from developers. That worked for Google, considering their team's high expertise. Angular was envisioned as an end-to-end solution and was compatible with their advanced programming culture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Despite the complexity of the architecture, Angular has its indisputable benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Two-way data binding&lt;/strong&gt; automates synchronization between the Model and the View. Say, if the data was changed in the Model, it would be changed automatically in the View (DOM). Such a function takes off the need to write more additional code. Just imagine Google Drive's document, as a user types text in the document, it is viewed by another one in real-time. Such function is possible due to the Two-way data binding.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency injection (DI)&lt;/strong&gt;, makes it possible to deliver the dependency from one to another class. Due to DI, server-side services could be delegated to a client-side. So, it is a serious advantage of OOP usage in Angular.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Directives&lt;/strong&gt; aimed to enrich the HTML by providing a new syntax to it. The most common directive is the component. Using it, programmers could create any attribute for an existing element and change its behavior. This is a helpful feature, which makes working with the DOM very flexible.
Angular is enriched with many other valuable features, like UI Material, making it possible to reuse the code of components in other parts of the project, but this is similar to what React offers too.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who chooses Angular today?
&lt;/h3&gt;

&lt;p&gt;Experienced front-end developers share that Angular fits well with enterprise solutions and the corporate sector when React.js is a better choice for early-stage startups and smaller companies. This could be explained that big business does not change their priorities very often and the strategic goals are known to their CTOs far earlier.&lt;/p&gt;

&lt;p&gt;The main point you could take from our overview is to remember that &lt;strong&gt;Angular is a better option for long-term projects requiring reliability above anything else&lt;/strong&gt;. Besides others mentioned in the list, a few more companies are using Angular: Microsoft Office, Deutsche Bank and Samsung.&lt;/p&gt;

&lt;p&gt;React.js even doesn't call itself a framework but a JS library. Unlike Angular, React.js makes it a developer's responsibility to set a project structure, find relevant services for HTTP routing, and so on. At this point, React's ideology is to be agile and provide developers with absolute freedom. As a result, it leads to minimizing the project's size from start, as they could involve those libraries that they need by a certain time.&lt;/p&gt;

&lt;p&gt;Let's imagine that you are the only front-end developer on the project, or there are just a few. The main goals are set for the shortest perspective here. You should be both fast and productive, be able to adjust to startup goals. The straight rules and architecture demands of Angular will slow down the process of development.&lt;/p&gt;

&lt;p&gt;So, following single policies is not a major priority for the React.js community. In fact, this is straight opposite to Angular.&lt;/p&gt;

&lt;p&gt;It is worth mentioning, React.js couldn't work alone, as it is only the View (V) and needs an engine for data processing. A developer needs to figure out its implementation, manage with Redux and Saga, and arrange that individually.&lt;/p&gt;

&lt;h3&gt;
  
  
  What makes React.js different?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The learning curve is low. A developer with HTML and JavaScript experience could take on web development and show their first outcomes soon.&lt;/li&gt;
&lt;li&gt;The architecture is simple and doesn't take much time to study all its structure.&lt;/li&gt;
&lt;li&gt;Virtual DOM made server-side rendering less time-consuming.&lt;/li&gt;
&lt;li&gt;Huge community support that regularly contributes to React.js collection.&lt;/li&gt;
&lt;li&gt;Intuitive environment, pleasant interface to work with.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What problem does virtual DOM solve?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The current situation is next: if anything has been changed in a user browser while clicking on a page, these changes will be automatically recorded to the DOM. To show the changes on the web-page, the browser should reload the entire DOM structure. It brings more loads to the browser and slows down the performance of the application.&lt;/p&gt;

&lt;h3&gt;
  
  
  React.js innovations in performance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React.js creates a snapshot of the DOM, which is named the virtual DOM (VDOM).&lt;/li&gt;
&lt;li&gt;Every new change in the UI component is to be recorded to the new virtual DOM first, not the regular one.&lt;/li&gt;
&lt;li&gt;React.js compares the new version of the VDOM and determines if those changes were essential to update the browser's DOM.&lt;/li&gt;
&lt;li&gt;If the changes were essential, React.js updates the DOM with the latest portion of changes.&lt;/li&gt;
&lt;li&gt;React.js has such computing algorithms that allow it to decide when to update the DOM in the browser. That makes front-end applications very performative. Unlucky, Angular doesn't have anything similar to this feature.&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%2F248956p6ard19wc0x5q2.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%2F248956p6ard19wc0x5q2.png" alt="Virtual Dom and Browser Dom comparison"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With that said, React.js helps to write clean JavaScript code for the projects when Angular complements the HTML with many extensions. This becomes messy in a while and hard to deal with such an enlarged code.&lt;/p&gt;

&lt;p&gt;It is time to say: React.js dominates in the front-end development area today.&lt;/p&gt;

&lt;p&gt;Advanced features, ease of use, extensive collection of javascript libraries placed React.js in a higher position than Angular. That proves an idea that the user-centered approach is a king. React.js has become an intuitive and powerful resource for making front-end applications.&lt;/p&gt;

&lt;p&gt;The discussions like 'Angular vs. React' are obviously coming to an end because of the React.js win. Nowadays, the community is much interested in other frameworks like Vue.js and comparison of that kind will be more actual today.&lt;/p&gt;

</description>
      <category>react</category>
      <category>angular</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Progressive Web Apps vs Native Apps: Which One Is the Best for Your Business</title>
      <dc:creator>Oleg Goncharenko</dc:creator>
      <pubDate>Tue, 23 Feb 2021 15:45:34 +0000</pubDate>
      <link>https://forem.com/brocoders/progressive-web-apps-vs-native-apps-which-one-is-the-best-for-your-business-389p</link>
      <guid>https://forem.com/brocoders/progressive-web-apps-vs-native-apps-which-one-is-the-best-for-your-business-389p</guid>
      <description>&lt;p&gt;Previously, we shared our thoughts on Progressive Web Apps driven by our hands-on expertise in PWA development. This time around, we decided to dive deeper and explain the major difference between PWA and Native App.&lt;/p&gt;

&lt;p&gt;However, it should be noted that there is no winner here since the choice depends on your particular needs and business requirements in the first place.&lt;/p&gt;

&lt;p&gt;For instance, people open web pages and consume twice as much content on their smartphones as they do on desktop devices, according to &lt;a href="https://www.smartinsights.com/mobile-marketing/mobile-marketing-analytics/mobile-marketing-statistics/"&gt;SmartInsights&lt;/a&gt;. And the number of users who opt for mobile devices will only keep skyrocketing. So it’s no wonder why most efficiently-run companies use both PWAs and Native Apps in order to stay ahead of the mobile domain curve.&lt;/p&gt;

&lt;p&gt;Now, before we can share our insights on which solution can best serve your users or fit your business goals, let’s start by refreshing our memory of what Progressive Web App is.&lt;/p&gt;

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

&lt;p&gt;Simply put, Progressive Web Apps are web-related solutions that combine features of a website and a Native App. In other words, these are websites that mimic a Native App behavior, thus creating an app-like experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here are the major PWA benefits:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It can run on any device or OS&lt;/li&gt;
&lt;li&gt;You don’t need a large budget to develop a PWA&lt;/li&gt;
&lt;li&gt;You can save your money and resources since it is developed only once&lt;/li&gt;
&lt;li&gt;All new features are available automatically once you issued an update&lt;/li&gt;
&lt;li&gt;You can rely on SEO practices since a PWA is a website&lt;/li&gt;
&lt;li&gt;It feels and looks like a Native App&lt;/li&gt;
&lt;li&gt;It’s memory-friendly and takes only a small portion of the device’s storage&lt;/li&gt;
&lt;li&gt;It can work offline&lt;/li&gt;
&lt;li&gt;It has rock-solid security since it based on HTTPS, which allows browser-to-server encryption&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the other hand, there are a few drawbacks as well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It has limited functionality on some OS&lt;/li&gt;
&lt;li&gt;Fast battery consumption since a PWA requires more CPU&lt;/li&gt;
&lt;li&gt;PWAs may not have full access to as many device’s features as Native Apps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That said, any business can develop a PWA solution to expand its digital footprint and ensure a delightful user experience. However, some companies may consider developing a Native App as of the features that a PWA still can’t provide. But again, it’s only for you to decide which option to adopt for your business goals.&lt;/p&gt;

&lt;p&gt;If you want to learn more about PWAs and our case studies, please read &lt;a href="https://brocoders.com/blog/why-progressive-web-application-might-be-right-option-for-you/"&gt;the previous article&lt;/a&gt;. Now, let’s get to Native Apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Native Apps: pros and cons
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8wjLSVXW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/04ux96kzcupzmxoghemh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8wjLSVXW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/04ux96kzcupzmxoghemh.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Benefits of IOS and Android App Development&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Native Apps are written to run on mobile devices, providing enhanced performance and a broader scope of features compared to PWAs. These apps types are developed for specific OS platforms (usually built separately for Android or iOS) or even for particular smartphones. In fact, almost any app you download from Google’s Play Market or Apple’s App Store is a native solution by its very nature.&lt;/p&gt;

&lt;p&gt;Generally, there are four most widely-accepted programming languages that developers use to create Native Apps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Swift or Objective-C for iOS&lt;/li&gt;
&lt;li&gt;Java or Kotlin for Android&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, there is an alternative — you can utilize cross-platform frameworks like React Native. We at Brocoders have been using this &lt;a href="https://brocoders.com/services/product-development/"&gt;product development approach&lt;/a&gt; for over 9 years now. It allows building hybrid apps in JavaScript-like code and submitting the final solutions to both Android and iOS platforms in one go. React Native apps demonstrate outstanding efficiency and feel almost like native ones.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lqcsRqjt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/747da0jfq12doyv3tenw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lqcsRqjt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/747da0jfq12doyv3tenw.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Benefits of Coding Apps with React Native&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now let’s move on to the key Native Apps pros over PWAs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enhanced performance and UI/UX
&lt;/h3&gt;

&lt;p&gt;Since code is written for a specific device or a particular OS, a Native App integrates seamlessly with its ecosystem and gets access to all APIs. It’s faster and provides greater capabilities in terms of UI/UX experience. Besides, Native Apps can smoothly interact with other native apps offered by Google or Apple.&lt;/p&gt;

&lt;h3&gt;
  
  
  Monetization privilege
&lt;/h3&gt;

&lt;p&gt;Unlike a PWA that requires a custom payment processing solution, Native Apps can be monetized using in-built App Stores’ payment systems. Users can then make purchases and buy subscriptions with ease.&lt;/p&gt;

&lt;h3&gt;
  
  
  App Store Support
&lt;/h3&gt;

&lt;p&gt;While PWAs are SEO-friendly, Native Apps got App Store Optimization (ASO) and Apple Search Ads (ASA) alternatives instead. These are cost-efficient approaches (keyword research, eye-catching titles, meta descriptions and so on) that allow you to acquire new users by increasing your rank in App Store’s search results. Besides, users can rate your app, which by itself is an additional traffic source (if your rating is positive).&lt;/p&gt;

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

&lt;p&gt;PWAs have decent security since they run under HTTPS. However, Native Apps have primary access to all the device’s hardware and software features. That said, it’s much easier for a developer to implement the best security algorithms such as two-factor authentication. Besides, a Native App must meet the requirements of multiple standards set by app stores before it can be approved.&lt;/p&gt;

&lt;p&gt;On the flip side of the coin, Native Apps have a few weak spots.&lt;/p&gt;

&lt;h3&gt;
  
  
  Costly development
&lt;/h3&gt;

&lt;p&gt;You need at least two development teams to build a project from scratch for each platform. Thus, you can ensure that both Android and iOS users will utilize your mobile app. Moreover, the final product requires constant updates and maintenance on two different OS. But again, you can save your budget and significantly reduce development time by &lt;a href="https://beta-app.brocoders-dev.brocoders.xyz/technologies/reactjs-development-services/"&gt;hiring React Native experts&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Need time to launch
&lt;/h3&gt;

&lt;p&gt;As mentioned above, Native Apps should be approved by Google’s Play Market or Apple’s App Store first before users can download them. The process can take up to a week or more. In some cases, apps can be rejected for several reasons, such as plagiarism or copyright infringement. If you have a tight time-to-market deadline, it’ll be way faster to create a PWA instead of time-consuming native platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hard to promote
&lt;/h3&gt;

&lt;p&gt;Native Apps are not indexed or listed in the search engine, so you’ll probably have to reach out to third-party advertising services or buy promotional campaigns on popular websites in order to promote your app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installation routine
&lt;/h3&gt;

&lt;p&gt;Users don’t like it when they are forced to go through the searching, downloading and installation processes. Especially when they just need to make a purchase or take a quick glance at a catalog, for example. That’s why they would rather &lt;a href="https://www.thinkwithgoogle.com/search/#?query=Mobile&amp;amp;page=0,0&amp;amp;sort_field=date&amp;amp;limit=12&amp;amp;locale=en-us&amp;amp;current_source=data_points&amp;amp;advertising_channels=Apps"&gt;use a website or a PWA instead&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Native Apps vs. Progressive Web App Comparison
&lt;/h2&gt;

&lt;p&gt;Now let’s make a comparison table to enable a clearer insight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Native and Progressive Web App Comparison
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;With a bunch of advantages of both Native Apps and PWAs, it’s crucial for you to ponder over every detail and choose the right course based on your business strategy and resources that you have at the moment. As you can see, PWAs and Native Apps are equally vital for any business type and size, whether that be startups, fast-growing companies or enterprises.&lt;/p&gt;

&lt;p&gt;In some cases, you may need a fast and cost-efficient solution, so it’s better to opt for a PWA. On the other hand, a PWA may not provide a required performance level or cover all the device’s features. In such a way, you may want to consider developing a Native App. Otherwise, you can create both to enhance the customer experience and reach a wider audience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VskJTIBd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ac8epl8o3cr0z6o3c61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VskJTIBd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ac8epl8o3cr0z6o3c61.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
When to build PWA/Native App&lt;/p&gt;

&lt;p&gt;With almost 100 successful projects under our belt, our in-house software engineers have substantial experience in creating future-proof PWAs and React Native Apps. We are excited to help you reach your business goals and build new innovative projects together. Please don’t hesitate to &lt;a href="https://brocoders.com/get-in-touch/"&gt;drop us a line&lt;/a&gt; if you want to learn more about the latest PWA vs Native 2020 trends.&lt;/p&gt;

</description>
      <category>progressivewebapp</category>
      <category>pwa</category>
      <category>nativeapp</category>
      <category>mobileapp</category>
    </item>
    <item>
      <title>Low-Code Development: Why It Is Important and Why It Can't Replace Traditional Approach</title>
      <dc:creator>Oleg Goncharenko</dc:creator>
      <pubDate>Tue, 23 Feb 2021 10:53:12 +0000</pubDate>
      <link>https://forem.com/brocoders/low-code-development-why-it-is-important-and-why-it-can-t-replace-traditional-approach-2fbb</link>
      <guid>https://forem.com/brocoders/low-code-development-why-it-is-important-and-why-it-can-t-replace-traditional-approach-2fbb</guid>
      <description>&lt;p&gt;In today's dynamic and fast-paced business ecosystem, a traditional development approach is often time-consuming and requires a lot of investment. Besides, you need highly-skilled and seasoned professionals to carry out the coding.&lt;/p&gt;

&lt;p&gt;On the flip side of the coin, many digital trends have boomed recently as of COVID-19, including the simplified interfaces that can help users quickly build and launch custom apps with minimal hand-coding. These factors, along with the fact that every company strives to streamline and automate its processes, allowed low code and no-code platforms to flourish.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The popularity of low-code application development has gained decent traction these days — according to &lt;a href="https://www.gartner.com/document/3902331"&gt;Gartner&lt;/a&gt;, low-code is forecast to comprise over 65% of application development by 2024.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nevertheless, low code solutions aren't as great as you might think. In this short guide, we want to highlight the key features and pitfalls of this methodology.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Low Code?
&lt;/h2&gt;

&lt;p&gt;As the name implies, low-code is a software development methodology where you can create apps with little coding. That said, low code automation tools are visual-driven Integrated Development Environments (IDEs) designed for rapid application development. This inclusive approach was created in response to ever-augmenting business requirements and the shortage of skilled experts.&lt;/p&gt;

&lt;p&gt;Unlike traditional development that requires highly-skilled experts to handle all the code, low-code methodologies allow users to create apps with less manual coding through a graphical user interface (GUI) and its built-in drag-and-drop tooling. Thanks to the drag&amp;amp;drop technology, you can seamlessly add and move various elements, such as buttons, images, icons, text, maps, video, etc.&lt;/p&gt;

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

&lt;p&gt;At the same time, low-code is different from no-code — while low-code still requires knowledge of technologies and frameworks, no-code enables users to build apps with almost no hand-coding. But let’s keep the no-code approach for later.&lt;/p&gt;

&lt;p&gt;Usually (even based on modern agile techniques), it takes a while before you can end up with a fully-functioning product. On the other hand, low-code allows users to skip a few development cycles and &lt;a href="https://brocoders.com/services/mvp-development/"&gt;get right to an MVP&lt;/a&gt; that can be tested with real users. That said, low-code platforms help businesses to acquire early adopters, validate an idea, and ensure faster development and delivery.&lt;/p&gt;

&lt;p&gt;There are several leading low-code application platforms (LCAP) on the market, like &lt;a href="http://mendix.com/"&gt;Mendix low code software&lt;/a&gt;, &lt;a href="https://www.outsystems.com/"&gt;OutSystems&lt;/a&gt; or &lt;a href="https://www.appian.com/"&gt;Appian&lt;/a&gt;.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Why is Low-Code popular?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;The future of coding is no coding at all.&lt;/p&gt;

&lt;p&gt;Chris Wanstrath, CEO of GitHub&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Citizen developers and non-tech-savvy users can utilize low-code/no-code platforms to build custom-designed products while avoiding some hand-coding tasks. On top of that, seasoned experts and software providers can also use low-code solutions as a supplementary tool in addition to their traditional toolset.&lt;/p&gt;

&lt;p&gt;Low code can enhance the entire workflow and propel your IT teams' productivity by equipping them with the powerful tools for quick and smooth app creation. Now, let's look at the major benefits this development technique can offer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Improved speed
&lt;/h3&gt;

&lt;p&gt;You can create solutions for several platforms in one go and demonstrate investors or stakeholders a fully-functioning MVP within the shortest time possible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources saving
&lt;/h3&gt;

&lt;p&gt;If you are about to start a new big project, you don’t have to wait for your experts to finish their projects. With low-code, you can save your time and the company’s resources by getting things done more quickly and at a lower cost compared to a traditional approach.&lt;/p&gt;

&lt;h3&gt;
  
  
  Low risk and high ROI
&lt;/h3&gt;

&lt;p&gt;Low-code platforms are backed by the best industry standards and security practices: cross-platform support, data integration and up-to-date security algorithms are built-in features. Hence, you can focus on more important business tasks while ensuring your entire workflow is highly protected and customized.&lt;/p&gt;

&lt;h3&gt;
  
  
  Easy deployment
&lt;/h3&gt;

&lt;p&gt;Most often than not, the launch day is all about unexpected problems and new emergency bugs. With low code, you can roll all changes back to a stable version with just a single click and fix the issues early on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lifecycle support and seamless integration
&lt;/h3&gt;

&lt;p&gt;Low code platforms support the entire application development lifecycle from idea to exit, including DevOps and CI/CD. Besides, the low code platform APIs allow for external integration with tools to support project management, DevOps, testing and CICD pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the cons of Low-Code?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Low-code isn't the future of code. It certainly has a place in the future and will be leveraged to make many applications. It will not replace other ways of creating software because low-code breaks down when the solution's complexity increases. We saw the same thing with Visual Basic in the '90s. VB was valuable, and a lot of software was written in VB. In the end, it was complexity required by some applications that caused VB to break down and no longer be a good solution. Low code will be the same.&lt;/p&gt;

&lt;p&gt;Thomas Stiehm, CTO of Coveros&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At first glance, low code software is a perfect solution for app development, but there are multiple drawbacks as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Business logic complication
&lt;/h3&gt;

&lt;p&gt;Low code tools like Mendix are an excellent option for the automation of simple processes or prototyping. However, once the prototyping stage is passed, the business logic becomes more complex eventually. To develop a project any further, you'll need an expert team. Today's low code platforms are not perfect yet, so it's not good to rely on them in the long run. Otherwise, you risk jeopardizing your business.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limited functionality
&lt;/h3&gt;

&lt;p&gt;In a low code development tool, the number of functions that you can implement is limited. It is a quick way to build applications, but you do not have many options if you want to try out something different.&lt;/p&gt;

&lt;p&gt;For sure, drag &amp;amp; drop functionality features can be useful under certain circumstances. But when you need a unique feature that's not available, you will need some custom code. Sometimes integrating this custom code can also cost a lot more than a completely customized solution built from scratch.&lt;/p&gt;

&lt;h3&gt;
  
  
  No technical background myth
&lt;/h3&gt;

&lt;p&gt;Despite the name, you still need a robust technical background to use low-code tools. Furthermore, you first need to examine basic low-code development requirements and technologies, which by itself take time to learn and adapt to.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security limitations
&lt;/h3&gt;

&lt;p&gt;Low-code solutions indeed have in-build security protocols, but they still can't provide the same security level as standalone development technologies. With an application based on low-code, you have neither full control over data security or access to source code. Hence, you can’t define all the possible vulnerabilities out there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Now that we know the major pros and cons of low-code methodology, we can understand that it is not meant to replace traditional development or professional software providers.&lt;/p&gt;

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

&lt;p&gt;Instead, it’s essential for companies to utilize low-code practices to strengthen a traditional approach and fill its gaps. When combined, low-code and traditional techniques can ensure faster and more productive application development.&lt;/p&gt;

&lt;p&gt;With this in mind, low code significantly enhances speed-to-market and improves the overall business efficiency when used in tandem with traditional methods. All in all, there is no silver bullet that can turbo-boost your business, so it’s vital to consider multiple options and get professional advice. We at Brocoders are always eager to share our best expertise with you. Please, feel free to &lt;a href="https://brocoders.com/get-in-touch/"&gt;drop us a line&lt;/a&gt; any time you see fit.&lt;/p&gt;

</description>
      <category>lowcodevelopment</category>
      <category>mendix</category>
      <category>coding</category>
    </item>
    <item>
      <title>What We Have Learned While Using AWS Lambda in Our Production Cycles for More than One Year</title>
      <dc:creator>Maxim Vynohradov</dc:creator>
      <pubDate>Tue, 15 Sep 2020 21:38:52 +0000</pubDate>
      <link>https://forem.com/brocoders/what-we-have-learned-while-using-aws-lambda-in-our-production-cycles-for-more-than-one-year-1e0i</link>
      <guid>https://forem.com/brocoders/what-we-have-learned-while-using-aws-lambda-in-our-production-cycles-for-more-than-one-year-1e0i</guid>
      <description>&lt;p&gt;Over the last few years, serverless approaches have gained decent traction in the web app designing, developing and implementing sectors. In the early days, many engineers treated serverless just like another hype. Still, almost all of those who tried to use it had to admit that the technology turned out to be as good as traditional and standalone virtual machines for hosting web-applications.&lt;/p&gt;

&lt;p&gt;To date, we can see that startups tend to utilize serverless technology stack as a part of their systems or even as their primary solution for building products in different domains.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  &lt;strong&gt;First things first&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Our team decided to test out the technology while working on the product during the last year — an &lt;em&gt;on-demand bike taxi app&lt;/em&gt; that uses a serverless approach for one of its components. In fact, it is much similar to an Uber app.&lt;/p&gt;

&lt;p&gt;Technically, it was mostly a REST API and cron-tasks, anchored by the following technologies (all of these are provided by the Amazon Web Services):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Gateway as a platform for API management.&lt;/li&gt;
&lt;li&gt;CloudWatch Rules for scheduling cron-tasks.&lt;/li&gt;
&lt;li&gt;Lambdas as computing units.&lt;/li&gt;
&lt;li&gt;S3 buckets to store static files.&lt;/li&gt;
&lt;li&gt;CloudWatch Logs with Logs Insights for log management.&lt;/li&gt;
&lt;li&gt;Tools for continuous integration and deployment of our application: AWS CodeBuild, AWS CodePipeline and AWS CodeDeploy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Initially, we used Node.js version 10 to write the code (a few months ago it was upgraded to version 12 without any issues). And all the infrastructure part (I mean all the AWS objects descriptions) is created and managed by an open-source Serverless Framework.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;*This guide is not about AWS, FaaS (Function as a Service) or Serverless framework, since there is a lot of such content on the Internet. Here you will only find the things that our team faced during the development and after-launch stages. This info might be helpful if you come up with doubts about which technology to adopt for your next project. *&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The Serverless world — the remarkable benefits of using AWS Lambdas&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Let's start with the good parts! No matter what any hater says, the Serverless world provides a bunch of excellent features that you cannot achieve in any other way under equal conditions.&lt;/p&gt;

&lt;p&gt;When we started this project mostly from scratch, it didn't require any severe capacity in measurements of Memory, CPU or network, to name a few. The same statement can be made not only about the development phase but also about the Staging, QA and Pre-Prod environments.&lt;/p&gt;

&lt;p&gt;Traditionally, we need four servers, whether that be virtual machines, docker containers or any other platforms where we can host servers. For sure, it might be quite expensive to keep and maintain servers, even small and low-power ones. Even switching them off at nights and weekends is no way an option.&lt;/p&gt;

&lt;p&gt;However, the Serverless world has an alternative solution – the so-called "Pay as you go" payment approach. It means that you pay only for the computing resources and network load that you use, even though the entire infrastructure is deployed and accessible at any moment.&lt;/p&gt;

&lt;p&gt;In practice, it means that we were not burdened with any cost savings during the project's development. Moreover, while we remained within the AWS Free Tier limits, the actual cloud usage was charge-free until we reached the production stage.&lt;/p&gt;

&lt;p&gt;So here are some advantages of AWS Lambdas worth mentioning here.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Outstanding scalability&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The app was designed for the city with more than 13 million people. So it’s no wonder that the number of users started snowballing right after the first release. By "snowballing", I mean thousands of new users per hour in the first few weeks, hence a bunch of rides and ride requests as well.&lt;/p&gt;

&lt;p&gt;That's where we felt all the benefits of the AWS Lambdas' &lt;em&gt;incredible scalability and zero management&lt;/em&gt; of the scaling process. You know, this feeling when you see a rapidly growing number of requests on the chart (that was automatically provided by AWS). And the greatest part is that you shouldn't even worry about this, since the AWS Lambdas are scaled automatically. All you have to do is set a threshold for the concurrent invocation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;A standard set of monitoring and logging tools&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Aside from the automatic scalability feature, AWS provides a basic set of tools for Lambdas. So, you don't have to waste your precious time dealing with the annoying configuration of basic monitoring metrics, such as Memory Usage, Execution time or Errors Count.&lt;/p&gt;

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

&lt;p&gt;Moreover, you can customize your own dashboards in the &lt;a href="https://aws.amazon.com/cloudwatch/"&gt;CloudWatch service&lt;/a&gt; that would help you track performance issues and execution errors throughout the entire serverless application.&lt;/p&gt;

&lt;p&gt;For sure, you won't come up with as many customizable graphics options, as Grafana or Kibana can provide, but at the same time, the AWS CloudWatch metrics, alarms and dashboards are way cheaper. Besides, you can attune these without much preparation, and last but not least — the cloud provider takes responsibility for the efficiency of the monitoring tools described above.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Isolated environment&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Well, let's say you managed to customize a dashboard without any problems. But then you realized that the Lambdas execution process took more time than it should have, and it looked like Lambdas performed some sophisticated calculation. Luckily, it's not a problem for AWS Lambda, since every function-handler runs in an isolated environment, with its own configuration system of Memory or CPU.&lt;/p&gt;

&lt;p&gt;In-fact, each instance of Lambda is a separate AWS Firecracker Container that spawns on a trigger (in case of a REST API, the trigger is an HTTP request). That said, all you have to do is just increase CPU units Count or Memory for the specific Lambda, with no need for global updates, as if it were done in a classic server.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Flexible errors management&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Another outstanding benefit that you can enjoy while using AWS Lambda is &lt;em&gt;decent error handling&lt;/em&gt;.&lt;/p&gt;

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

&lt;p&gt;As said above, each Lambda has an isolated environment, so even if one of your Lambda instances fails for any reason, all other Lambdas will continue to operate normally. It's fantastic when you have just one or two errors from a few hundred possible AWS Lambda invocations, isn't it?&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Automated retry attempts&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Furthermore, retry attempts is another out-of-the-box feature that AWS provides. Should a Lambda fail for any reason, it would be automatically re-invoked with the same event payload during the pre-configured period. I must say, it’s a quite useful feature if your Lambda is invoked by schedule and is trying to send a request to a third party resource that can be unavailable.&lt;/p&gt;

&lt;p&gt;Finally, AWS Lambda supports the &lt;a href="https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html"&gt;Dead letter queue concept&lt;/a&gt; that means you can acquire relevant notifications and tracking information about failed Lambdas.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;The AWS Lambda disadvantages — a few pain points to learn from&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;On the flip side of the coin, AWS Lambda and the serverless concept are not entirely perfect yet and have enough unresolved problems and pitfalls that make the development and support processes a little bit harder.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  &lt;strong&gt;Duration limits&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;For our project, it was all about limits. For example, we ended up with an execution duration limit — a Lambda can be performed within 15 minutes maximum. Moreover, if a trigger is requested from an API Gateway, the duration must be no more than 30 seconds.&lt;/p&gt;

&lt;p&gt;Perhaps, we could accept such limits for the API, but a 15-minutes limit for the cron-tasks was way too tight to execute the particular scope of tasks on time. That said, since the computed intensive tasks couldn't be invoked with Lambdas, we had to create a separate server specifically for long-running tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;CloudFormation deployment limitations&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Another significant issue we faced was the Lambda deployment via CloudFormation (the AWS service for infrastructure and deployment). At the very beginning of the project, everything was fine. Still, when the number of Lambdas mushroomed into more than 30 CloudFormations, the stack started failing with different errors like "Number of resources exceeded", "Number of outputs exceeded".&lt;/p&gt;

&lt;p&gt;Thankfully, the serverless framework and its plugins helped us to tackle this issue early on. There are also a few other ways to solve such kinds of problems, but that'll be a topic for another article.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Failure to expand monitoring and debugging toolset&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Even though AWS provides some basic level of monitoring and debugging, it's still &lt;em&gt;impossible to extend this part and make some custom metrics&lt;/em&gt; that could be useful for particular cases and projects. This time around, we had to use third-party services that you usually need to integrate as libraries into your code to be able to monitor some specific stuff.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  &lt;strong&gt;Cold start-related delays&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As mentioned above, each Lambda instance is in-fact a tiny Firecracker Container with some basic runtime environment, libraries and your code. It's created temporarily to process any event evoked by the triggers. It's a well-known fact that creating a container or running an executable environment and code takes some operational time called a cold start.&lt;/p&gt;

&lt;p&gt;It can take random time between 100 milliseconds to a few minutes. Moreover, if you keep your Lambdas under VPC (Virtual Private Cloud), cold starts will take more time because the system will have to create additional resources for each Lambda, called Elastic Network Interfaces.&lt;/p&gt;

&lt;p&gt;This, in turn, results in annoying delays, so the end-users have to wait for the app to respond, which is definitely not good at all, isn't it? The workaround here is to ping your Lambda every 5 minutes to keep containers "warm". The AWS system is smart enough and doesn't kill Lambdas containers immediately, since it is based on the concept that triggers would keep spawning new events.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Database connection pitfalls&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In view of the above, it's problematic to manage a database connection for such a system. You cannot just open a connection pool to your MongoDB or MySQL servers at the application startup phase and reuse it during the entire lifecycle.&lt;/p&gt;

&lt;p&gt;So there are at least two ways to manage connections:&lt;/p&gt;

&lt;p&gt;You should open a connection for each Lambda invocation and close it after your code with logic would be completed; You can try to reuse a connection and keep it in the Lambda memory as a reference in code or field in context — it allows you to keep a connection within the same Lambda containers till closing.&lt;/p&gt;

&lt;p&gt;However, both have their own limitations. In the first case, we end up with additional delays since we have to open a connection for each Lambda call. In the second case, we can't be sure for how long Lambda would keep a connection, and consequently — we can't handle a connection shut-down properly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Local test limitations&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Besides, the serverless apps are hard to test locally, because usually there are a lot of integrations between AWS services, like Lambdas, S3 buckets, DynamoDB, etc. For any type of local testing, developers must mock all this stuff, which usually is a formidable and time-consuming task.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Inability to adopt caching in a traditional way&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;On top of everything else, you can't implement a traditional caching for classic-like servers. Usually, you have to use other services like S3, DynamoDB or ElasticCache (de-facto Redis hosted on AWS) to keep Lambda's state or cache some data between AWS Lambda invocations.&lt;/p&gt;

&lt;p&gt;In most cases, it results in extra costs of the entire infrastructure. Not to mention additional operational overhead — you'll have to put and fetch cached data from remote storage, which, in turn, can slow down the performance of your cache.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Complex payment model&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The last one worth mentioning is a sophisticated price calculation. Even though AWS Lambda is quite cheap, various supplementary elements can significantly increase the total costs. People tend to think that the pricing for using the AWS Lambda's API is based on its computing resources and duration of code execution. In fact, you should keep in mind that you'll have to pay for additional services, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Network traffic,&lt;/li&gt;
&lt;li&gt;API Gateway,&lt;/li&gt;
&lt;li&gt;Logs stored in the CloudWatch.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;h3&gt;
  
  
  &lt;strong&gt;Wrapping up&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Summarizing the above, I want to say that the AWS serverless approach is a great way to strengthen your development practices. Nevertheless, you have to keep in mind that it's quite different from traditional servers.&lt;/p&gt;

&lt;p&gt;To leverage the life-changing benefits of this technology, you have to get acquainted with all the subtleties and pitfalls in the first place. Besides, you also have to think through the architecture and its specifics for your particular solution.&lt;/p&gt;

&lt;p&gt;Otherwise, the serverless approach can bring you rather problems than beneficial features as of insufficient educational background.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>faas</category>
      <category>aws</category>
      <category>node</category>
    </item>
    <item>
      <title>Crime and Punishment: Hype Driven Development</title>
      <dc:creator>Maxim Vynohradov</dc:creator>
      <pubDate>Sun, 12 Jul 2020 22:28:55 +0000</pubDate>
      <link>https://forem.com/brocoders/crime-and-punishment-hype-driven-development-38i8</link>
      <guid>https://forem.com/brocoders/crime-and-punishment-hype-driven-development-38i8</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;&lt;/em&gt; : long read. About the painful stuff, what I want to share for more than a month. Also does not claim to be complete, it is more about how I try to deal with it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Table Of Contents
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Introduction: what is &lt;em&gt;Hype Driven Development&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;HDD definition as a crime &lt;/li&gt;
&lt;li&gt;Objective side and consequences  of the HDD crime&lt;/li&gt;
&lt;li&gt;How to prevent HDD in project&lt;/li&gt;
&lt;li&gt;Conclusion and afterword&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a&gt;Introduction: what is &lt;em&gt;Hype Driven Development&lt;/em&gt;?&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Here I want to share a few thoughts on how to convince the team / manager / product owner to not use the &lt;em&gt;"hype"&lt;/em&gt; technology or make proof that this technology fits good in your project.&lt;/p&gt;

&lt;p&gt;It is well known that representatives of different professions often invent ways to solve a particular problem. For instance, which approach and constituent materials to use and positions, the choice of a specialist often determines the success of achieving the goals.  For example, would the cafe be profitable, and would the bridge withstand the load successfully, would the operated heart beat for many years. And, unfortunately, one wrong decision can lead to fatal consequences and suffer great losses, and even worse – harm the health and life of people.&lt;/p&gt;

&lt;p&gt;Engineers, software developers, web developers, and other technical guys are no exception. Moreover, the final software products are extremely dependent on real business, with real people and finances. And the harm that can be caused by badly designed and implemented software can potentially be huge and irreparable damage to the entire business.&lt;/p&gt;

&lt;p&gt;Let's look at one of the most common crimes committed by various teams that somehow participate in the design and development of various types of IT projects, named &lt;strong&gt;Hype Driven Development&lt;/strong&gt; (hereinafter referred to as HDD).&lt;/p&gt;

&lt;p&gt;This concept is &lt;a href="https://blog.daftcode.pl/hype-driven-development-3469fc2e9b22#.t3yqgxync"&gt;not new&lt;/a&gt;, but it does not go back to the past century, and means &lt;em&gt;a decision about a technological stack or software architecture that is taken without technical justification, research, based only on loud and popular words from the Internet or other sources, "buzzwords ", unverified rumors&lt;/em&gt;. It's a development based on fashion and trends, without explanation of your choice from a technical point of view and not confirming by checking or evaluating the proposed solution.&lt;/p&gt;

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

&lt;p&gt;What I have most often seen: blockchain, data science, machine / deep / any other learning, MongoDB, GraphQL, Serverless, Clouds, Kubernetes, and more. These "hype" technologies and much more I've seen in different proposals of various technical requirements, in RFPs (Request for proposal), spreadsheets with estimates, and so on. Don't get me wrong, I have a deep respect for the above-listed technologies, and, as an example, I often use MongoDB and Serverless. The problem is that these technologies were proposed to be used and added in the post-production phase, and their connection with business logic seemed as far-fetched as possible.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a&gt;HDD definition as a crime&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Why I started with such a long prelude at the beginning - you can imagine when a builder chooses from what material to build a skyscraper "because it is so fashionable". Or maybe a doctor who prescribes pills according to the principle "well, those people take similar pills abroad, and this may help you too." Personally, I have not, I have never seen this, I wish the same to you. &lt;strong&gt;For me, such an approach and attitude to work looks like a crime. Therefore,  I propose to consider HDD a crime, at least in the article&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To begin with, I think it's worth remembering what constituent elements of a crime are. Without the presence of corpus delicti, an act cannot be considered criminal.&lt;/p&gt;

&lt;p&gt;It's a quite extensive and complex definition, but let's summarize and simplify it a little, coz after all, this is not a jurisprudence article, especially since the laws of countries and states are different enough. We are interested in the following components of constituent elements of a crime:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;the object&lt;/em&gt; - is the part to which the damage was caused;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;the objective side&lt;/em&gt;- is the external manifestations of the crime, action or inaction, the consequences of the crime, as well as the connection between them or, for example, the time, method, means of committing;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;subject&lt;/em&gt; - the one who committed the crime;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;the subjective side&lt;/em&gt; - is a person's attitude to a crime that he has committed. Was it intent (direct or indirect) or it was negligence (frivolity or negligence), there is a motive and what is the purpose of the crime.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's start with the &lt;strong&gt;subject&lt;/strong&gt;. In our case, this is one of the members of the development team in the broad sense of the word: engineers, managers, product owners. That is all those people who in one way or another influence the development process. But they can be divided into two categories. Some of them work on business logic, tasks, and functional requirements - usually the manager, business analyst, and product owner. On the other hand, we have technical specialists - test engineers, developers, architects, team leads. Of course, they can work at the junctions of the technical and non-technical parts of the project, but now it is important that both the former and the latter can offer, perhaps even insist on using the hype technology.&lt;/p&gt;

&lt;p&gt;And here we smoothly move on to the &lt;strong&gt;subjective side&lt;/strong&gt; of the HDD crime - did anyone want to harm when choosing an HDD technology? I think nobody would choose technology or design architecture to the detriment of their project or product. Then why?&lt;/p&gt;

&lt;p&gt;Based on personal experience, I can say, that typically, customers (meaning people or companies which order development of product, not product users ), product owners choose one of these technologies to attract the attention of investors and potential users as sources of funds and income. The reason is more than clear and transparent - often investors are not technical specialists, so, many of them are being led by beautiful marketing slogans, that promise many profitable things for the product. But at the same time, they usually don't understand the real essence of things.  As a result, we get a technical solution based on marketing. There are also cases when a customer already comes with technical requirements for a future product. When asked "why does he want such a stack of technologies?", we usually get one of the options: "one of my projects uses such a stack and everything is fine", "my partner's project uses such a stack - and he is happy with everything". People who say this usually do not think about the fact that if functional and non-functional requirements are different, then the technologies used do not have to be the same.&lt;/p&gt;

&lt;p&gt;Sometimes it happens that someone from the technical part of the team initiates the use of "hype" technology. Usually, this is less experienced teammates (juniors), which still cannot always assess the risks and make appropriate time estimations. For them, it all comes down to the fact that they want to try a new technology, which is given in a beautiful wrapper. And also usually they do not look at the license of the solution (let's say it is a library or a framework), or at its maturity.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a&gt;Objective side and consequences of the HDD crime&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;The objects of the HDD crime&lt;/strong&gt; can also be different. It depends on what side of the project we are considering - technical or business. If we are talking about the technical side, there are codebases in general, its architecture, the infrastructure of deployments. On the other side, the business operated by other concepts, like include cash flows, investments, profits, and other business processes.&lt;/p&gt;

&lt;p&gt;So, let's say a "hype" technology penetrates the project, seeps into the code base, a lot of logic, additional code and configurations begin to rise around the technology. In this case, what and who will suffer from the introduction of "hype" technology, and how (we are talking about the &lt;strong&gt;objective side&lt;/strong&gt;) will the HDD affect the project and the business as a whole (&lt;strong&gt;the object of the crime&lt;/strong&gt;)?&lt;/p&gt;

&lt;p&gt;There are a lot of things, consider that you are playing dice - it all depends on how hype and not properly researched technology is deeply integrated into the business logic of your application, code and development processes in general. The list below presents the most obvious consequences.&lt;/p&gt;

&lt;p&gt;🚫 &lt;strong&gt;&lt;em&gt;Building a business model around technology, not adopting technology to business&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This happens relatively rarely, but extremely unfortunate. It happens when a "hype" technology is at the very core of the business logic and, accordingly, the code base, when the very idea of ​​the application is to build something over the technology. Accordingly, if the technology breaks down in one way or another (for example, an unobvious bug pops up) - with a high probability, the product that is based on it breaks too.&lt;/p&gt;

&lt;p&gt;🚫 &lt;strong&gt;&lt;em&gt;Low conversion from "hype" technologies&lt;/em&gt;&lt;/strong&gt; - that is, the discrepancy between the expected profit from the technology and the real one, as they often do not take into account that needs to pay for additional infrastructure along with the support of such a solution, as well as the work of specialists who will configure this solution.&lt;/p&gt;

&lt;p&gt;🚫 &lt;strong&gt;&lt;em&gt;The black box problem&lt;/em&gt;&lt;/strong&gt;. Usually, the external dependency is perceived as something atomic, as an integral component within our system, with its public API (interfaces, methods, endpoints). But in fact, this is the same program code as the one in which we integrated this component, with its dependencies and bugs, performance, and security problems. You probably say: "But often the code of such components is open source!". Now think, how often do you have enough time, desire, and immediate need to look into the program code of one of your libraries or database (which is also a software product with its source code)? I think not often (but usually it tends to never). For us, a bug (this is how it can harm your project) in any external dependency is a kind of analog of "Schrodinger's cat in a box", which is both there and not. We often find out about the presence of bugs only when this external bug affects the state of our system.&lt;/p&gt;

&lt;p&gt;🚫 &lt;strong&gt;&lt;em&gt;Lack of professionalism and experience in the introduced technology&lt;/em&gt;&lt;/strong&gt;. It's simple - the devil is in the details. Even if you have over-qualified specialists in your team who love work and are ready to delve into everything new on their way, hardly anyone can comprehend the depth of this or that technology in a short time.&lt;/p&gt;

&lt;p&gt;🚫 &lt;strong&gt;&lt;em&gt;Increasing the entropy of the program code and the system as a whole.&lt;/em&gt;&lt;/strong&gt; Hmm, okay, but what is entropy? It is a very broad concept, rooted in natural sciences, thermodynamics, and later mechanics and software. The initial idea is that in an isolated system the degree of chaos and uncertainty will not decrease over time but will remain the same or increase. On the other hand, entropy is a measure of the unknown about the system as a whole. The concept first appeared in the context of software in the book Object-Oriented Software Engineering (by Ivar Jacobson, Patrik Jonsson, ACM Press Staff, Magnus Christerson, Gunnar Overgaard). In general, think of entropy as a measure of the dishonesty of the system. The more disorder, uncertainty, the higher the probability of breakage. Compare a hammer and a car, which is a hundred times more complex in its structure - which one is broken down more often and faster?  A car has many more constituent components with its level of entropy, and therefore the total entropy is higher. Returning to HDD, the more complex and more unknown technology we involve in the process, the higher the likelihood that the project entropy will increase, and hence the number of bugs and &lt;a href="https://en.wikipedia.org/wiki/Mean_time_between_failures"&gt;Mean time between failures (MTBF&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;🚫 &lt;strong&gt;&lt;em&gt;Life cycle and aging of software&lt;/em&gt;&lt;/strong&gt;. Are you sure that the hype framework, the server, will exist, developed, and be supported for a long time, at least as long as the life of your project / product? And that in the next version the public API will not change completely - you need to either translate the API to a new one or live with the deprecated API. Have you assessed these risks correctly? Let's discuss this further.&lt;/p&gt;

&lt;p&gt;🚫 &lt;strong&gt;&lt;em&gt;Increased risks&lt;/em&gt;&lt;/strong&gt;. New technologies usually mean new risks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Going out of bounds by time estimation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Risk of unsuccessful completion of the project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The additional overhead for infrastructure, development, and support.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Additional vulnerabilities of the system crash.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nobody guarantees that critical security updates will be issued and fixed on time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;a&gt;How to prevent HDD in project&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Ok, it seems that we have considered all the components of this crime. But how to prevent and avoid the use of HDD on a project without realizing full awareness of what technology the team will live with on the project? Or you can prove the validity of the implementation and evaluate all the pros and cons. Once again, just in case, if the technology is hype, this does not mean at all that it is full of bugs, has not matured, or does not apply to your project. It's just that there should be common sense in everything, namely in the analysis of technology from a technical and business point of view, a sound assessment of risks and additional costs.&lt;/p&gt;

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

&lt;p&gt;Here are some ideas and approaches, the use of which can influence the views and awareness of the team regarding the choice of hype technology.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;&lt;em&gt;The opinion of experts&lt;/em&gt;&lt;/strong&gt;, both in the technical part and in the subject area of business - "do we need it?" Before getting into Data Science, Serverless, and the like, consult a specialist with experience with this technology. Probably, you will not give up the technology, but completely rethink its use in the project. Moreover, it has a positive effect on grades.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;&lt;em&gt;Proof of Concept&lt;/em&gt;&lt;/strong&gt; creation is as old as the world - before doing a full-scale implementation and implementation, you should make the simplest demo version tied to any technology. Most likely, you will not notice any deep and hidden problems, but you can throw away the technology at the start if you see that it does not suit you in any way.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;&lt;em&gt;A collective brainstorm "for" and "against"&lt;/em&gt;&lt;/strong&gt; - decisions should never be made alone or in a narrow circle of employees. It is worth discussing and listening to all opinions, perhaps a sensible thought will come from an unexpected side. Also, interesting is the Three amigos approach, which is rooted in BDD and Agile, and means that there are three parties involved in the process: Business, Development, Testing. Thus, you can try to identify the largest number of problems and corner cases associated with the introduced technology. &lt;a href="https://cucumber.io/docs/bdd/who-does-what/#the-three-amigos"&gt;More details here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;💡 "&lt;a href="https://en.wikipedia.org/wiki/Five_whys"&gt;&lt;strong&gt;&lt;em&gt;5 Whys&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;" - and again about how not to drag unnecessary things to your project. Try to apply this technique to the next technology adoption issue. Ask yourself and your colleagues - "why are we doing this," and so on, 5 times according to the list (see the article). It may well be that simpler steps are sufficient to solve the original problem.&lt;/p&gt;

&lt;p&gt;Also, consider whether you can achieve the desired results without using this technology. How much more difficult and costly it will be.&lt;/p&gt;

&lt;p&gt;💡 &lt;strong&gt;&lt;em&gt;KISS (keep it simple stupid) And YAGNI (you ain't gonna need it).&lt;/em&gt;&lt;/strong&gt; A huge number of articles have been written about these principles, and I see no need to retell them. Just make sure you don't break them when you introduce the next technology to your project.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a&gt;Conclusion and afterword&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;We're finally here, and I'll try to make the ending shorter! There is a huge difference between "&lt;em&gt;adding and usage of new technology&lt;/em&gt;" and "&lt;em&gt;deliberately adding and usage of new technology&lt;/em&gt;". It would seem that the phrases differ by one word, but there is a huge gap between them. Hype technologies are often interesting, progressive, the main thing is to choose and apply them deliberately, without risking the project and business, not forgetting about your technical debt.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>hype</category>
      <category>engineering</category>
      <category>management</category>
    </item>
  </channel>
</rss>
