<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Brocoders</title>
    <description>The latest articles on DEV Community by Brocoders (brocoders).</description>
    <link>https://dev.to/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.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3023%2F9aeacac4-96b2-4a6b-86b8-1fdc8aacb328.jpg</url>
      <title>DEV Community: Brocoders</title>
      <link>https://dev.to/brocoders</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brocoders"/>
    <language>en</language>
    <item>
      <title>Turning a Service Into an AI Product Is a Workflow-Splitting Problem, Not a Pricing One</title>
      <dc:creator>yulyabrocoders</dc:creator>
      <pubDate>Wed, 04 Nov 2026 07:03:29 +0000</pubDate>
      <link>https://dev.to/brocoders/turning-a-service-into-an-ai-product-is-a-workflow-splitting-problem-not-a-pricing-one-3b76</link>
      <guid>https://dev.to/brocoders/turning-a-service-into-an-ai-product-is-a-workflow-splitting-problem-not-a-pricing-one-3b76</guid>
      <description>&lt;p&gt;"Service as software" gets pitched as a pricing and positioning question, charge for outcomes instead of seats. The actual engineering decision underneath it is a workflow decomposition problem: which steps in the service have a verifiable correct answer, and which don't. Get that boundary wrong in either direction and the product fails in a specific way. Automate a step that has no ground truth to check against and you're shipping confident guesses with no way to grade them. Leave a step with a clear correct answer stuck behind a human review queue and you've built an expensive, slow version of something that should have been an API call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every service splits into two kinds of work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rules-based work with a verifiable correct answer, coding against a spec, medical coding, insurance claims processing, is what the "service as software" framing calls intelligence. It's testable. You can build an eval set and know when the system is wrong. Taste and experience-based decisions, strategic recommendations, feature prioritization, judgment calls with no single right answer, are the opposite. There's nothing to grade against, only a track record of outcomes over time.&lt;/p&gt;

&lt;p&gt;Those two categories don't get the same system. Intelligence work belongs behind a synchronous, auditable pipeline with test coverage. Judgment work belongs in an assisted interface where the AI surfaces options and reasoning, and a human signs off, because there's no ground truth for the system to be silently wrong against.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Classifying a step, and what each answer implies for the build&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;classifyStep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hasVerifiableGroundTruth&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isRulesBased&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;automate&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;requiresAudit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;   &lt;span class="c1"&gt;// intelligence: testable, deterministic&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;assist&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;requiresHumanApproval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt; &lt;span class="c1"&gt;// judgment: no ground truth to grade against&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;automate steps get the treatment intelligence work needs: an eval suite, an audit trail per decision, and a synchronous API contract, because you can prove it's right. assist steps get a queue or inbox interface, AI-generated options with reasoning attached, and a required human approval before anything ships, because you can't prove it's right, only that a qualified person agreed with it. Misclassifying a step doesn't just cost money, it's the difference between a defensible system and a liability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this looks like in two real builds&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brocoders.com" rel="noopener noreferrer"&gt;Brocoders&lt;/a&gt; built an Advisory AI Panel for a client that's squarely judgment work: a structured panel of independent AI experts with distinct viewpoints, an AI facilitator moderating multi-round discussion, and a live readiness score, but the panel surfaces perspectives, it doesn't hand down a verdict. That's the assist path done right, the system organizes judgment, it doesn't replace it.&lt;/p&gt;

&lt;p&gt;AskAC.ai, built for Compressor World, sits on the other side. It's a technical support system covering 4,000+ product manuals and spec sheets, every answer traceable to a source document, with no hallucinated responses recorded. That's intelligence work: there's a correct answer in the manual, the system's job is retrieval and citation, not judgment, and it can be held to a testable standard because the ground truth actually exists.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the pricing tells you about the split&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Seven companies pricing this model make the intelligence/judgment split visible in what they charge for. Rillet, an AI accounting product, automates 93% of journal entries and charges a flat subscription, rules-based accounting work is intelligence almost all the way down, so the pricing looks like software pricing. Anterior, doing AI prior authorization, claims 90% automation and 74% faster processing, same shape: mostly verifiable, mostly automatable. Crosby, doing AI contract review, charges $250-$1,000 per document, a wider range that reflects real judgment content, contract review isn't purely rules-based, so the price varies with how much human-grade reasoning the document actually needs. Sierra and Decagon both charge per resolution in customer service AI, tens of thousands to $150,000+ annually plus setup, because resolution is closer to intelligence work (there's a definable "did this solve the ticket") but still needs enough judgment-adjacent handling that it isn't priced like a pure API call.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The three questions that actually decide the architecture&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Which workflow components are intelligence vs. judgment?&lt;/strong&gt; This is the classification step above, run against every piece of the service, not the service as a whole.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the work currently outsourced or in-house?&lt;/strong&gt; This tells you what system of record you're integrating against and who owns the data you need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What would clients pay for the outcome alone?&lt;/strong&gt; This is the same audit-trail-not-meter problem from outcome-based pricing: you can only charge for an outcome you can prove happened.&lt;/li&gt;
&lt;li&gt;How we build this&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://brocoders.com" rel="noopener noreferrer"&gt;Brocoders&lt;/a&gt; runs both shapes on a React, Node.js, and TypeScript stack, with multi-tenant architecture as a default and our own DevOps end to end rather than outsourced infra. Internal tooling at &lt;a href="https://bcboilerplates.com" rel="noopener noreferrer"&gt;bcboilerplates.com&lt;/a&gt; covers the auth and tenancy scaffolding either shape needs, so engineering time goes into the eval suite for intelligence work or the approval interface for judgment work, whichever the service actually requires.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering checklist before you convert a service into a product&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Classify every step,&lt;/strong&gt; not the workflow as a whole, intelligence and judgment usually coexist in the same process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build an eval set for every automated step,&lt;/strong&gt; so "correct" is measured, not assumed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build an audit trail for intelligence work,&lt;/strong&gt; and a human-approval gate for judgment work, they're not interchangeable safeguards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't over-automate judgment calls&lt;/strong&gt; just because the model sounds confident, confidence isn't the same as ground truth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't under-automate intelligence work&lt;/strong&gt; out of caution, that's the expensive mistake in the other direction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revisit the boundary over time,&lt;/strong&gt; a step that needed human approval at launch may earn its way into automation once the eval data backs it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tie billing to the outcome you can actually prove,&lt;/strong&gt; not to the step you wish was fully automated yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're deciding where the intelligence/judgment line sits in your own service before committing to a build, &lt;a href="//brocoders.com"&gt;brocoders.com&lt;/a&gt; is a reasonable place to start that conversation.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>api</category>
      <category>startup</category>
      <category>saas</category>
    </item>
    <item>
      <title>SaaS vs AI-Native: The Architecture Decision Hiding Behind the Positioning Debate</title>
      <dc:creator>yulyabrocoders</dc:creator>
      <pubDate>Tue, 20 Oct 2026 06:09:58 +0000</pubDate>
      <link>https://dev.to/brocoders/saas-vs-ai-native-the-architecture-decision-hiding-behind-the-positioning-debate-51n4</link>
      <guid>https://dev.to/brocoders/saas-vs-ai-native-the-architecture-decision-hiding-behind-the-positioning-debate-51n4</guid>
      <description>&lt;p&gt;Gartner estimates $234 billion of enterprise SaaS spend, roughly 20% of it, is at risk by 2030 because agents are starting to act on business systems directly instead of a person clicking through a UI to get the same result done. That's not a pricing story or a positioning story first. It's an architecture story: the moment an agent, not a human, is the primary caller of your system, your auth model, your audit trail, and your data model all have different requirements than a dashboard built for a person to read and click through.&lt;/p&gt;

&lt;p&gt;Most teams treat "are we SaaS or AI-native" as a marketing decision to make after the product works. It isn't. It's a decision that determines whether your system needs a permission layer for autonomous write actions from day one, or whether read-heavy, human-confirmed writes are enough. Get it wrong and you're not repositioning later, you're rebuilding the action layer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three checks, and what each one actually decides architecturally&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The positioning question breaks into three checks, and each one has a concrete engineering consequence, not just a copy-deck consequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Positioning:&lt;/strong&gt; is a human operating this tool, or is the system doing the work itself for one specific domain? This decides whether your primary interface is a UI or an API/action surface that other systems (or agents) call directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing:&lt;/strong&gt; per seat, or per usage/outcome? Per-seat pricing needs a licensing and entitlement check. Usage or outcome pricing needs an event-metering pipeline that captures every billable action, feeds a billing system, and survives retries without double-charging. That's a different set of tables and a different set of failure modes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shape:&lt;/strong&gt; does the product display information for a human to act on, or does it take the action? A dashboard that shows a scheduling conflict is read-only from the system's perspective. An agent that reschedules the technician and texts the customer needs write access to a live system of record, which means it needs the same guardrails you'd put around any service account: scoped permissions, idempotency, and a full audit log of what it did and why.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Two or more answers pointing toward "does the work" plus "outcome-based" means you're building an execution layer with agent-grade guardrails, whatever you call it on the landing page. Answers pointing the other way mean a well-scoped SaaS is still the right shape, and that's a legitimate, growing category (global SaaS spend is still tracking from $318B in 2025 toward $576B by 2029).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the action layer actually looks like&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The part that's easy to skip when you bolt "AI" onto an existing SaaS: an agent acting on a business system needs the same discipline you'd apply to a webhook from an untrusted third party, because functionally, that's what it is.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// The shape that separates "agent does the work" from "agent suggests, human clicks"&lt;/span&gt;
&lt;span class="nx"&gt;AgentAction&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tenant_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;agent_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;action_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;          &lt;span class="c1"&gt;// e.g. "reschedule_job"&lt;/span&gt;
  &lt;span class="nx"&gt;target_resource_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;idempotency_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;      &lt;span class="c1"&gt;// required: agents retry, retries must not double-execute&lt;/span&gt;
  &lt;span class="nx"&gt;status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;               &lt;span class="c1"&gt;// pending -&amp;gt; executing -&amp;gt; completed | rolled_back&lt;/span&gt;
  &lt;span class="nx"&gt;audit_trail&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;actor&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;decision_input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;timestamp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;executeAction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;hasPermission&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;agent_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;action_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tenant_id&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;idempotency_key&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;cached_result&lt;/span&gt;   &lt;span class="c1"&gt;// no duplicate side effects&lt;/span&gt;
  &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;perform&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;audit_trail&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                  &lt;span class="c1"&gt;// every write, traceable&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;None of this shows up in a feature list. It shows up as the difference between an "AI feature" that's really a chatbot suggesting actions a human still clicks to confirm, and a system that genuinely acts, with the permission and rollback model to make that safe. Skipping the idempotency key and the audit trail is the fastest way to turn a demo into an incident once an agent is actually calling write endpoints in production.&lt;/p&gt;

&lt;p&gt;We've built this shape directly: an AI orchestrator project (internally called Fielder, a ServiceTitan-class field service platform) generated 82 database models, 343 API endpoints, and roughly 454 automated tests from a single requirements document, for about $1,609 in AI spend across 5.5 days, with conventional git history any engineer can read back. The interesting part wasn't the generation speed. It was that the permission and audit layer had to be correct on the first pass, because that's what makes an agent-driven system auditable instead of a liability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How we build for either shape&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brocoders.com" rel="noopener noreferrer"&gt;Brocoders&lt;/a&gt; runs a React, Node.js, and TypeScript stack with multi-tenant architecture as a default assumption, not a later retrofit, whether the product ends up as a SaaS dashboard or an agent-driven execution layer. Internal tooling at &lt;a href="https://bcboilerplates.com" rel="noopener noreferrer"&gt;bcboilerplates.com&lt;/a&gt; has the auth, tenancy, and permission scaffolding pre-built so a new build starts from a correct floor instead of a blank repo. We run our own DevOps rather than outsourcing infra, which matters directly here: an agent with write access to a client's production data is not a piece of infrastructure you want run by a subcontractor with no direct accountability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering checklist before you build either shape&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auth model:&lt;/strong&gt; scoped to a human session, a service account, or both? Agent actions need their own permission scope, not a shared admin key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotency:&lt;/strong&gt; does every write action carry a key that prevents duplicate execution on retry?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit trail:&lt;/strong&gt; can you reconstruct exactly what an agent did and why, after the fact?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metering:&lt;/strong&gt; if pricing is usage or outcome based, is every billable event captured reliably, including on partial failure?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenancy:&lt;/strong&gt; row-level, schema-per-tenant, or DB-per-tenant, decided before the first migration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rollback path:&lt;/strong&gt; can an agent's action be reversed if it turns out to be wrong?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API design:&lt;/strong&gt; is the action surface documented (OpenAPI or equivalent) well enough for another system, or another agent, to call it correctly?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test coverage on the action layer:&lt;/strong&gt; this is exactly the code where a silent regression causes real-world side effects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're deciding whether your next build needs a UI a human reads or an execution layer that acts, and want a second opinion on the architecture before you commit budget to the wrong one, &lt;a href="//brocoders.com"&gt;brocoders.com&lt;/a&gt; is a reasonable place to start that conversation.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>saas</category>
      <category>startup</category>
      <category>api</category>
    </item>
    <item>
      <title>The MVP Scope Line: An Engineering Framework for What Actually Ships First</title>
      <dc:creator>yulyabrocoders</dc:creator>
      <pubDate>Fri, 09 Oct 2026 07:10:20 +0000</pubDate>
      <link>https://dev.to/brocoders/the-mvp-scope-line-an-engineering-framework-for-what-actually-ships-first-4oa2</link>
      <guid>https://dev.to/brocoders/the-mvp-scope-line-an-engineering-framework-for-what-actually-ships-first-4oa2</guid>
      <description>&lt;p&gt;Most MVP scoping conversations happen at the wrong layer. A founder has 40 features in a spec and a budget for 12, so the conversation turns into a prioritization exercise: rank features, cut from the bottom. That's the wrong question. The right question is which decisions are cheap to reverse after launch and which ones aren't, and the ones that aren't (auth model, data model, access control) have to be right on day one regardless of how small the feature set is. Get the scope line wrong at that layer and no amount of post-launch iteration fixes it without a rewrite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three tiers, one decision rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every feature in a spec sorts into one of three buckets:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;Decision&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Validation core&lt;/td&gt;
&lt;td&gt;The single job that proves or disproves your hypothesis&lt;/td&gt;
&lt;td&gt;Build it well enough to actually use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deferrable layer&lt;/td&gt;
&lt;td&gt;Improvements that don't change what you learn&lt;/td&gt;
&lt;td&gt;Cut or phase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Non-negotiable floor&lt;/td&gt;
&lt;td&gt;Auth, data model, access control, the stuff that has to scale&lt;/td&gt;
&lt;td&gt;Always build, never skip&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The decision rule for sorting a feature: does removing it prevent you from answering your validation question? If yes, it's core. If the system still teaches you something without it, it's deferrable. Separately, ask whether skipping it now creates a foundation you can't retrofit later. That's the floor, and it's evaluated on its own axis, not against the validation question at all.&lt;/p&gt;

&lt;p&gt;This matters because the two axes get conflated constantly. A feature can be low-priority for validation and still be non-negotiable architecturally. Multi-tenancy is the clearest example: whether you need multiple organizations in the MVP or not, deciding your tenant isolation model (row-level, schema-per-tenant, or DB-per-tenant) before you write your first migration is a floor decision. Bolting it on after you have real customer data is a multi-week migration project, not a config change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What the floor actually looks like in code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The floor isn't a feature list, it's a set of structural commitments that show up in your schema and your middleware from the first commit, whether or not the UI in front of them is minimal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Floor decision, made before the first feature ships&lt;/span&gt;
&lt;span class="nx"&gt;User&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password_hash&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;tenant_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;        &lt;span class="c1"&gt;// present even in a single-tenant MVP&lt;/span&gt;
  &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;             &lt;span class="c1"&gt;// RBAC from day one, not "just an admin flag for now"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;Resource&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tenant_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;owner_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// every query scoped by tenant_id, enforced at the data layer,&lt;/span&gt;
  &lt;span class="c1"&gt;// not left to application code to remember&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nl"&gt;authMiddleware&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;jwt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;check&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tenant_id&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tenant_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;None of this shows up as a checkbox on a feature spec. It shows up as the difference between an MVP that survives its first successful pilot and one that needs a rebuild to onboard customer number two. AI-assisted scaffolding makes this worse if you're not watching for it: it's very good at generating a working login flow and a CRUD API, and it will happily generate both without a tenant boundary or a real role model, because nothing in the prompt asked for one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reading two real builds this way&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A telehealth MVP built in 6 weeks had one validation question: will doctors and patients actually complete a consultation through this flow, end to end? The core was booking through consultation completion. The floor was secure patient data handling, real authentication (not a shared demo login), and a data model built to add specialties and billing later without a rewrite. Everything else, specialty-specific workflows, billing integrations, admin analytics, got deferred.&lt;/p&gt;

&lt;p&gt;A route-management SaaS built over 3.5 months had a different core: a field collector's daily loop of planning a route and logging revenue against it. The floor included a data model that could support both a web dashboard and a mobile field app against the same API from day one, because the validation question required both surfaces to be real, not a prototype of one. Route optimization logic shipped; AI-driven suggestions and payment processing got deferred to the next phase.&lt;/p&gt;

&lt;p&gt;Same framework, different core, same non-negotiable floor category, different specifics. That's the pattern worth taking from both: the floor isn't smaller because the timeline is short. It's the one thing that doesn't shrink.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How we build to this framework&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brocoders.com" rel="noopener noreferrer"&gt;Brocoders&lt;/a&gt; runs a React, Node.js, and TypeScript stack with multi-tenant architecture treated as a floor decision by default, not something we ask about after the first version ships. Internal tooling at &lt;a href="https://bcboilerplates.com" rel="noopener noreferrer"&gt;bcboilerplates.com&lt;/a&gt; has the auth, RBAC, and tenancy scaffolding pre-built, so a new MVP starts from a floor that's already correct instead of a blank repo. We run our own DevOps rather than handing infra to a subcontractor, which matters when the floor includes production-grade access control from week one, not week twelve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering checklist for scoping an MVP&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auth model:&lt;/strong&gt; is it real (OAuth/JWT with proper session handling), or a placeholder login that will need replacing?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenancy decision:&lt;/strong&gt; row-level, schema-per-tenant, or DB-per-tenant, decided before the first migration, not after the second customer signs up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access control:&lt;/strong&gt; is role/permission logic enforced at the data layer, or trusted to application code to remember every time?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data model longevity:&lt;/strong&gt; does the schema support the next two phases without a migration that locks out live users?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD from day one:&lt;/strong&gt; even a 6-week MVP needs an automated pipeline; hand-deploys don't scale past the first customer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test coverage on the floor, not just the core:&lt;/strong&gt; auth and access control are exactly the code you don't want regression bugs in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API documentation:&lt;/strong&gt; is there an OpenAPI spec or Postman collection, or does the next engineer have to read the route handlers to find out what's available?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repo and code ownership:&lt;/strong&gt; can you audit the codebase before you scale hiring or hand off to an internal team?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're scoping an MVP and want a second opinion on where your floor actually sits before you commit engineering budget to the wrong layer, &lt;a href="//brocoders.com"&gt;brocoders.com&lt;/a&gt; is a reasonable place to start that conversation.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>startup</category>
      <category>saas</category>
      <category>devops</category>
    </item>
    <item>
      <title>AI in Construction: What Engineers Should Know Before Building on Top of a Chatbot</title>
      <dc:creator>yulyabrocoders</dc:creator>
      <pubDate>Wed, 30 Sep 2026 06:17:55 +0000</pubDate>
      <link>https://dev.to/brocoders/ai-in-construction-what-engineers-should-know-before-building-on-top-of-a-chatbot-2li3</link>
      <guid>https://dev.to/brocoders/ai-in-construction-what-engineers-should-know-before-building-on-top-of-a-chatbot-2li3</guid>
      <description>&lt;p&gt;Ask a construction firm what their "AI strategy" looks like and most will describe the same thing: someone opened ChatGPT, pasted a spec section, and asked a question. That's not an integration. It's a prompt with no memory, no source, and no connection to anything else the company runs.&lt;/p&gt;

&lt;p&gt;The reason this stalls isn't the model. It's that a raw chatbot has no retrieval layer, no write access to your systems of record, and no way to point back to the document a claim came from. In RAG terms: there's no index, so there's nothing to ground the answer in. For a support ticket, a wrong answer is an inconvenience. For a submittal or a code-compliance question, a confident, ungrounded answer is a liability. RICS' 2025 survey of 2,200+ construction professionals found 45% of firms have zero AI implementation and under 1% have it running org-wide, and generic chatbots are a big part of why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The engineering evaluation framework&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before scoping any AI build for an operations-heavy client, we run it against four signals. They're really just a restatement of "is this a system or a demo":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Document literacy:&lt;/strong&gt; can it actually parse specs, RFIs, submittals, ITPs, and drawings, or does it only work well on typed-in questions? A tool that can't ingest real document sets is a chat UI, not a solution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System integration:&lt;/strong&gt; does it read and write against Procore, your BIM environment, or your ERP, or does it live in a browser tab nobody reopens after week one?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Answer traceability:&lt;/strong&gt; can every response cite the source document it came from? This is the line between a tool you can trust and a hallucination machine with a nice UI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow fit:&lt;/strong&gt; does it slot into the existing bid-to-preconstruction-to-construction-to-closeout flow, or does it force a new process on top of the one people already use?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Generic chatbots fail all four, not because the underlying model is weak, but because a consumer product and an industrial workflow have different requirements by design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The architecture that actually satisfies signal 3&lt;/strong&gt;&lt;br&gt;
Source traceability is the one teams skip, and it's the one that matters most in a regulated, liability-heavy industry. The pattern is standard RAG, but the details (chunking strategy, metadata, and citation enforcement) are where it either works or doesn't:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ingest(document) -&amp;gt; parse -&amp;gt; chunk(with page/section metadata)
                  -&amp;gt; embed -&amp;gt; upsert(vector_store, metadata)

query(user_question) -&amp;gt; embed(query)
                      -&amp;gt; retrieve(top_k, vector_store)
                      -&amp;gt; filter(by project_id, doc_type, revision)
                      -&amp;gt; generate(llm, context=retrieved_chunks)
                      -&amp;gt; response { answer, sources: [{doc_id, page, revision}] }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two details matter more than the model choice: the revision field on every chunk (so a superseded drawing doesn't get cited as current), and refusing to generate an answer when retrieval returns nothing above a confidence threshold, instead of letting the model fill the gap from its own training data. AskAC.ai, one of the systems built on this pattern, indexes 4,000+ product manuals this way and reports zero invented answers because every response is required to carry a source.&lt;/p&gt;

&lt;p&gt;The integration layer is the unglamorous half of the work. Crunch IS, building AI tooling for general contractors, put it plainly: the hard part wasn't the model, it was "understanding Procore's data model, the specific document types and SLA structures... and the failure modes, version conflicts, misclassified submittals, broken audit trails, that create real business risk." Their document-routing implementation cut turnaround 70-80% for one contractor, but only after that data-model work was done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where the data backs this up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AGC's 2026 outlook shows AI deployment concentrated in back-office work: 45% office/admin, 23% estimating, 20% design/preconstruction, only 12% safety and field operations, the area under the most labor pressure and the least AI investment. That's consistent with the architecture point above: back-office systems already have structured data to index. Field data usually doesn't, yet, which is exactly why "up to 85% of AI project failures trace back to poor data quality," per industry data on construction losses (roughly $1.8T globally in 2020, with 14% of preventable rework tied to data problems).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How we build this&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brocoders.com" rel="noopener noreferrer"&gt;Brocoders&lt;/a&gt; hasn't shipped a single "construction platform." We've repeatedly built the retrieval-and-integration layer above for operations-heavy clients on a React, Node.js, and TypeScript stack, with multi-tenant architecture as the default rather than something bolted on later. Internal tooling at &lt;a href="https://bcboilerplates.com" rel="noopener noreferrer"&gt;bcboilerplates.com&lt;/a&gt; removes most of the boilerplate decisions (auth, tenancy, CI/CD scaffolding) so engineering time goes into the domain modeling that actually differentiates a build. The JBStarSight reconciliation engine, for instance, reads freight contracts and flags underpayments humans miss at scale. We run our own DevOps rather than subbing it out, which matters when the pipeline touches client systems of record. On a recent AI-native build, that setup produced a full field-operations platform (82 database models, 343 API endpoints, 454 automated tests) from a single requirements doc in about 5.5 days, with a senior architect structuring the system and every generated piece inspectable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering checklist for evaluating (or building) construction AI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ingestion coverage:&lt;/strong&gt; does it parse PDFs, scanned drawings, and spreadsheets, or just clean text?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenancy model:&lt;/strong&gt; row-level, schema-per-tenant, or DB-per-tenant, and does that match your client isolation requirements?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retrieval grounding:&lt;/strong&gt; is every answer required to cite a source, with no fallback to model memory?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revision handling:&lt;/strong&gt; does the index know which drawing or spec version is current?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System write access:&lt;/strong&gt; can it push back into Procore/ERP, or is it read-only?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI/CD and test coverage:&lt;/strong&gt; is there an automated pipeline validating changes before they touch production data?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API documentation:&lt;/strong&gt; OpenAPI spec or Postman collection, so integration isn't reverse-engineered?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code and repo ownership:&lt;/strong&gt; can you audit the codebase pre-launch, or is it a black box?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this is exotic. It's the same rigor any production system gets, applied to a domain that's mostly been getting chatbot demos instead.&lt;/p&gt;

&lt;p&gt;If you're scoping an architecture-heavy build, construction or otherwise, and want a second opinion on the data and integration layer before committing budget, &lt;a href="//brocoders.com"&gt;brocoders.com&lt;/a&gt; is a reasonable place to start that conversation.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>api</category>
      <category>devops</category>
      <category>saas</category>
    </item>
    <item>
      <title>What Engineers Should Check Before a Vibe-Coded Prototype Goes to Production</title>
      <dc:creator>yulyabrocoders</dc:creator>
      <pubDate>Wed, 23 Sep 2026 08:06:55 +0000</pubDate>
      <link>https://dev.to/brocoders/what-engineers-should-check-before-a-vibe-coded-prototype-goes-to-production-2c35</link>
      <guid>https://dev.to/brocoders/what-engineers-should-check-before-a-vibe-coded-prototype-goes-to-production-2c35</guid>
      <description>&lt;p&gt;A demo answers one question: does this look right when I click through the path I already planned to click through. It says nothing about whether access control is enforced at the data layer, whether a webhook verifies its signature, or whether two users hitting the same action at once corrupts a record. Those are exactly the parts of a vibe-coded app that never show up in a demo, because no single prompt that generated the app had visibility into the whole data model or the permission logic behind it. Each prompt optimizes for what's in front of it. Nothing enforces a plan across prompts.&lt;/p&gt;

&lt;p&gt;That's the actual mechanism behind what researchers studying AI-assisted development call the flow-debt trade-off: the same fast, low-effort generation that makes a weekend prototype possible is what produces the debt, baked in from the first prompt. A broken vibe-coded app looks identical to a healthy one on the surface, because AI is good at making individual screens look right. It's usually less coherent underneath.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this isn't a hypothetical&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By the end of 2025, roughly 41% of all code written globally was AI-generated, and GitHub Copilot alone writes close to 46% of the average developer's code. At scale, that shows up as a real number: of the roughly 10,000 startups that tried to ship AI-built apps this way over the past year, more than 8,000 now need partial rebuilds or rescue engineering, at $50,000 to $500,000 each, according to two independent 2026 analyses.&lt;/p&gt;

&lt;p&gt;Security researchers at Escape.tech scanned 5,600 live, publicly deployed vibe-coded apps and found more than 2,000 high-impact vulnerabilities and 400 exposed secrets. Roughly one in three shipped with a serious, exploitable flaw, most often missing access control or an unvalidated webhook. And the cost compounds while you wait: every month spent adding features on top of an unaudited foundation adds an estimated 20-30% to the eventual rebuild bill, because each new feature creates another dependency on the exact structure that will need to be untangled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A per-module audit, not a pass/fail on the whole app&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most hardening advice treats the prototype as one unit: add tests, add monitoring, ship. That wastes budget proving the parts that are already fine are fine, and it risks missing the two modules that will actually corrupt customer data in month three. The fix is auditing module by module and assigning one of three verdicts:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Typical effort&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Keep&lt;/td&gt;
&lt;td&gt;Logic is sound, data model supports what's next&lt;/td&gt;
&lt;td&gt;None, ship as is&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fix in place&lt;/td&gt;
&lt;td&gt;Structure is right, specific pieces are missing (auth, webhook validation, error handling)&lt;/td&gt;
&lt;td&gt;Days, senior engineer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rebuild&lt;/td&gt;
&lt;td&gt;Data model can't support the next phase, or the security gap exposes real users now&lt;/td&gt;
&lt;td&gt;Weeks, rare, usually 2-3 modules&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;As a check you can actually run against a module:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;auditModule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;checks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;authOnEveryRoute&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;hasAuthMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;rowLevelAccessControl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;enforcesTenantScoping&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataAccess&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;webhooksVerifySignature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;webhooks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;every&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;w&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;w&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;verifiesSignature&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;noHardcodedSecrets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;scanForSecrets&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;source&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;dataModelSupportsNextPhase&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataModel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;supports&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;roadmap&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;nextPhase&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;checks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataModelSupportsNextPhase&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rebuild&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;checks&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;every&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Boolean&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;keep&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fix-in-place&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// patch the specific failing checks, architecture stays&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The branch that matters is the first one. If the data model itself can't hold what the product needs next, no amount of patching individual checks saves it. Everything else, a missing auth check, an unverified webhook, is a days-long fix that doesn't touch the architecture at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this looks like on a real module&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One case we've seen directly: a logistics client's carrier payment reconciliation flow, prototyped in V0 and then Replit before the real build started. It looked right in the demo. It fell apart the moment real data hit it, fifty-plus columns, inconsistent status labels across screens, and rounding rules scattered across components instead of centralized in one place. That's not a bug you patch, it's a data model that was never built to be the single source of truth for money. Knowing that at week two instead of month twelve is the entire point of running the audit per module instead of trusting the demo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How we approach this&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brocoders.com" rel="noopener noreferrer"&gt;Brocoders&lt;/a&gt; runs the same Keep, Fix, Rebuild audit whether we're starting from a blank page or taking over someone else's prototype, on a React, Node.js, and TypeScript stack with multi-tenant architecture treated as a default requirement, not something discovered missing during the audit. Internal tooling at &lt;a href="https://bcboilerplates.com" rel="noopener noreferrer"&gt;bcboilerplates.com&lt;/a&gt; gives new builds a correct auth and tenancy floor from day one, so fewer modules need a "fix in place" verdict later. Senior architects own the structure, AI handles the fast parts, and every generation gets checked for security gaps before it reaches customers. We run our own DevOps end to end rather than handing infrastructure to a subcontractor, which matters directly when the audit's findings include exposed secrets or unscoped data access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checklist for auditing a vibe-coded prototype&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auth on every protected route&lt;/strong&gt;, not just the ones you remembered to click through in the demo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row-level access control&lt;/strong&gt;, enforced at the data layer, not left to application code to remember on each query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Webhook signature verification on every inbound webhook&lt;/strong&gt;, not just the ones with obvious external exposure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secret scanning&lt;/strong&gt; across the full repo, including config files and old commits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tenant isolation support&lt;/strong&gt; in the data model, decided explicitly, not defaulted into by accident&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error handling beyond the happy path&lt;/strong&gt;, specifically the paths no one clicked through in the demo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A verdict per module&lt;/strong&gt;, not one pass/fail for the whole app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your prototype passed the demo and you want a second opinion on which modules are actually fine before you build more on top of them, &lt;a href="//brocoders.com"&gt;brocoders.com&lt;/a&gt; is a reasonable place to start that audit.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>devops</category>
      <category>startup</category>
      <category>ai</category>
    </item>
    <item>
      <title>The LLM Is Not Your Ranker. Four Layers, and It Only Touches Two</title>
      <dc:creator>yulyabrocoders</dc:creator>
      <pubDate>Mon, 21 Sep 2026 06:19:00 +0000</pubDate>
      <link>https://dev.to/brocoders/the-llm-is-not-your-ranker-four-layers-and-it-only-touches-two-2hb4</link>
      <guid>https://dev.to/brocoders/the-llm-is-not-your-ranker-four-layers-and-it-only-touches-two-2hb4</guid>
      <description>&lt;p&gt;The pitch usually goes: send the catalog and the user's history to a model, get back a ranked list, delete the recommender. It demos beautifully on 200 items and falls over the moment the catalog has 400,000 and the response has 80 milliseconds to come back.&lt;/p&gt;

&lt;p&gt;The 2026 research doesn't support the replacement story either. RecoChain (arxiv 2604.25787) proposes unified generative retrieval and ranking, then evaluates it against classic top-k ranking metrics, because the measurement requirement doesn't go away. RRCM (arxiv 2605.07129) frames LLM recommendation as retrieval-and-reasoning, where the model decides when to pull more evidence and optimization still runs against the final ranking reward, not against the quality of the model's prose.&lt;/p&gt;

&lt;p&gt;Which puts the LLM inside two layers of a four-layer stack, not on top of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The four layers&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data and features.&lt;/strong&gt; User events, item metadata, collaborative signals. Both papers above assume this layer is solid before anything generative gets added. It is also where roughly 80% of the project effort actually goes, whether you build or buy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Candidate retrieval.&lt;/strong&gt; Cut millions of items to a few hundred. Hybrid by default: a collaborative path plus a metadata and embedding path, usually pgvector or a managed equivalent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ranking.&lt;/strong&gt; A deterministic model that scores and orders the shortlist. This is the layer with offline and online evaluation attached, and it's the one you're actually shipping.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feedback and experimentation.&lt;/strong&gt; Clicks, conversions, saves, return visits, flowing back into layer 1.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The LLM spans layers 2 and 3. It does semantic feature extraction, and it decides what evidence to retrieve. It does not emit the final ordering.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why the latency budget forces this&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Work backwards from a 100ms p99 for the whole call and the architecture stops being a matter of taste:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;request
 ├─ 5ms   feature fetch        (user vector, recent events, cached)
 ├─ 20ms  retrieval, parallel
 │         ├─ collaborative: ANN over user-item embeddings  → 200 candidates
 │         └─ metadata:      pgvector + hard filters        → 200 candidates
 │        union, dedupe                                     → ~300
 ├─ 35ms  ranking: one batched scoring pass over ~300 rows
 ├─ 10ms  business rules: diversity, in-stock, dedupe by brand
 └─ 5ms   assemble + log the impression
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is no room in that budget for a generative call in the hot path. So the LLM runs where it can be precomputed or cached: item embeddings generated at ingestion, query understanding cached per distinct query, an evidence-selection decision made asynchronously and reused. When it truly must run per-request, it runs against a shortlist of tens, not the catalog, and behind a timeout with a deterministic fallback.&lt;/p&gt;

&lt;p&gt;That fallback matters more than the feature. A recommendation strip that degrades to a popularity-ranked list under load is fine. One that returns nothing because a model call hung is a broken page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Log impressions, not just clicks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The single most common data-layer mistake: recording what users clicked without recording what they were shown.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;impression:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;request_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;item_ids&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;positions&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
              &lt;/span&gt;&lt;span class="err"&gt;ranker_version&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;retrieval_source&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;interaction:&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;request_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;item_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;ts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without the impression row you cannot compute a click-through rate, cannot correct for position bias, and cannot run a counterfactual evaluation of a new ranker against logged traffic. You are left with online A/B tests as the only way to learn anything, which is slow and expensive. retrieval_source per item matters too: when quality drops you need to know whether the collaborative path or the embedding path produced the bad candidate.&lt;/p&gt;

&lt;p&gt;Offline metrics worth wiring from the start: recall@k for retrieval (did the item the user eventually chose make the shortlist at all?) and NDCG@k for ranking. These answer different questions and a lot of teams conflate them. A ranking model cannot fix a candidate set that never contained the right item.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommendation versus matching&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A recommendation engine ranks items for one user. A matching engine pairs two sides of a marketplace: buyer and seller, designer and client, shift and worker.&lt;/p&gt;

&lt;p&gt;Same four layers. Two differences worth planning for. Matching has mutual constraints, so a candidate has to clear both sides' filters, which means the retrieval layer runs twice and intersects. And matching usually has supply exhaustion: recommending the same top-rated contractor to 400 buyers produces 399 disappointments, so the ranking layer needs a fairness or throttling term that pure item recommendation doesn't.&lt;/p&gt;

&lt;p&gt;Build order, from zero&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Event pipeline and profiles first.&lt;/strong&gt; Nothing downstream works without it and it's the longest pole.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid candidate generator.&lt;/strong&gt; Collaborative plus metadata and embeddings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ranking with real evaluation,&lt;/strong&gt; offline and online, before any tuning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Controlled LLM usage last,&lt;/strong&gt; for context construction and retrieval decisions only.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Teams that invert this ship a demo in week two and spend month four discovering they have no way to tell whether it works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build or buy&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;SaaS&lt;/th&gt;
&lt;th&gt;Custom&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;~$25/mo, rising past $1,000/mo with catalog and traffic&lt;/td&gt;
&lt;td&gt;$70k to $400k+ upfront, or $50k to $150k scoped; 10 to 15% annual maintenance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You own&lt;/td&gt;
&lt;td&gt;Layers 3 and 4, partially&lt;/td&gt;
&lt;td&gt;All four&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Behavioral data&lt;/td&gt;
&lt;td&gt;Vendor holds it&lt;/td&gt;
&lt;td&gt;Yours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time to first result&lt;/td&gt;
&lt;td&gt;Days&lt;/td&gt;
&lt;td&gt;8 to 12 weeks for an MVP loop&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The real axis is who holds the behavioral data. If those signals are the product's differentiation, renting layers 1 and 2 means renting the moat. If recommendations are a convenience feature on someone else's core product, SaaS is the correct answer and the architecture above still tells you what you're renting.&lt;/p&gt;

&lt;p&gt;Either way the 80% data-preparation share doesn't move. Buying changes who runs the layers, not whether they exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checklist&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Impressions logged&lt;/strong&gt; with positions, ranker version, and retrieval source per item&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;recall@k for retrieval and NDCG@k for ranking,&lt;/strong&gt; measured separately&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latency budget written down&lt;/strong&gt; per stage, with p99 targets, before the first model choice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic fallback&lt;/strong&gt; on every model call, behind a timeout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM work precomputed or cached&lt;/strong&gt; at ingestion and query level, never per-item in the hot path&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cold start path&lt;/strong&gt; for new users and new items, since embeddings alone won't cover it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diversity and dedupe rules&lt;/strong&gt; as an explicit post-ranking stage, not baked into the model&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supply fairness term&lt;/strong&gt; if it's a matching engine, not a recommender&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Holdout traffic&lt;/strong&gt; reserved permanently, so you can always answer "versus nothing"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ranker version pinned&lt;/strong&gt; in every log row, so an A/B result is attributable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;One note on claims&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The vendor marketing in this category is unusually bad. "3% to 45% conversion lift" with no baseline, no methodology, and no named company is not a benchmark. If you haven't measured a number on your own traffic, saying so is a trust signal rather than a weakness, and it's a reasonable thing to expect from a partner too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're scoping one&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The order matters more than the model choice: data pipeline, then retrieval, then a ranking layer you can evaluate, then generative components under control. That's the conversation worth having before anyone picks a vector database. &lt;a href="//brocoders.com"&gt;brocoders.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>api</category>
      <category>node</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Why 92% of Proptech AI Pilots Never Reach Production (An Engineering Postmortem)</title>
      <dc:creator>yulyabrocoders</dc:creator>
      <pubDate>Tue, 01 Sep 2026 09:27:25 +0000</pubDate>
      <link>https://dev.to/brocoders/why-92-of-proptech-ai-pilots-never-reach-production-an-engineering-postmortem-2fk7</link>
      <guid>https://dev.to/brocoders/why-92-of-proptech-ai-pilots-never-reach-production-an-engineering-postmortem-2fk7</guid>
      <description>&lt;p&gt;A pilot that reads from a CSV export and a production system that reads from a 1998 property management database are not the same project. They share a UI. They share nothing else.&lt;/p&gt;

&lt;p&gt;That distinction explains most of what happened in proptech this year. AI adoption among property management companies jumped from 20% to 58%. Fully automated processes: 8%. In commercial real estate, 92% of firms ran an AI pilot and 5% hit all their goals. MIT put out a report in August 2025 saying 95% of generative AI pilots produced no profit at all.&lt;/p&gt;

&lt;p&gt;Read those numbers as an engineer and the story stops being about models. Pilots run against clean, hand-prepared data in a sandbox with no auth boundary, no audit trail, and no write path back into the system of record. Production needs all four. Nobody scoped the four.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where the pilot-to-production gap actually opens&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The survey answers line up with what you'd guess from a system diagram. 76% name change management and training as the primary barrier, 25% cite integration, 25% budget, 28% legacy system limitations, and 49% report data leaks from missing information.&lt;/p&gt;

&lt;p&gt;That last one deserves a second look. "Data leaks from missing information" is survey language for a broken contract: the new tool expects a field the source system never populated, so records fall out of the pipeline silently. It's a nullable column nobody modeled. It shows up as a business problem six months after it started as a schema problem.&lt;/p&gt;

&lt;p&gt;73% of proptech tools need to connect to something that already exists. So integration isn't a phase of the project. It is the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The five technical questions to answer before signing anything&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not a maturity model. Just the five that predict whether the thing ships.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What is the read path out of the system of record?&lt;/strong&gt; A vendor API with documented endpoints, a nightly database replica, an ODBC connection, or a human exporting spreadsheets. Only the first two survive contact with production. If the answer is the fourth, the pilot is a demo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What is the write path back?&lt;/strong&gt; Most proptech pilots are read-only, which is why they demo well and automate nothing. Automation means writing to the source of truth. Ask who owns that write, what validates it, and what happens on conflict.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What is the entity resolution strategy?&lt;/strong&gt; Property management data has the same unit represented three ways across accounting, maintenance, and leasing. Deduplication is a real subsystem, not a data-cleaning task assigned to an intern.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What is the identity model?&lt;/strong&gt; Multi-org, multi-property, and role-scoped down to the individual unit. A property manager sees 40 buildings; a resident sees one door. Getting this wrong late means retrofitting authorization through every query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who owns the repo, and can you audit it before launch?&lt;/strong&gt; Test coverage, OpenAPI spec, deployment scripts. If the answer is "the vendor," you've bought a rental, not an asset.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;A pattern that survives legacy: read-side integration first&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The lowest-risk architecture for proptech built on top of decade-old systems is not a migration. It's a read replica plus a projection layer, with writes deferred to phase two.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Legacy PM system (source of truth)
        │
        ▼  CDC / scheduled pull  (read-only credentials)
  Staging tables (raw, untransformed, append-only)
        │
        ▼  normalization + entity resolution
  Canonical model: org → property → unit → lease → resident
        │
        ▼
  API layer (versioned, OpenAPI-documented)
        │
        ├── new web app
        └── AI / automation workers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two things make this work. The staging tables stay raw and append-only, so a bad transform is replayable instead of fatal. And the canonical model is the only thing downstream code knows about, so when the legacy schema changes, one layer breaks instead of the whole app.&lt;/p&gt;

&lt;p&gt;On the multi-tenancy question underneath it: row-level isolation with a tenant ID on every table, enforced at the query layer, handles the overwhelming majority of property management workloads. Schema-per-tenant looks safer and turns every migration into an N-times operation. Reach for DB-per-tenant only when a contract or a regulator requires physical separation.&lt;/p&gt;

&lt;p&gt;The write path comes later, gated behind an explicit reconciliation job that compares canonical state against the legacy source before anything is pushed back. Slower. Also the reason the project is still running in year two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this looks like when it works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brocoders.com" rel="noopener noreferrer"&gt;Brocoders&lt;/a&gt; built a hybrid web app for C.I.A. Services, an HOA management company running 30 years of accumulated systems across 150 associations and roughly 50,000 properties. The system pulls live data from their existing property management stack. No infrastructure replacement, no migration cutover, no big-bang rewrite. The legacy system stays the source of truth and the new app reads from it.&lt;/p&gt;

&lt;p&gt;CondoGenie went the other direction, built from scratch, with structured data integration treated as a first-class concern from the first schema design rather than bolted on after launch.&lt;/p&gt;

&lt;p&gt;Different starting points, same principle: the integration boundary is designed before the feature list.&lt;/p&gt;

&lt;p&gt;Our stack for this work is React, Node.js, and TypeScript, with our own DevOps rather than outsourced infra, and &lt;a href="https://bcboilerplates.com" rel="noopener noreferrer"&gt;bcboilerplates.com&lt;/a&gt; handling the boilerplate decisions so the early sprints go into the domain model instead of auth scaffolding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering checklist before you fund a proptech build&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auth:&lt;/strong&gt; OAuth2 or JWT with refresh rotation, and a role model that already accounts for org, property, unit, and resident scopes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenancy:&lt;/strong&gt; row-level isolation by default; document explicitly why if you're choosing otherwise&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legacy read path:&lt;/strong&gt; documented API or replica access, credentials issued and tested before the contract is signed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idempotency:&lt;/strong&gt; every sync job safe to re-run, every write keyed so retries can't double-post&lt;/li&gt;
&lt;li&gt;CI/CD: automated tests and migrations running in a pipeline the client can execute themselves&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test coverage:&lt;/strong&gt; integration tests against a legacy-shaped fixture, not just unit tests on the happy path&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API docs:&lt;/strong&gt; OpenAPI spec generated from code, not maintained by hand in a wiki&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observability:&lt;/strong&gt; row counts and reconciliation deltas per sync, alerting on drift, because silent data loss is the failure mode here&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handoff:&lt;/strong&gt; repo access, runbook, and a documented rollback for every migration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;One more number worth sitting with&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;78% of property managers still verify rental applications manually, while 56% report application fraud in the past year. Automated document verification has existed for years. The technology isn't the constraint. Nobody wired it into the workflow people actually use.&lt;/p&gt;

&lt;p&gt;That's the whole 2026 story in one line. The models are fine. The plumbing is the work.&lt;/p&gt;

&lt;p&gt;If you're scoping a build where the hard part is integration with systems you can't replace, that's the conversation worth having early rather than after the pilot stalls. &lt;a href="https://brocoders.com" rel="noopener noreferrer"&gt;brocoders.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>api</category>
      <category>saas</category>
      <category>webdev</category>
    </item>
    <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://dev.to/brocoders/types-of-qa-testing-a-comprehensive-guide-47b3</link>
      <guid>https://dev.to/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://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foco4ffpvkf5nr7t0vspp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foco4ffpvkf5nr7t0vspp.png" alt=" " 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://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70isaklx56oqmb63yb0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70isaklx56oqmb63yb0n.png" alt=" " 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://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faj80sljawcglc5afxut1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faj80sljawcglc5afxut1.png" alt=" " width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx19ytqje6dnhk1fkqul6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx19ytqje6dnhk1fkqul6.png" alt=" " 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://dev.to/brocoders/react-vs-vue-js-an-in-depth-overview-of-their-main-differences-59ha</link>
      <guid>https://dev.to/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://dev.to/brocoders/how-to-hire-react-native-developer-a-guide-for-the-founder-2419</link>
      <guid>https://dev.to/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://dev.to/brocoders/react-vs-angular-who-wins-the-competition-30o2</link>
      <guid>https://dev.to/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://dev.to/brocoders/progressive-web-apps-vs-native-apps-which-one-is-the-best-for-your-business-389p</link>
      <guid>https://dev.to/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>
  </channel>
</rss>
