<?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: Adil Soukaini | Full-Stack Developer</title>
    <description>The latest articles on DEV Community by Adil Soukaini | Full-Stack Developer (@adilsoukaini).</description>
    <link>https://dev.to/adilsoukaini</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%2Fuser%2Fprofile_image%2F4191220%2F9c0911a4-b986-40b3-b71f-e3d987fb89ef.jpg</url>
      <title>DEV Community: Adil Soukaini | Full-Stack Developer</title>
      <link>https://dev.to/adilsoukaini</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adilsoukaini"/>
    <language>en</language>
    <item>
      <title>AI Coding Assistants and Productivity: What the Research Actually Says</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Sat, 07 Nov 2026 09:00:04 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/ai-coding-assistants-and-productivity-what-the-research-actually-says-44</link>
      <guid>https://dev.to/adilsoukaini/ai-coding-assistants-and-productivity-what-the-research-actually-says-44</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/ai-coding-assistants-productivity-research" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The research on AI coding assistants does not give one number. Controlled experiments on well-defined tasks show large speedups (55% faster in GitHub's 2022 study), field experiments in companies show a smaller but real gain (about 26% more completed tasks), and the best-known randomised trial on experienced developers working in their own large codebases found they were 19% slower with AI. At team level, Google's DORA research finds more throughput but less stability.&lt;/p&gt;

&lt;p&gt;Here is what each major study measured, why they disagree, and how to use the evidence when you plan a roadmap or judge a developer's estimates.&lt;/p&gt;

&lt;h2&gt;
  
  
  The main studies, side by side
&lt;/h2&gt;

&lt;h3&gt;
  
  
  GitHub's controlled experiment (2022)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.blog/news-insights/research/research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; asked 95 professional developers to write an HTTP server in JavaScript. Those using Copilot finished in 1 hour 11 minutes on average, against 2 hours 41 minutes without it: 55% faster. 78% of the Copilot group completed the task, against 70% without. This is the source of the often-quoted "55%" figure. It measured one greenfield, clearly specified task, which is close to the best case for an assistant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Field experiments at Microsoft, Accenture and a Fortune 100 company
&lt;/h3&gt;

&lt;p&gt;A team of economists (Cui, Demirer, Jaffe, Musolff, Peng and Salz) randomly gave some developers access to an AI coding assistant in their normal jobs. Across the three experiments and &lt;a href="https://www.microsoft.com/en-us/research/?p=1148213" rel="noopener noreferrer"&gt;4,867 developers&lt;/a&gt;, the tool led to a 26.08% increase (standard error 10.3%) in completed tasks. Less experienced developers adopted the tool more and gained more.&lt;/p&gt;

&lt;h3&gt;
  
  
  METR's randomised trial with experienced open-source developers (2025)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;METR&lt;/a&gt; recruited 16 experienced developers from large open-source repositories they already maintained. Each of 246 real issues (about two hours each) was randomly assigned to "AI allowed" or "AI not allowed". The main tool was Cursor Pro with Claude 3.5/3.7 Sonnet. With AI, tasks took 19% longer. Before starting, the developers expected a 24% speedup; after finishing, they still believed AI had sped them up by 20%. METR is careful to say the result does not show AI fails everywhere, only that it slowed these developers on this kind of work at that time.&lt;/p&gt;

&lt;h3&gt;
  
  
  METR's follow-up (February 2026)
&lt;/h3&gt;

&lt;p&gt;METR ran a larger study from August 2025 with &lt;a href="https://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;57 developers, 143 repositories and more than 800 tasks&lt;/a&gt;. The estimated speedup was 18% for returning developers (confidence interval from a 38% speedup to a 9% slowdown) and 4% for newly recruited ones (from 15% faster to 9% slower). METR itself calls this an unreliable signal: many developers refused to take part because they did not want to work without AI, 30% to 50% avoided submitting tasks they expected AI to speed up a lot, and pay dropped from $150 to $50 an hour. METR is changing its study design rather than publishing a headline number.&lt;/p&gt;

&lt;h3&gt;
  
  
  Google's DORA report (2025)
&lt;/h3&gt;

&lt;p&gt;The &lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/dora-report-2025/" rel="noopener noreferrer"&gt;2025 DORA report&lt;/a&gt; surveyed nearly 5,000 technology professionals. AI adoption reached 90%, with a median of two hours a day spent working with AI. Over 80% said AI improved their productivity and 59% said it improved code quality. On delivery metrics, &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;Google's DORA team&lt;/a&gt; found a positive relationship between AI adoption and software delivery throughput, but AI adoption "does continue to have a negative relationship with software delivery stability."&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the gains show up
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-contained, well-specified tasks&lt;/strong&gt;, like the HTTP server in the GitHub experiment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Less experienced developers&lt;/strong&gt;, who gained the most in the field experiments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team throughput&lt;/strong&gt;: DORA links AI adoption to teams shipping more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer sentiment&lt;/strong&gt;: in the &lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;2025 Stack Overflow survey&lt;/a&gt;, 84% of respondents were using or planning to use AI tools, and 60.7% viewed them favourably.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where they don't
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Experts in large codebases they know well&lt;/strong&gt;, the METR 2025 setting. Context, conventions and quality standards that live in a maintainer's head are hard to hand to a model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stability.&lt;/strong&gt; DORA's explanation is that AI increases change volume, and "without robust control systems, like strong automated testing, mature version control practices, and fast feedback loops, an increase in change volume leads to instability."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Almost right" code.&lt;/strong&gt; 66% of Stack Overflow respondents named "AI solutions that are almost right, but not quite" as their top frustration, and 45.7% distrust the accuracy of AI output against 32.3% who trust it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-assessment.&lt;/strong&gt; METR's developers felt 20% faster while measuring 19% slower. Opinions about AI speed are not evidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why the studies disagree
&lt;/h2&gt;

&lt;p&gt;They measure different things. GitHub timed one task. The field experiments counted completed tasks in developers' day-to-day work. METR timed real issues in mature projects, with screen recordings. DORA relies on surveys linked to delivery metrics. The populations differ too (professionals on a test task, employees at large companies, open-source maintainers), as do the tools, which have improved quickly between 2022 and 2026. None of these studies is wrong; they answer different questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for your product team
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Measure delivery, not impressions.&lt;/strong&gt; Track how long changes take to reach production, how often you deploy, how often a release breaks something, and how much work gets redone. If you work with a remote developer, a &lt;a href="https://shipfastdev.com/blog/weekly-releases-with-a-remote-developer" rel="noopener noreferrer"&gt;weekly release rhythm&lt;/a&gt; makes these numbers visible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Put tests and CI in place before pushing more AI-generated code.&lt;/strong&gt; DORA's finding on stability is a direct warning. Automated end-to-end tests, such as the Playwright setup we describe here, are the kind of control system it refers to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't cut estimates in half because of a vendor figure.&lt;/strong&gt; A realistic planning assumption sits somewhere between the field-experiment gain and no gain at all, depending on the codebase and the developer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Budget review time.&lt;/strong&gt; More code means more to review, and AI-generated code has its own &lt;a href="https://shipfastdev.com/blog/ai-generated-code-security-risks" rel="noopener noreferrer"&gt;security failure patterns&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch for debt.&lt;/strong&gt; Code that is "almost right" and merged anyway becomes technical debt.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do AI coding assistants make developers faster?
&lt;/h3&gt;

&lt;p&gt;Often, but not always. Studies range from 55% faster on a single controlled task to 26% more completed tasks in company field experiments, while METR's 2025 trial found experienced developers 19% slower in their own large codebases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Did the METR study show AI slows developers down?
&lt;/h3&gt;

&lt;p&gt;For 16 experienced open-source maintainers working on their own repositories in early 2025, yes: tasks took 19% longer. METR does not generalise this to all developers, and its 2026 follow-up was too affected by selection bias to give a reliable new estimate.&lt;/p&gt;

&lt;h3&gt;
  
  
  How much productivity gain should a startup plan for?
&lt;/h3&gt;

&lt;p&gt;Plan conservatively and measure. The company field experiments found about 26% more completed tasks on average, with bigger gains for less experienced developers. Your result depends on task type, codebase and testing practices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I require my developers to use AI tools?
&lt;/h3&gt;

&lt;p&gt;Adoption is already near universal (90% in DORA 2025). The more useful requirement is on outcomes: tests, code review and stable releases, whatever tools are used.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://metr.org/blog/2025-07-10-early-2025-ai-experienced-os-dev-study/" rel="noopener noreferrer"&gt;Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity&lt;/a&gt;, METR, 2025-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://metr.org/blog/2026-02-24-uplift-update/" rel="noopener noreferrer"&gt;We are Changing our Developer Productivity Experiment Design&lt;/a&gt;, METR, 2026-02&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.blog/news-insights/research/research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/" rel="noopener noreferrer"&gt;Research: quantifying GitHub Copilot's impact on developer productivity and happiness&lt;/a&gt;, GitHub, 2022-09 (updated 2024-05)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/research/?p=1148213" rel="noopener noreferrer"&gt;The Effects of Generative AI on High-Skilled Work: Evidence from Three Field Experiments with Software Developers&lt;/a&gt;, Microsoft Research (Cui, Demirer, Jaffe, Musolff, Peng, Salz), 2025-06&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;Announcing the 2025 DORA Report&lt;/a&gt;, Google Cloud, 2025-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/dora-report-2025/" rel="noopener noreferrer"&gt;How are developers using AI? Inside our 2025 DORA report&lt;/a&gt;, Google, 2025-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://survey.stackoverflow.co/2025/ai" rel="noopener noreferrer"&gt;2025 Developer Survey: AI&lt;/a&gt;, Stack Overflow, 2025&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Security Risks of AI-Generated Code: Research and a Review Checklist</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Fri, 06 Nov 2026 09:00:04 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/security-risks-of-ai-generated-code-research-and-a-review-checklist-531c</link>
      <guid>https://dev.to/adilsoukaini/security-risks-of-ai-generated-code-research-and-a-review-checklist-531c</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/ai-generated-code-security-risks" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI-generated code usually works, but it is often not secure. In Veracode's 2026 tests, models produced code that compiled almost 100% of the time, yet failed security checks on nearly 44% of tasks, a pass rate that has not improved since 2025. The fix is not to ban AI tools; it is to treat their output like code from a contractor you have never worked with: review it, scan it, and test it before it reaches production.&lt;/p&gt;

&lt;p&gt;Below is a summary of the research, the failure patterns that come up again and again, and a review checklist you can hand to your developer or agency.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the research found
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Veracode: about half of security-relevant tasks fail, and it is not improving
&lt;/h3&gt;

&lt;p&gt;In its &lt;a href="https://www.veracode.com/press-release/ai-generated-code-poses-major-security-risks-in-nearly-half-of-all-development-tasks-veracode-research-reveals/" rel="noopener noreferrer"&gt;2025 GenAI Code Security Report&lt;/a&gt;, Veracode gave 80 curated coding tasks to more than 100 large language models. When a secure and an insecure approach were both possible, models chose the insecure one 45% of the time. Java was the riskiest language, with a security failure rate above 70%; Python, C# and JavaScript failed between 38% and 45% of the time. Models failed to defend against cross-site scripting in 86% of cases and log injection in 88%. Larger models did not perform significantly better than smaller ones.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://www.veracode.com/news/llms-are-getting-smarter-but-not-safer-veracode-2026-genai-code-security-report-finds-ai-generated-code-security-has-stalled-at-56%25-pass-rate/" rel="noopener noreferrer"&gt;2026 edition&lt;/a&gt; found the average security pass rate "sits at 56 percent — virtually unchanged since last year's report." The best model on its summer 2026 leaderboard reached 68%, which still means failing nearly one security task in three. Python code passed 63% of the time, Java only 30%. Coding-specialised models (51%) did no better than general-purpose ones (52%), and model size made no clear difference, although reasoning models kept an edge (56% against 51%).&lt;/p&gt;

&lt;h3&gt;
  
  
  Academic studies: vulnerable suggestions and overconfident users
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;An early study of GitHub Copilot, &lt;a href="https://arxiv.org/abs/2108.09293" rel="noopener noreferrer"&gt;"Asleep at the Keyboard?"&lt;/a&gt; (IEEE Symposium on Security and Privacy 2022), generated 1,689 programs across 89 security-relevant scenarios and found approximately 40% of them vulnerable.&lt;/li&gt;
&lt;li&gt;A user study published at ACM CCS 2023 found that &lt;a href="https://arxiv.org/abs/2211.03622" rel="noopener noreferrer"&gt;participants with an AI assistant wrote significantly less secure code&lt;/a&gt; than those without, and were more likely to believe their code was secure.&lt;/li&gt;
&lt;li&gt;A USENIX Security 2025 paper analysed 576,000 code samples from 16 models and found that &lt;a href="https://arxiv.org/abs/2406.10279" rel="noopener noreferrer"&gt;at least 5.2% of packages suggested by commercial models and 21.7% by open-source models did not exist&lt;/a&gt;, with 205,474 unique invented package names. An attacker can publish a malicious package under a name that models tend to invent, and anyone who installs it without checking is compromised.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Team level: more changes, less stability
&lt;/h3&gt;

&lt;p&gt;Google's &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;2025 DORA report&lt;/a&gt; found that AI adoption is linked to higher delivery throughput but still has a negative relationship with delivery stability. Its explanation applies directly to security: without strong automated testing and fast feedback loops, more change volume leads to more incidents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI-generated code fails security checks
&lt;/h2&gt;

&lt;p&gt;Security usually depends on context the model does not have: which input comes from an untrusted user, who is allowed to see which record, which secrets exist in your environment. Cross-site scripting, which depends on knowing where a piece of data will be displayed, had one of the worst results in Veracode's 2025 tests (86% failure). The model writes code that does what you asked; whether it is safe depends on what you did not say.&lt;/p&gt;

&lt;h2&gt;
  
  
  The failure patterns to look for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Untrusted input reaching output or queries&lt;/strong&gt;: cross-site scripting, SQL injection, log injection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing authorisation checks&lt;/strong&gt;: an endpoint that checks the user is logged in, but not that the record belongs to them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets in code&lt;/strong&gt;: API keys pasted into source files or front-end bundles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Invented or outdated dependencies&lt;/strong&gt;: packages that do not exist, or old versions with known vulnerabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insecure defaults&lt;/strong&gt;: permissive CORS, debug mode on, verbose error messages in production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weak cryptography or home-made auth&lt;/strong&gt; instead of the framework's built-in tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A security review checklist for AI-generated code
&lt;/h2&gt;

&lt;p&gt;You don't need to read code to use this list. Ask your developer to confirm each point for every feature that touches users, payments or data. Items 1 to 4 apply before any change is merged, 5 to 7 cover dependencies and secrets, and 8 to 12 cover testing and process.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A human who understands the code has reviewed every AI-generated change, line by line.&lt;/li&gt;
&lt;li&gt;Every endpoint checks authorisation (who can access this record), not just authentication.&lt;/li&gt;
&lt;li&gt;All user input is validated on the server, and output is escaped by the framework (no raw HTML rendering of user content).&lt;/li&gt;
&lt;li&gt;Database access uses the framework's query builder or parameterised queries, never string-built SQL.&lt;/li&gt;
&lt;li&gt;Every new package was checked: it exists, is maintained, and is the one the developer meant to install.&lt;/li&gt;
&lt;li&gt;A dependency audit runs automatically (for example &lt;code&gt;npm audit&lt;/code&gt;, &lt;code&gt;composer audit&lt;/code&gt; or GitHub Dependabot).&lt;/li&gt;
&lt;li&gt;No secret is committed to the repository or shipped to the browser; secret scanning is enabled.&lt;/li&gt;
&lt;li&gt;Automated tests cover login, permissions and payment flows, and run on every change. End-to-end tests such as the &lt;a href="https://shipfastdev.com/blog/playwright-e2e-tests-ci" rel="noopener noreferrer"&gt;Playwright setup we use&lt;/a&gt; catch broken access rules early.&lt;/li&gt;
&lt;li&gt;A static analysis (SAST) tool runs in CI on every pull request.&lt;/li&gt;
&lt;li&gt;Production runs with debug off, restrictive CORS and generic error pages.&lt;/li&gt;
&lt;li&gt;AI agents cannot touch production data or credentials directly.&lt;/li&gt;
&lt;li&gt;Someone owns security decisions, and you know who.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Questions to ask your developer or agency
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Which AI tools do you use, and what is your review rule for their output?&lt;/li&gt;
&lt;li&gt;What runs automatically on every pull request: tests, dependency audit, static analysis, secret scanning?&lt;/li&gt;
&lt;li&gt;How are authorisation rules tested?&lt;/li&gt;
&lt;li&gt;Who would notice if a new package did not exist yesterday?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions belong in any &lt;a href="https://shipfastdev.com/blog/how-to-choose-a-remote-development-partner" rel="noopener noreferrer"&gt;evaluation of a development partner&lt;/a&gt;. If your app was built mainly with an AI app builder, read &lt;a href="https://shipfastdev.com/blog/vibe-coding-mvp-limits" rel="noopener noreferrer"&gt;where vibe-coded MVPs break&lt;/a&gt; as well: missing data-access rules are the most common problem there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is AI-generated code secure?
&lt;/h3&gt;

&lt;p&gt;Not by default. Veracode's 2026 tests found an average security pass rate of 56%, unchanged from 2025, even though almost all generated code compiled. It needs the same review and testing as any other code, and arguably more.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which programming language is riskiest for AI-generated code?
&lt;/h3&gt;

&lt;p&gt;In Veracode's tests, Java: a 30% security pass rate in 2026, against 63% for Python. Language matters less than review, though: every language failed a significant share of tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can an AI tool review its own code for security?
&lt;/h3&gt;

&lt;p&gt;It can help spot issues, but the same models chose insecure options in a large share of Veracode's tasks. Use AI review as one layer, alongside static analysis, dependency audits, tests and a human reviewer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need a security audit for my MVP?
&lt;/h3&gt;

&lt;p&gt;If it handles personal data, payments or logins, at least run through the checklist above before launch. A full external audit makes sense once you have real users or sensitive data at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.veracode.com/news/llms-are-getting-smarter-but-not-safer-veracode-2026-genai-code-security-report-finds-ai-generated-code-security-has-stalled-at-56%25-pass-rate/" rel="noopener noreferrer"&gt;LLMs Are Getting Smarter but Not Safer: Veracode 2026 GenAI Code Security Report&lt;/a&gt;, Veracode, 2026-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.veracode.com/press-release/ai-generated-code-poses-major-security-risks-in-nearly-half-of-all-development-tasks-veracode-research-reveals/" rel="noopener noreferrer"&gt;AI-Generated Code Poses Major Security Risks in Nearly Half of All Development Tasks, Veracode Research Reveals&lt;/a&gt;, Veracode, 2025-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2108.09293" rel="noopener noreferrer"&gt;Asleep at the Keyboard? Assessing the Security of GitHub Copilot's Code Contributions (IEEE S&amp;amp;P 2022)&lt;/a&gt;, Pearce, Ahmad, Tan, Dolan-Gavitt, Karri (arXiv), 2021-12&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2211.03622" rel="noopener noreferrer"&gt;Do Users Write More Insecure Code with AI Assistants? (ACM CCS 2023)&lt;/a&gt;, Perry, Srivastava, Kumar, Boneh (arXiv), 2023-12&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2406.10279" rel="noopener noreferrer"&gt;We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs (USENIX Security 2025)&lt;/a&gt;, Spracklen et al. (arXiv), 2025-03&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-the-2025-dora-report" rel="noopener noreferrer"&gt;Announcing the 2025 DORA Report&lt;/a&gt;, Google Cloud, 2025-09&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>security</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Deploying a Laravel app on Google Cloud Run: the pitfalls and the fixes</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Wed, 04 Nov 2026 09:00:04 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/deploying-a-laravel-app-on-google-cloud-run-the-pitfalls-and-the-fixes-2233</link>
      <guid>https://dev.to/adilsoukaini/deploying-a-laravel-app-on-google-cloud-run-the-pitfalls-and-the-fixes-2233</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/deploy-laravel-google-cloud-run" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To deploy a Laravel app on Google Cloud Run, you put PHP-FPM and a web server in one container that listens on the port Cloud Run gives it, build your frontend assets before the image, keep configuration on the service rather than in your CI file, and tell Laravel it runs behind an HTTPS proxy. Most of the work is in a handful of Laravel-specific traps; here are the ones we hit putting Driveway Morocco into production, and the fixes.&lt;/p&gt;

&lt;p&gt;Driveway Morocco is ShipFastDev's car-rental platform (&lt;a href="https://shipfastdev.com/work/driveway-morocco" rel="noopener noreferrer"&gt;case study&lt;/a&gt;): Laravel 13 with an Inertia/React storefront, a Filament admin panel, Stripe deposit holds, and plugins (fleet, booking, payments) installed as local Composer packages. It went live on Cloud Run in August 2026, with a managed Postgres database on Supabase and GitHub Actions deploying on every push to the main branch. Every pitfall below comes from that deployment's commit history.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Cloud Run expects from your container
&lt;/h2&gt;

&lt;p&gt;Read the &lt;a href="https://docs.cloud.google.com/run/docs/container-contract" rel="noopener noreferrer"&gt;container runtime contract&lt;/a&gt; before you write the Dockerfile. Four rules matter most for a Laravel app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Port.&lt;/strong&gt; The container must listen on &lt;code&gt;0.0.0.0&lt;/code&gt; on the port in the &lt;code&gt;PORT&lt;/code&gt; environment variable. Requests are sent to 8080 by default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No TLS inside the container.&lt;/strong&gt; Cloud Run terminates HTTPS and proxies requests to your container as plain HTTP. Laravel has to be told about it, or it builds &lt;code&gt;http://&lt;/code&gt; links.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The filesystem is memory.&lt;/strong&gt; Writing to disk uses the instance's RAM and disappears when the instance stops. Sessions, uploads and logs belong in the database, object storage or stdout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Startup and shutdown limits.&lt;/strong&gt; An instance must listen for requests within 4 minutes of starting. On shutdown it receives &lt;code&gt;SIGTERM&lt;/code&gt;, then &lt;code&gt;SIGKILL&lt;/code&gt; 10 seconds later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Driveway runs a single image with PHP 8.4 FPM, Nginx and Supervisor. Nginx listens on the port, serves the built assets and hands PHP requests to FPM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 1: frontend assets missing from the build
&lt;/h2&gt;

&lt;p&gt;With &lt;code&gt;gcloud run deploy --source .&lt;/code&gt;, your directory is uploaded and &lt;a href="https://docs.cloud.google.com/run/docs/deploying-source-code" rel="noopener noreferrer"&gt;built by Cloud Build using your Dockerfile&lt;/a&gt; if one is present. What gets uploaded is decided by &lt;code&gt;.gcloudignore&lt;/code&gt;, and the &lt;a href="https://docs.cloud.google.com/sdk/gcloud/reference/topic/gcloudignore" rel="noopener noreferrer"&gt;default file pulls in your &lt;code&gt;.gitignore&lt;/code&gt;&lt;/a&gt;. Vite writes its output to &lt;code&gt;public/build&lt;/code&gt;, which is gitignored, so the first CI deploys shipped an image with no compiled CSS or JavaScript.&lt;/p&gt;

&lt;p&gt;Running &lt;code&gt;npm ci &amp;amp;&amp;amp; npm run build&lt;/code&gt; inside the image did not fix it cleanly: the build regenerated &lt;code&gt;manifest.json&lt;/code&gt; with new hashes but no matching JS files. The working setup builds the assets in the CI job before the deploy step, and the Dockerfile only copies &lt;code&gt;public/build&lt;/code&gt;. Removing Node and npm from the image also made it about 200 MB smaller.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 2: your local vendor/ overwriting the real one
&lt;/h2&gt;

&lt;p&gt;The Dockerfile runs &lt;code&gt;composer install&lt;/code&gt; and then copies the source. Because &lt;code&gt;vendor/&lt;/code&gt; was not listed in &lt;code&gt;.gcloudignore&lt;/code&gt;, &lt;code&gt;COPY .&lt;/code&gt; replaced the freshly installed dependencies with the developer's local &lt;code&gt;vendor/&lt;/code&gt;, and the Filament admin routes broke. Exclude &lt;code&gt;vendor/&lt;/code&gt; and &lt;code&gt;node_modules/&lt;/code&gt; from the upload; the image should install its own dependencies from the lockfile.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 3: Composer path repositories and symlinks
&lt;/h2&gt;

&lt;p&gt;Driveway's plugins live in a &lt;code&gt;plugins/&lt;/code&gt; folder and are installed as Composer path repositories. &lt;a href="https://getcomposer.org/doc/05-repositories.md" rel="noopener noreferrer"&gt;Composer symlinks path packages by default&lt;/a&gt;. Inside the Docker build, the copy turned those symlinks into real directories, and the autoloader stopped finding plugin classes. Vehicle detail and checkout pages, which depended on plugin routes, rendered blank.&lt;/p&gt;

&lt;p&gt;The fixes in the history were pragmatic: a build step that adds the plugins' PSR-4 namespaces to Composer's autoload map, a core-owned fleet controller, and core fallback routes for the booking flow. The image also needed the &lt;code&gt;intl&lt;/code&gt;, &lt;code&gt;zip&lt;/code&gt; and &lt;code&gt;gd&lt;/code&gt; extensions for &lt;code&gt;composer install&lt;/code&gt; to succeed. If you are starting fresh, try Composer's &lt;code&gt;"symlink": false&lt;/code&gt; option first: the Composer documentation notes that forcing mirroring "can be useful when deploying".&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 4: layer caching that breaks the build
&lt;/h2&gt;

&lt;p&gt;Docker's advice is to &lt;a href="https://docs.docker.com/build/cache/optimize/" rel="noopener noreferrer"&gt;copy the package files, install dependencies, then copy the source&lt;/a&gt;. A commit applied that order (copy &lt;code&gt;composer.json&lt;/code&gt; and &lt;code&gt;plugins/&lt;/code&gt;, install, then copy the rest) and estimated typical deploys would drop from about 8 minutes to about 2. It was reverted the same day because the new order broke CI builds: with path repositories, the dependency layer depends on your own plugin code too. Get a working image first, then optimise, and prove the change with a real CI build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 5: http:// links behind the HTTPS proxy
&lt;/h2&gt;

&lt;p&gt;This one took the whole storefront down. PHP-FPM saw plain HTTP, so Laravel's &lt;code&gt;url()&lt;/code&gt; helper produced &lt;code&gt;http://&lt;/code&gt; URLs for assets and API calls. The page was served over HTTPS, so the Content Security Policy blocked those requests: navigation, login, search, filters and booking all stopped working, with no server error to point at.&lt;/p&gt;

&lt;p&gt;The fix was to make Laravel generate HTTPS URLs: set &lt;code&gt;APP_URL&lt;/code&gt; and &lt;code&gt;ASSET_URL&lt;/code&gt; to the public domain, force HTTPS in the startup script, and call &lt;code&gt;URL::forceScheme('https')&lt;/code&gt; in production. The &lt;a href="https://laravel.com/docs/requests#configuring-trusted-proxies" rel="noopener noreferrer"&gt;Laravel documentation&lt;/a&gt; describes the standard route: enable the TrustProxies middleware so Laravel reads the forwarded protocol, and use &lt;code&gt;*&lt;/code&gt; when you don't know your load balancer's addresses.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="c1"&gt;// bootstrap/app.php&lt;/span&gt;
&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;withMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;Middleware&lt;/span&gt; &lt;span class="nv"&gt;$middleware&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$middleware&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;trustProxies&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;at&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'*'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Either way, check it in a browser with the console open.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 6: secrets in the CI file
&lt;/h2&gt;

&lt;p&gt;The first workflow passed environment variables in the deploy step, including the database password and the app key. They were removed within the day. Cloud Run carries a revision's configuration into the next revisions &lt;a href="https://docs.cloud.google.com/run/docs/configuring/services/environment-variables" rel="noopener noreferrer"&gt;unless you change it explicitly&lt;/a&gt;, so the pipeline only needs to ship a new image. Two details from the same page: &lt;code&gt;--set-env-vars&lt;/code&gt; deletes every variable you don't list, while &lt;code&gt;--update-env-vars&lt;/code&gt; only adds or changes; and Google does not recommend environment variables for secrets such as database credentials or API keys, pointing to Secret Manager instead.&lt;/p&gt;

&lt;p&gt;For authentication, the pipeline first used a service account key stored as a GitHub secret. In September 2026 it moved to Workload Identity Federation with Google's deploy action. The &lt;a href="https://github.com/google-github-actions/auth" rel="noopener noreferrer"&gt;google-github-actions/auth documentation&lt;/a&gt; recommends federation because it "obviates the need to export a long-lived credential"; a key file never expires and must be treated like a password. The workflow needs the &lt;code&gt;id-token: write&lt;/code&gt; permission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 7: cold starts and memory
&lt;/h2&gt;

&lt;p&gt;A new instance starts from the image, so anything cached at build time can be stale. Driveway's startup script clears the config and route caches so the plugin manager reads which plugins are enabled from the database, and runs &lt;code&gt;php artisan package:discover&lt;/code&gt; so Laravel registers installed packages. Keep this script short: it runs on every cold start, and the instance has 4 minutes to start listening.&lt;/p&gt;

&lt;p&gt;Memory is the other limit. The &lt;a href="https://docs.cloud.google.com/run/docs/configuring/services/memory-limits" rel="noopener noreferrer"&gt;default is 512 MiB per instance&lt;/a&gt;, instances that exceed their limit are terminated, and files written to disk count against it. Driveway's service was raised to 1 GiB for stability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pitfall 8: one admin feature taking down every page
&lt;/h2&gt;

&lt;p&gt;In September 2026, a plugin registered an admin-only Filament/Livewire component in its &lt;code&gt;boot()&lt;/code&gt; method. In the Cloud Run boot context that call threw, and because the exception happened during application boot, every page failed, storefront included. The error pages then called &lt;code&gt;route('home')&lt;/code&gt;, which wasn't in the route list after the failed boot, so React unmounted and visitors got a white screen.&lt;/p&gt;

&lt;p&gt;Two fixes: admin-only registration is wrapped in a try/catch so it is best-effort, and the error pages fall back to plain paths when a named route is missing. Boot code runs on every request; an error page must not depend on anything that can fail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Queues and scheduled tasks
&lt;/h2&gt;

&lt;p&gt;The project's production checklist lists a queue worker and the Laravel scheduler. A backend audit had already found that, without a worker, queued emails, push notifications and the deposit-hold expiry command silently never ran in the local Docker setup. On Cloud Run, plan this explicitly: under the default request-based billing, the container contract says CPU is allocated while instances process requests, so a &lt;code&gt;queue:work&lt;/code&gt; process in the web container is not a reliable worker. The documented options are instance-based billing, which keeps CPU allocated for the instance's lifetime, or a Cloud Run job &lt;a href="https://docs.cloud.google.com/run/docs/execute/jobs-on-schedule" rel="noopener noreferrer"&gt;triggered by Cloud Scheduler&lt;/a&gt; for periodic commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  The checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Nginx and PHP-FPM in one image, listening on &lt;code&gt;$PORT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Assets built in CI; no Node in the runtime image.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vendor/&lt;/code&gt; and &lt;code&gt;node_modules/&lt;/code&gt; excluded from the upload.&lt;/li&gt;
&lt;li&gt;Autoloading tested inside the built image.&lt;/li&gt;
&lt;li&gt;HTTPS URLs verified in a real browser.&lt;/li&gt;
&lt;li&gt;Secrets in Secret Manager, CI on Workload Identity Federation.&lt;/li&gt;
&lt;li&gt;Short startup script, memory sized for the app.&lt;/li&gt;
&lt;li&gt;Guarded boot code, error pages that always render.&lt;/li&gt;
&lt;li&gt;A plan for queues and cron.&lt;/li&gt;
&lt;li&gt;Browser tests before deploy: see &lt;a href="https://shipfastdev.com/blog/playwright-e2e-tests-ci" rel="noopener noreferrer"&gt;end-to-end tests with Playwright in CI&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of these problems appeared only in the deployed container. Small, frequent deploys made each one easy to trace, as argued in &lt;a href="https://shipfastdev.com/blog/weekly-releases-with-a-remote-developer" rel="noopener noreferrer"&gt;weekly releases with a remote developer&lt;/a&gt;. The same project's search setup, with a fallback when the search engine is down, is covered in &lt;a href="https://shipfastdev.com/blog/laravel-search-meilisearch-fallback" rel="noopener noreferrer"&gt;Laravel search with Meilisearch and a database fallback&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can Laravel run on Cloud Run without code changes?
&lt;/h3&gt;

&lt;p&gt;Mostly. You need a container that listens on &lt;code&gt;$PORT&lt;/code&gt;, Laravel configured to generate HTTPS URLs behind the proxy, configuration from environment variables or Secret Manager, and no reliance on the local disk for anything that must persist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need Nginx inside the container?
&lt;/h3&gt;

&lt;p&gt;Cloud Run forwards HTTP to your container, and PHP-FPM speaks FastCGI, not HTTP, so a web server has to sit in front of it. Driveway Morocco uses Nginx and PHP-FPM under Supervisor.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I run Laravel queues and cron jobs on Cloud Run?
&lt;/h3&gt;

&lt;p&gt;Not as a background process in the web container under request-based billing, because CPU is only allocated while requests are processed. Use instance-based billing for a worker, or Cloud Run jobs triggered by Cloud Scheduler for scheduled commands.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why does my Laravel app on Cloud Run load assets over http://?
&lt;/h3&gt;

&lt;p&gt;Cloud Run terminates TLS and sends plain HTTP to the container, so Laravel thinks the request is insecure. Trust the proxy with the TrustProxies middleware or force the HTTPS scheme in production, and set &lt;code&gt;APP_URL&lt;/code&gt; to your https:// domain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://docs.cloud.google.com/run/docs/container-contract" rel="noopener noreferrer"&gt;Container runtime contract&lt;/a&gt;, Google Cloud, 2026-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.cloud.google.com/run/docs/deploying-source-code" rel="noopener noreferrer"&gt;Deploy services from source code&lt;/a&gt;, Google Cloud, 2026-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.cloud.google.com/sdk/gcloud/reference/topic/gcloudignore" rel="noopener noreferrer"&gt;gcloud topic gcloudignore&lt;/a&gt;, Google Cloud, 2026-10&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.cloud.google.com/run/docs/configuring/services/environment-variables" rel="noopener noreferrer"&gt;Configure environment variables for services&lt;/a&gt;, Google Cloud, 2026-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.cloud.google.com/run/docs/configuring/services/memory-limits" rel="noopener noreferrer"&gt;Configure memory limits for services&lt;/a&gt;, Google Cloud, 2026-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.cloud.google.com/run/docs/execute/jobs-on-schedule" rel="noopener noreferrer"&gt;Execute jobs on a schedule&lt;/a&gt;, Google Cloud, 2026-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/google-github-actions/auth" rel="noopener noreferrer"&gt;google-github-actions/auth&lt;/a&gt;, Google (GitHub), 2026-10&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://laravel.com/docs/requests#configuring-trusted-proxies" rel="noopener noreferrer"&gt;HTTP Requests: Configuring Trusted Proxies&lt;/a&gt;, Laravel 13.x documentation, 2026-10&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://getcomposer.org/doc/05-repositories.md" rel="noopener noreferrer"&gt;Repositories: Path&lt;/a&gt;, Composer documentation, 2026-10&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.docker.com/build/cache/optimize/" rel="noopener noreferrer"&gt;Optimize cache usage in builds&lt;/a&gt;, Docker Docs, 2026-10&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devops</category>
      <category>googlecloud</category>
      <category>laravel</category>
      <category>php</category>
    </item>
    <item>
      <title>How much does an MVP cost in 2026? Hours, rates and hidden costs</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Tue, 03 Nov 2026 09:00:08 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/how-much-does-an-mvp-cost-in-2026-hours-rates-and-hidden-costs-1l8k</link>
      <guid>https://dev.to/adilsoukaini/how-much-does-an-mvp-cost-in-2026-hours-rates-and-hidden-costs-1l8k</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/how-much-does-an-mvp-cost" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;An MVP costs whatever its hours cost: the number of hours the scope needs, multiplied by the rate of the people building it, plus the running costs nobody puts in the quote. With the assumptions spelled out below, a single-flow web MVP comes to roughly 160–240 hours, a two-sided marketplace 400–600 hours, and adding iOS and Android apps pushes it to 700–1,050 hours. The rate you pay then turns those hours into anything from about $6,000 to well over $100,000.&lt;/p&gt;

&lt;p&gt;This guide shows where those hours go, three example scopes with the maths visible, what to cut first, and the costs that arrive after launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you are actually paying for
&lt;/h2&gt;

&lt;p&gt;The Agile Alliance, quoting Eric Ries, defines an MVP as the version of a product that lets a team &lt;a href="https://www.agilealliance.org/glossary/mvp/" rel="noopener noreferrer"&gt;"collect the maximum amount of validated learning about customers with the least effort"&lt;/a&gt;. The same page warns about the opposite mistake: shipping something so thin, or so buggy, that it teaches you nothing. Your budget should buy learning, not features.&lt;/p&gt;

&lt;p&gt;In practice the hours go into five buckets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Product and UX work&lt;/strong&gt;: turning the idea into screens and flows a developer can build.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: the screens users touch, on web, mobile or both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: accounts, data, business rules, emails, payments, admin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrations&lt;/strong&gt;: payment providers, maps, calendars, third-party APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing and release&lt;/strong&gt;: QA, deployment, store submission, fixes after the first real users arrive.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The cost drivers that move the number most
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Number of platforms.&lt;/strong&gt; Web only is the cheapest. A web app plus native iOS and Android apps is the single largest multiplier. Cross-platform tools reduce it but do not remove it (see &lt;a href="https://shipfastdev.com/blog/react-native-vs-flutter" rel="noopener noreferrer"&gt;React Native vs Flutter&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Number of user roles.&lt;/strong&gt; A product with one type of user is far simpler than a marketplace with buyers, sellers and an admin, each with their own screens and permissions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payments and money flows.&lt;/strong&gt; A simple checkout is quick with a hosted payment page. Split payments, refunds, deposits and payouts to third parties are not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrations.&lt;/strong&gt; Each external API brings its own authentication, error cases and sandbox quirks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom design.&lt;/strong&gt; A clean UI built on an existing component library costs a fraction of a fully bespoke design system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time and offline features.&lt;/strong&gt; Live chat, live tracking or offline-first mobile apps add both build time and infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Languages and compliance.&lt;/strong&gt; A second language doubles copy and testing. Health, finance or children's data adds legal and security work.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Three example scopes, with the maths shown
&lt;/h2&gt;

&lt;p&gt;These are &lt;strong&gt;illustrations, not quotes or market data&lt;/strong&gt;. The hour ranges are our own working assumptions for a competent small team using a mainstream stack (for example Laravel or Node.js with React, and Expo for mobile), a component-library UI, and one round of feedback. They include design, development, testing and deployment; they exclude branding, copywriting and marketing.&lt;/p&gt;

&lt;p&gt;For rates we use three illustrative figures: $35, $65 and $120 per hour. For context, the US Bureau of Labor Statistics puts the &lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm" rel="noopener noreferrer"&gt;median wage of US software developers at $64.44 per hour (May 2025 data)&lt;/a&gt;. That is an employee's wage before employer overheads, not a contractor or agency rate; real rates vary a lot by country and seniority, which we cover in &lt;a href="https://shipfastdev.com/blog/cost-to-hire-a-software-developer" rel="noopener noreferrer"&gt;how much it costs to hire a software developer&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scope A: a single-flow web MVP (160–240 hours)
&lt;/h3&gt;

&lt;p&gt;Sign-up and login, one core workflow (for example "submit a request, receive a quote, accept it"), transactional emails, a basic admin view, responsive web UI, deployment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At $35/h: $5,600–$8,400&lt;/li&gt;
&lt;li&gt;At $65/h: $10,400–$15,600&lt;/li&gt;
&lt;li&gt;At $120/h: $19,200–$28,800&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scope B: a two-sided marketplace on the web (400–600 hours)
&lt;/h3&gt;

&lt;p&gt;Two user roles with profiles, listings with photos, search and filters, booking or order requests, online payment through a hosted checkout, email notifications, an admin area for moderation and refunds.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At $35/h: $14,000–$21,000&lt;/li&gt;
&lt;li&gt;At $65/h: $26,000–$39,000&lt;/li&gt;
&lt;li&gt;At $120/h: $48,000–$72,000&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Scope C: Scope B plus iOS and Android apps (700–1,050 hours)
&lt;/h3&gt;

&lt;p&gt;The same backend, plus a cross-platform mobile app with push notifications, store listings and two store review cycles. This is the shape of a product like the &lt;a href="https://shipfastdev.com/work/driveway-morocco" rel="noopener noreferrer"&gt;Driveway Morocco car-rental platform&lt;/a&gt;, which has a Laravel and React web platform and an Expo mobile app.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;At $35/h: $24,500–$36,750&lt;/li&gt;
&lt;li&gt;At $65/h: $45,500–$68,250&lt;/li&gt;
&lt;li&gt;At $120/h: $84,000–$126,000&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use these to sanity-check a quote: divide the price by the rate and ask whether the resulting hours match the scope. If a quote implies 80 hours for Scope B, something has been left out. If it implies 2,000, ask what the extra work is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to cut first
&lt;/h2&gt;

&lt;p&gt;The cheapest hours are the ones you never spend. Before asking for estimates, go through this list (and through our guide on &lt;a href="https://shipfastdev.com/blog/how-to-scope-an-mvp" rel="noopener noreferrer"&gt;how to scope an MVP&lt;/a&gt;):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The second platform.&lt;/strong&gt; Start with a responsive web app, or with one mobile platform if your users are mobile-only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automation you can do by hand.&lt;/strong&gt; Matching, approvals and onboarding can be manual for the first hundred users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complex payments.&lt;/strong&gt; A hosted checkout or payment links can replace a custom payment flow until volume justifies it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom dashboards.&lt;/strong&gt; Use an analytics tool and a simple admin view instead of building reporting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Settings, preferences and edge-case screens.&lt;/strong&gt; Ship sensible defaults.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A bespoke design system.&lt;/strong&gt; Use a well-made component library and invest in design once you know what users do.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If what you need is mostly forms, a database and workflows, compare against a no-code build first; our article on &lt;a href="https://shipfastdev.com/blog/no-code-vs-custom-development" rel="noopener noreferrer"&gt;no-code vs custom development&lt;/a&gt; covers where that breaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The costs that are not in the build quote
&lt;/h2&gt;

&lt;h3&gt;
  
  
  App store accounts and rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The Apple Developer Program costs &lt;a href="https://developer.apple.com/programs/enroll/" rel="noopener noreferrer"&gt;99 USD per membership year&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Google Play charges a &lt;a href="https://support.google.com/googleplay/android-developer/answer/6112435?hl=en" rel="noopener noreferrer"&gt;US$25 one-time registration fee&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;New personal Google Play accounts must &lt;a href="https://support.google.com/googleplay/android-developer/answer/14151465?hl=en" rel="noopener noreferrer"&gt;run a closed test with at least 12 testers opted in for 14 days&lt;/a&gt; before applying for production access. Plan the calendar time, not just the money; our &lt;a href="https://shipfastdev.com/blog/publish-expo-app-google-play-checklist" rel="noopener noreferrer"&gt;Google Play publishing checklist&lt;/a&gt; covers the steps.&lt;/li&gt;
&lt;li&gt;If you sell digital goods inside the app, the stores take a service fee. Google Play's &lt;a href="https://support.google.com/googleplay/android-developer/answer/112622?hl=en" rel="noopener noreferrer"&gt;fee page&lt;/a&gt; lists rates between 10% and 30% depending on market, revenue level and transaction type.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hosting and services
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Free tiers have conditions. Vercel's Hobby plan is for &lt;a href="https://vercel.com/pricing" rel="noopener noreferrer"&gt;personal, non-commercial use&lt;/a&gt;; Pro is listed at $20 per month.&lt;/li&gt;
&lt;li&gt;Supabase's free plan &lt;a href="https://supabase.com/pricing" rel="noopener noreferrer"&gt;pauses projects after a week of inactivity&lt;/a&gt;; Pro starts at $25 per month.&lt;/li&gt;
&lt;li&gt;Add a domain, transactional email, error monitoring and backups. Individually small, together a fixed monthly line.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Maintenance and iteration
&lt;/h3&gt;

&lt;p&gt;Dependencies, operating systems and store policies change after launch, and your first users will ask for changes. CB Insights' 2026 analysis of 431 shut-down VC-backed companies found that &lt;a href="https://www.cbinsights.com/research/report/startup-failure-reasons-top/" rel="noopener noreferrer"&gt;70% ran out of capital and 43% cited poor product-market fit&lt;/a&gt;. Spending the whole budget on version one leaves nothing for the changes that would have found the fit. Our rule of thumb, not a statistic: keep a meaningful share of the budget, a third or more, for the weeks after launch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixed price, hourly or monthly?
&lt;/h2&gt;

&lt;p&gt;A fixed price works when the scope is small and well defined. It pushes risk onto the developer, who prices that risk in. Hourly and monthly retainer models suit products where the scope will change after users react, which is most MVPs. The trade-offs are covered in &lt;a href="https://shipfastdev.com/blog/fixed-price-vs-time-and-materials-vs-retainer" rel="noopener noreferrer"&gt;fixed price vs time and materials vs retainer&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can I build an MVP for $5,000?
&lt;/h3&gt;

&lt;p&gt;Yes, if the scope is a single flow on one platform, or if part of it is built with no-code tools. At the illustrative rates above, $5,000 buys roughly 40 to 140 hours, so the scope has to fit.&lt;/p&gt;

&lt;h3&gt;
  
  
  How long does it take to build an MVP?
&lt;/h3&gt;

&lt;p&gt;Divide the hours by the team's weekly capacity. One full-time developer at 160–240 hours delivers Scope A in about four to six weeks; mobile apps add store review and, on Google Play, the 14-day closed test.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why do MVP quotes for the same idea differ so much?
&lt;/h3&gt;

&lt;p&gt;Different assumptions about scope and different rates. Ask every vendor for an hour estimate per feature, then compare like for like.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does an MVP cost to run each month?
&lt;/h3&gt;

&lt;p&gt;For a small web MVP, often tens of dollars for hosting, database, email and monitoring, rising with usage. Add the Apple fee each year if you publish on iOS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm" rel="noopener noreferrer"&gt;Software Developers, Quality Assurance Analysts, and Testers: Occupational Outlook Handbook&lt;/a&gt;, U.S. Bureau of Labor Statistics, May 2025&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.agilealliance.org/glossary/mvp/" rel="noopener noreferrer"&gt;Minimum Viable Product (MVP)&lt;/a&gt;, Agile Alliance, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.cbinsights.com/research/report/startup-failure-reasons-top/" rel="noopener noreferrer"&gt;Top reasons startups fail&lt;/a&gt;, CB Insights, March 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.apple.com/programs/enroll/" rel="noopener noreferrer"&gt;Apple Developer Program enrollment&lt;/a&gt;, Apple, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.google.com/googleplay/android-developer/answer/6112435?hl=en" rel="noopener noreferrer"&gt;How to use Play Console: registration fee&lt;/a&gt;, Google Play Console Help, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.google.com/googleplay/android-developer/answer/14151465?hl=en" rel="noopener noreferrer"&gt;App testing requirements for new personal developer accounts&lt;/a&gt;, Google Play Console Help, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://support.google.com/googleplay/android-developer/answer/112622?hl=en" rel="noopener noreferrer"&gt;Service fees&lt;/a&gt;, Google Play Console Help, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://vercel.com/pricing" rel="noopener noreferrer"&gt;Vercel pricing&lt;/a&gt;, Vercel, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://supabase.com/pricing" rel="noopener noreferrer"&gt;Supabase pricing&lt;/a&gt;, Supabase, accessed October 2026&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>product</category>
      <category>saas</category>
      <category>softwaredevelopment</category>
      <category>startup</category>
    </item>
    <item>
      <title>Fixed price vs time and materials vs retainer: which software contract should you choose?</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Mon, 02 Nov 2026 09:00:05 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/fixed-price-vs-time-and-materials-vs-retainer-which-software-contract-should-you-choose-4hl</link>
      <guid>https://dev.to/adilsoukaini/fixed-price-vs-time-and-materials-vs-retainer-which-software-contract-should-you-choose-4hl</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/fixed-price-vs-time-and-materials-vs-retainer" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Choose &lt;strong&gt;fixed price&lt;/strong&gt; when you can write the scope down completely and it will not change; choose &lt;strong&gt;time and materials&lt;/strong&gt; when the work is uncertain and you can follow it closely, always with a spending cap; choose a &lt;strong&gt;retainer&lt;/strong&gt; when the product needs steady work every month and priorities shift as you learn. Each model moves risk to a different party: fixed price moves cost risk to the provider and change risk to you, time and materials moves cost risk to you, and a retainer fixes spend while leaving scope flexible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fixed price: the provider carries the cost risk
&lt;/h2&gt;

&lt;p&gt;US federal procurement rules give a precise definition: a firm-fixed-price contract &lt;a href="https://www.acquisition.gov/far/16.202-1" rel="noopener noreferrer"&gt;"provides for a price that is not subject to any adjustment on the basis of the contractor's cost experience"&lt;/a&gt;. If the work takes twice as long as estimated, the provider absorbs it. That is attractive, and it has consequences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The estimate includes a risk margin.&lt;/strong&gt; A provider who carries the risk prices it in. On well-understood work the margin is small; on vague work it is large or the provider loses money.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope becomes a negotiation.&lt;/strong&gt; Anything not written in the specification is a change request, with its own quote and delay. In product work, where you learn from users every week, that friction adds up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality is the hidden variable.&lt;/strong&gt; When the budget runs short, the easiest things to cut are tests, documentation and edge cases. Protect them with written acceptance criteria.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Good fit:&lt;/strong&gt; a marketing site from an approved design, a defined integration with a documented API, a migration with a clear before and after, a discovery or prototyping phase with a fixed length.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time and materials: you carry the cost risk
&lt;/h2&gt;

&lt;p&gt;Under the same rules, a time-and-materials contract pays for &lt;a href="https://www.acquisition.gov/far/16.601" rel="noopener noreferrer"&gt;"direct labor hours at specified fixed hourly rates"&lt;/a&gt;, and may be used only when it is not possible at the outset to estimate the extent or duration of the work with confidence. Two safeguards are mandatory there, and they are good practice for any startup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A ceiling price&lt;/strong&gt; that the provider exceeds at its own risk. For you: a monthly or per-feature cap that requires your approval to exceed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Active oversight&lt;/strong&gt;, because time-based pay gives no built-in incentive to control cost. For you: weekly timesheets tied to tasks, and regular releases you can check.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Time and materials is honest about uncertainty: you pay for the work actually done, and you can change direction at any time. The risk is drift: without priorities and caps, hours expand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good fit:&lt;/strong&gt; an MVP whose scope will move, debugging or performance work on an unfamiliar codebase, research spikes, extending a team with in-house leadership.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retainer: fixed spend, flexible scope
&lt;/h2&gt;

&lt;p&gt;A retainer pays a fixed monthly amount for an agreed capacity and set of responsibilities: for example a number of development hours, code reviews, deployments and hosting care. You decide each month what that capacity works on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Budget is predictable&lt;/strong&gt;, like fixed price.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope is flexible&lt;/strong&gt;, like time and materials: you reprioritise without a change request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuity is built in&lt;/strong&gt;: the same people keep context, which supports small, frequent releases (see &lt;a href="https://shipfastdev.com/blog/weekly-releases-with-a-remote-developer" rel="noopener noreferrer"&gt;weekly releases with a remote developer&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The risks are paying for idle capacity if you have no backlog, and disagreement about what "included" means. Write down the hours, what happens to unused hours, response times, what counts as out of scope and the notice period.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Good fit:&lt;/strong&gt; a live product that needs regular features and fixes, post-launch iteration on an MVP, a small company without in-house developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How each model handles a change
&lt;/h2&gt;

&lt;p&gt;Imagine that two weeks into the work, user feedback shows the onboarding flow should be rebuilt.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fixed price:&lt;/strong&gt; the provider writes a change request with a new price and date; you approve, negotiate or drop the change. The original deadline may move.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time and materials:&lt;/strong&gt; you reprioritise; the hours go to the new flow. Check the cap: if the change pushes you over it, decide what to cut.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retainer:&lt;/strong&gt; you move the onboarding rebuild to the top of next month's priorities; something else waits. Spend does not change.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="https://agilemanifesto.org/" rel="noopener noreferrer"&gt;Agile Manifesto&lt;/a&gt; put this tension into one line in 2001: "customer collaboration over contract negotiation". A contract cannot remove uncertainty; it can only decide who pays for it and how quickly you can react.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hybrids that work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fixed-price discovery, then retainer or time and materials.&lt;/strong&gt; Pay a fixed amount for a short scoping phase (specification, design, estimate), then build with a flexible model. See &lt;a href="https://shipfastdev.com/blog/how-to-scope-an-mvp" rel="noopener noreferrer"&gt;how to scope an MVP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fixed price per iteration.&lt;/strong&gt; Agree a fixed price for each two- to four-week cycle with a short list of goals, and re-plan between cycles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time and materials with a cap per feature.&lt;/strong&gt; Flexible, but every feature has a budget that triggers a conversation when 80% is used.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A note for France: régie and staff lending
&lt;/h2&gt;

&lt;p&gt;In France, time-based work is often called &lt;em&gt;régie&lt;/em&gt;. French labour law prohibits &lt;a href="https://code.travail.gouv.fr/code-du-travail/l8241-1" rel="noopener noreferrer"&gt;any for-profit operation whose sole purpose is lending staff&lt;/a&gt; (outside regulated temporary work), so a régie contract must remain a service: the provider brings its own expertise and keeps authority over its people. With an individual freelancer, a client who sets hours, gives detailed orders and integrates the person like an employee risks &lt;a href="https://bpifrance-creation.fr/encyclopedie/micro-entreprise-regime-auto-entrepreneur/lessentiel-ce-regime/independance-juridique" rel="noopener noreferrer"&gt;requalification as employment&lt;/a&gt;. Define deliverables and leave the provider in charge of how the work is done.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Can you write the scope completely today?&lt;/strong&gt; Yes: fixed price is an option. No: time and materials or a retainer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is the work a one-off or ongoing?&lt;/strong&gt; One-off: fixed price or capped time and materials. Ongoing: retainer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Who will follow the work weekly?&lt;/strong&gt; If nobody can, avoid uncapped time and materials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How will you judge progress?&lt;/strong&gt; Whatever the model, look at delivered results. DORA's &lt;a href="https://dora.dev/guides/dora-metrics/" rel="noopener noreferrer"&gt;delivery metrics&lt;/a&gt;, such as deployment frequency and change lead time, work for all three.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For budget figures behind each model, see &lt;a href="https://shipfastdev.com/blog/how-much-does-an-mvp-cost" rel="noopener noreferrer"&gt;how much an MVP costs&lt;/a&gt; and &lt;a href="https://shipfastdev.com/blog/cost-to-hire-a-software-developer" rel="noopener noreferrer"&gt;what a software developer costs&lt;/a&gt;; for the provider side, &lt;a href="https://shipfastdev.com/blog/freelancer-vs-agency-vs-dev-retainer" rel="noopener noreferrer"&gt;freelancer vs agency vs dev retainer&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the difference between fixed price and time and materials?
&lt;/h3&gt;

&lt;p&gt;Fixed price sets the total price in advance, so the provider carries the cost risk and changes need a new quote. Time and materials pays for hours actually worked at agreed rates, so you carry the cost risk but can change direction freely.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is fixed price good for an MVP?
&lt;/h3&gt;

&lt;p&gt;Only if the scope is truly settled. Most MVPs change as users respond, and every change becomes a change request. A fixed-price discovery phase followed by a flexible model usually works better.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a development retainer contract?
&lt;/h3&gt;

&lt;p&gt;A monthly contract for a fixed amount of development capacity and agreed responsibilities. You set priorities each month; spend stays the same.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I control costs in a time and materials contract?
&lt;/h3&gt;

&lt;p&gt;Set a cap per month or per feature that requires your approval to exceed, ask for weekly time reports linked to tasks, and insist on regular releases you can check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.acquisition.gov/far/16.202-1" rel="noopener noreferrer"&gt;FAR 16.202-1 Firm-fixed-price contracts&lt;/a&gt;, Federal Acquisition Regulation (Acquisition.gov), n.d.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.acquisition.gov/far/16.601" rel="noopener noreferrer"&gt;FAR 16.601 Time-and-materials contracts&lt;/a&gt;, Federal Acquisition Regulation (Acquisition.gov), n.d.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://agilemanifesto.org/" rel="noopener noreferrer"&gt;Manifesto for Agile Software Development&lt;/a&gt;, agilemanifesto.org, 2001&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://code.travail.gouv.fr/code-du-travail/l8241-1" rel="noopener noreferrer"&gt;Article L8241-1 du Code du travail&lt;/a&gt;, Code du travail numérique (Ministère du Travail), n.d.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bpifrance-creation.fr/encyclopedie/micro-entreprise-regime-auto-entrepreneur/lessentiel-ce-regime/independance-juridique" rel="noopener noreferrer"&gt;Indépendance juridique : risque de requalification du contrat de mission en contrat de travail&lt;/a&gt;, Bpifrance Création, 2026-06&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dora.dev/guides/dora-metrics/" rel="noopener noreferrer"&gt;DORA's software delivery performance metrics&lt;/a&gt;, DORA, 2026-01&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>freelance</category>
      <category>management</category>
      <category>startup</category>
    </item>
    <item>
      <title>How much does it cost to hire a software developer in 2026?</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Sat, 31 Oct 2026 09:00:05 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/how-much-does-it-cost-to-hire-a-software-developer-in-2026-2e26</link>
      <guid>https://dev.to/adilsoukaini/how-much-does-it-cost-to-hire-a-software-developer-in-2026-2e26</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/cost-to-hire-a-software-developer" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A full-time software developer in the United States costs roughly &lt;strong&gt;$190,000–$200,000 a year&lt;/strong&gt; once employer costs are added to the median salary; in France, a median full-stack developer costs around &lt;strong&gt;$86,000&lt;/strong&gt; with social contributions. Freelancers in German-speaking Europe bill about &lt;strong&gt;€91 an hour&lt;/strong&gt; for software and web development. The right number for you depends less on the headline rate than on how many hours of real product work you need each month.&lt;/p&gt;

&lt;p&gt;Below are the figures, where they come from, and the assumptions you need to adjust before you use them in a budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  Salary benchmarks by region
&lt;/h2&gt;

&lt;p&gt;Two data sets are useful here. The US government's figure is the most robust; the developer survey gives a comparable view across countries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;United States (official statistics):&lt;/strong&gt; the median annual wage for software developers was &lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm" rel="noopener noreferrer"&gt;$135,980 in May 2025, or $64.44 an hour&lt;/a&gt;, according to the Bureau of Labor Statistics. Half earned more, half less.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Across countries (self-reported survey):&lt;/strong&gt; the &lt;a href="https://survey.stackoverflow.co/2025/work" rel="noopener noreferrer"&gt;2025 Stack Overflow Developer Survey&lt;/a&gt; reports these median yearly salaries for full-stack developers, converted to US dollars: United States $138,000, United Kingdom $85,428.50, Germany $75,410, France $58,007, India $13,949.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specialisation matters:&lt;/strong&gt; in the same survey, back-end developers in France report a median of $71,929 and mobile developers $63,228; in the US, back-end developers report $175,000.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep two caveats in mind. Survey salaries are self-reported and converted to dollars, so exchange rates move them. And a median says nothing about the person you will actually hire: a senior engineer who can own a product end to end usually sits well above it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an employee really costs: salary plus employer costs
&lt;/h2&gt;

&lt;p&gt;Salary is not the cost of an employee. Employers also pay social contributions, insurance, paid leave and pensions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In US private industry, wages and salaries made up &lt;a href="https://www.bls.gov/news.release/ecec.nr0.htm" rel="noopener noreferrer"&gt;70.0% of total compensation in June 2026&lt;/a&gt; ($32.82 of $46.89 per hour); benefits made up the other 30.0%.&lt;/li&gt;
&lt;li&gt;In the EU, non-wage costs were &lt;a href="https://ec.europa.eu/eurostat/statistics-explained/index.php?title=Wages_and_labour_costs" rel="noopener noreferrer"&gt;24.8% of total labour costs in 2025&lt;/a&gt; (25.6% in the euro area). France had the highest share in the EU, at &lt;strong&gt;32.3%&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Applying those ratios gives a rough annual cost per employee. These are whole-economy averages, so treat the results as an order of magnitude, not a quote from your accountant.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;US median software developer:&lt;/strong&gt; $135,980 ÷ 0.70 ≈ &lt;strong&gt;$194,000 a year&lt;/strong&gt;, or about $16,200 a month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;French median full-stack developer:&lt;/strong&gt; $58,007 ÷ (1 − 0.323) ≈ &lt;strong&gt;$85,700 a year&lt;/strong&gt;, or about $7,100 a month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then add the costs that never appear in labour statistics: recruiting (job ads, agency fees or your own time), a laptop and software licences, onboarding time before the person is productive, and management time. If nobody on your team can review code or set technical direction, you also need to budget for that (see &lt;a href="https://shipfastdev.com/blog/fractional-cto-vs-development-partner" rel="noopener noreferrer"&gt;fractional CTO vs development partner&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  What a freelancer costs
&lt;/h2&gt;

&lt;p&gt;Freelance rates look high next to salaries because the freelancer covers their own taxes, equipment, unpaid gaps between projects and holidays. The largest recurring survey of freelancers in German-speaking Europe, freelancermap's &lt;a href="https://www.freelancermap.de/blog/?p=71117" rel="noopener noreferrer"&gt;Freelancer-Kompass 2026&lt;/a&gt;, found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;an average hourly rate of &lt;strong&gt;€91 for software and web development&lt;/strong&gt; (€100 for IT infrastructure);&lt;/li&gt;
&lt;li&gt;an average of €103 an hour across all fields, practically flat versus €104 the year before;&lt;/li&gt;
&lt;li&gt;average monthly project revenue down about 17%, to €6,653, and 49% of freelancers reporting a worse order situation than the previous year.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last two points matter to buyers: in 2026 good freelancers in that market have more availability than they did, so you have room to negotiate scope and commitment, not just price.&lt;/p&gt;

&lt;p&gt;To compare with a salary, multiply the rate by the hours you actually need. At €91 an hour, a freelancer working 40 hours a month costs about €3,640; at 140 billable hours a month (close to full time), about €12,740. A full-time freelancer is therefore often more expensive than an employee in the same country, while a part-time one is usually much cheaper than any hire.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agency and monthly retainer
&lt;/h2&gt;

&lt;p&gt;Agencies price by project or by day and add project management, design and quality assurance on top of developer time. A monthly development retainer buys a fixed block of capacity from one developer or a small team for a flat fee. The trade-offs between these models (who carries the risk, how changes are handled, what happens if someone leaves) are covered in &lt;a href="https://shipfastdev.com/blog/freelancer-vs-agency-vs-dev-retainer" rel="noopener noreferrer"&gt;freelancer vs agency vs dev retainer&lt;/a&gt; and &lt;a href="https://shipfastdev.com/blog/fixed-price-vs-time-and-materials-vs-retainer" rel="noopener noreferrer"&gt;fixed price vs time and materials vs retainer&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked comparison
&lt;/h2&gt;

&lt;p&gt;Suppose you need someone to ship and maintain a web product, and you estimate 60 hours of development a month for the next year. Using the figures above:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;US employee:&lt;/strong&gt; about $194,000 a year in total employment cost, for full-time capacity. You pay for full-time capacity even if you need 60 hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;French employee:&lt;/strong&gt; about $85,700 a year, same logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DACH freelancer at €91/hour:&lt;/strong&gt; 60 × €91 × 12 ≈ &lt;strong&gt;€65,500 a year&lt;/strong&gt;, with no recruiting cost but less continuity if they take another client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retainer:&lt;/strong&gt; a flat monthly fee for agreed capacity; compare the fee with the hours and responsibilities included (reviews, deployments, hosting, support).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With these numbers the logic is clear: below roughly half-time need, buying capacity (freelancer or retainer) is cheaper than hiring; at full-time need for years, a hire usually wins on cost and gains knowledge that stays in the company.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to estimate your own number
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start from the work, not the role.&lt;/strong&gt; List what must ship in the next three to six months. If you do not have that list yet, start with &lt;a href="https://shipfastdev.com/blog/how-to-scope-an-mvp" rel="noopener noreferrer"&gt;how to scope an MVP&lt;/a&gt; and &lt;a href="https://shipfastdev.com/blog/how-much-does-an-mvp-cost" rel="noopener noreferrer"&gt;how much an MVP costs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Convert to hours per month&lt;/strong&gt;, then add 20–30% for meetings, reviews, bugs and deployments. This is a planning assumption, not a statistic; adjust it to your experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price each model&lt;/strong&gt; with your local salary data and the employer-cost ratio for your country.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add the hidden items:&lt;/strong&gt; recruiting, equipment, management time, and the cost of a bad fit (weeks of lost progress).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check location options.&lt;/strong&gt; Working with a developer in a nearby time zone can lower cost without losing working hours; see &lt;a href="https://shipfastdev.com/blog/nearshore-software-development-morocco" rel="noopener noreferrer"&gt;nearshore software development in Morocco&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How much does it cost to hire a software developer per month?
&lt;/h3&gt;

&lt;p&gt;In the US, a median developer costs about $16,000 a month including employer costs (BLS May 2025 median salary, 70% wage share). In France, a median full-stack developer costs about $7,100 a month including employer contributions. A part-time freelancer or retainer can cost a fraction of that because you only pay for the hours you need.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is it cheaper to hire a freelancer or an employee?
&lt;/h3&gt;

&lt;p&gt;For part-time or uncertain needs, a freelancer is usually cheaper because you pay only for hours worked and nothing between projects. For full-time work over several years, an employee usually costs less per hour and the knowledge stays in your company.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is the average hourly rate of a freelance developer?
&lt;/h3&gt;

&lt;p&gt;In Germany, Austria and Switzerland, freelancermap's 2026 survey puts software and web development at an average of €91 an hour. Rates vary widely by country, seniority and specialisation, so use local data where you hire.&lt;/p&gt;

&lt;h3&gt;
  
  
  What costs are on top of a developer's salary?
&lt;/h3&gt;

&lt;p&gt;Employer social contributions and benefits (30.0% of compensation in US private industry; 32.3% non-wage costs in France), plus recruiting, equipment, software licences, onboarding time and management time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm" rel="noopener noreferrer"&gt;Software Developers, Quality Assurance Analysts, and Testers (Occupational Outlook Handbook)&lt;/a&gt;, U.S. Bureau of Labor Statistics, 2026-08&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.bls.gov/news.release/ecec.nr0.htm" rel="noopener noreferrer"&gt;Employer Costs for Employee Compensation – June 2026&lt;/a&gt;, U.S. Bureau of Labor Statistics, 2026-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://survey.stackoverflow.co/2025/work" rel="noopener noreferrer"&gt;2025 Developer Survey – Work (salary by developer type and country)&lt;/a&gt;, Stack Overflow, 2025-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ec.europa.eu/eurostat/statistics-explained/index.php?title=Wages_and_labour_costs" rel="noopener noreferrer"&gt;Wages and labour costs (Statistics Explained)&lt;/a&gt;, Eurostat, 2026-03&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freelancermap.de/blog/?p=71117" rel="noopener noreferrer"&gt;Freelancer-Einkommen: Projektumsatz sinkt um 17 % (Freelancer-Kompass 2026)&lt;/a&gt;, freelancermap, 2026-04&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>freelance</category>
      <category>hiring</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Laravel vs Node.js for a startup backend: how to choose</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Fri, 30 Oct 2026 09:00:24 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/laravel-vs-nodejs-for-a-startup-backend-how-to-choose-488</link>
      <guid>https://dev.to/adilsoukaini/laravel-vs-nodejs-for-a-startup-backend-how-to-choose-488</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/laravel-vs-nodejs-for-startups" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For most startup backends, both Laravel and Node.js will do the job; the better choice depends on your product and your team. Laravel gets a typical SaaS or marketplace backend (accounts, admin, payments, emails, background jobs) built fastest because those pieces ship with the framework. Node.js, usually with NestJS or Express, fits best when your team writes TypeScript everywhere, when the product is heavy on real-time connections, or when you want the largest hiring pool.&lt;/p&gt;

&lt;p&gt;Here is how they compare on the four things a founder should care about: ecosystem, hiring, speed of building and hosting.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, what you are comparing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Laravel&lt;/strong&gt; is a PHP web framework. Its documentation lists &lt;a href="https://laravel.com/docs/13.x/installation" rel="noopener noreferrer"&gt;"thorough dependency injection, an expressive database abstraction layer, queues and scheduled jobs, unit and integration testing"&lt;/a&gt; among its built-in features, and it can serve either full pages or an API for a separate frontend or mobile app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; is a runtime, not a framework. Its own site describes it as &lt;a href="https://nodejs.org/en/about" rel="noopener noreferrer"&gt;"an asynchronous event-driven JavaScript runtime"&lt;/a&gt; built for scalable network applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Express&lt;/strong&gt; is a minimal web framework on top of Node.js: routing and middleware, and you choose the rest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NestJS&lt;/strong&gt; is a structured framework for Node.js, written in TypeScript. Its docs say it uses &lt;a href="https://docs.nestjs.com/" rel="noopener noreferrer"&gt;Express by default, optionally Fastify&lt;/a&gt;, and that its architecture is "heavily inspired by Angular".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the fair comparisons are Laravel vs NestJS (both opinionated, batteries-included) and Laravel vs Express (opinionated vs minimal).&lt;/p&gt;

&lt;h2&gt;
  
  
  Ecosystem: included vs assembled
&lt;/h2&gt;

&lt;p&gt;Laravel's advantage is that the common parts of a business application are first-party and designed to work together. Authentication scaffolding comes from its starter kits, API tokens from Sanctum, background work from queues, and the official package list includes billing (Cashier), search (Scout), queue monitoring (Horizon) and real-time broadcasting. One set of docs, one upgrade cycle.&lt;/p&gt;

&lt;p&gt;In Node.js, the npm ecosystem is enormous, but you assemble the stack: an ORM, a validation library, a queue, an auth solution. NestJS reduces the assembly by giving you modules, dependency injection and conventions. The NestJS docs are explicit about why it exists: many Node.js libraries exist, but &lt;a href="https://docs.nestjs.com/" rel="noopener noreferrer"&gt;"none of them effectively solves the main problem of architecture"&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For a founder, the practical question is: how many decisions does your developer have to make before building your first feature? With Laravel, fewer. With Express, many. NestJS sits in between.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hiring pool: what the survey data says
&lt;/h2&gt;

&lt;p&gt;The 2025 Stack Overflow Developer Survey (23,678 respondents to the web frameworks question) reports these usage shares among all respondents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://survey.stackoverflow.co/2025/technology" rel="noopener noreferrer"&gt;Node.js 48.7%, Express 19.9%, NestJS 6.7%, Laravel 8.9%&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;For languages: JavaScript 66%, TypeScript 43.6%, PHP 18.9%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the &lt;a href="https://survey.stackoverflow.co/2024/technology" rel="noopener noreferrer"&gt;2024 survey&lt;/a&gt;, the same frameworks stood at Node.js 40.8%, Express 17.8%, NestJS 5.8% and Laravel 7.9%. The samples differ each year, so treat this as direction rather than growth rates, but neither side is shrinking.&lt;/p&gt;

&lt;p&gt;Two readings matter for hiring:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript/TypeScript developers are the larger pool.&lt;/strong&gt; If your frontend is React or React Native, one language across the stack lets the same people work on both sides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Framework-specific pools are closer than the language numbers suggest.&lt;/strong&gt; NestJS (6.7%) and Laravel (8.9%) are in the same range. Hiring "a Node.js developer" does not mean hiring someone who knows how to structure a large backend.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PHP also has a very large installed base: W3Techs reports that PHP is used by &lt;a href="https://w3techs.com/technologies/details/pl-php" rel="noopener noreferrer"&gt;69.8% of websites whose server-side language it knows&lt;/a&gt; (October 2026). That is mostly existing sites, including WordPress, but it means PHP skills are common among agencies and freelancers. For more on today's hiring market, see &lt;a href="https://shipfastdev.com/blog/hiring-developers-in-2026-what-changed" rel="noopener noreferrer"&gt;hiring developers in 2026&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speed of building
&lt;/h2&gt;

&lt;p&gt;For a CRUD-heavy product (users, listings, bookings, invoices, an admin area) Laravel is usually quicker to a working first version, because the conventions answer most structural questions. Official starter kits provide the authentication screens and backend logic, and a new project uses SQLite by default, so you can start without a database server.&lt;/p&gt;

&lt;p&gt;Node.js catches up, or wins, when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the frontend and backend share TypeScript types, so API changes are checked at compile time on both sides;&lt;/li&gt;
&lt;li&gt;the product keeps many connections open (chat, live dashboards, multiplayer features), which suits Node.js's non-blocking design: the Node.js site notes that &lt;a href="https://nodejs.org/en/about" rel="noopener noreferrer"&gt;"many connections can be handled concurrently"&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;you are building small services or serverless functions rather than one main application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Node.js is weaker for CPU-heavy work in the request path; its documentation points to child processes and the cluster module to use multiple cores. Laravel pushes heavy work to queues. In both cases, long tasks belong in background jobs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hosting and running costs
&lt;/h2&gt;

&lt;p&gt;Both run anywhere containers run. Laravel has its own managed options (Laravel Cloud, Forge, Vapor), and it runs well on container platforms; we describe one setup in &lt;a href="https://shipfastdev.com/blog/deploy-laravel-google-cloud-run" rel="noopener noreferrer"&gt;deploying Laravel on Google Cloud Run&lt;/a&gt;. Node.js has the broadest choice of serverless and edge platforms, which helps if your frontend is Next.js.&lt;/p&gt;

&lt;p&gt;At MVP scale, the hosting bill rarely decides the choice. The database, queues, search and file storage cost the same whatever language talks to them.&lt;/p&gt;

&lt;h2&gt;
  
  
  From our work
&lt;/h2&gt;

&lt;p&gt;ShipFastDev builds with both Laravel and NestJS. The &lt;a href="https://shipfastdev.com/work/driveway-morocco" rel="noopener noreferrer"&gt;Driveway Morocco&lt;/a&gt; platform is a single Laravel application that serves the React web interface through Inertia and, since the mobile app was added, a JSON API with Sanctum token authentication for the Expo app. Search runs on Laravel Scout with Meilisearch (described in &lt;a href="https://shipfastdev.com/blog/laravel-search-meilisearch-fallback" rel="noopener noreferrer"&gt;Laravel search with a Meilisearch fallback&lt;/a&gt;). One backend serves two clients, which kept the mobile app from needing its own server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decision checklist
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Choose Laravel if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your product is a classic web application or marketplace with an admin side;&lt;/li&gt;
&lt;li&gt;you want auth, queues, emails, scheduled jobs and testing set up the same way on day one;&lt;/li&gt;
&lt;li&gt;your developer or partner already knows PHP well.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose Node.js with NestJS if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your team writes TypeScript across web, mobile and backend;&lt;/li&gt;
&lt;li&gt;real-time features are central to the product;&lt;/li&gt;
&lt;li&gt;you expect to hire several backend developers and want the largest pool.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Choose plain Express if&lt;/strong&gt; the backend is small (a few endpoints, webhooks, a proxy to other services) and you don't need a framework's structure.&lt;/p&gt;

&lt;p&gt;Whatever you choose, the bigger risk is an unstructured codebase, not the language; see &lt;a href="https://shipfastdev.com/blog/technical-debt-for-founders" rel="noopener noreferrer"&gt;technical debt explained for founders&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is Laravel still a good choice in 2026?
&lt;/h3&gt;

&lt;p&gt;Yes. Laravel's share in the Stack Overflow survey went from 7.9% (2024) to 8.9% (2025), and the current documentation covers Laravel 13.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Node.js faster than Laravel?
&lt;/h3&gt;

&lt;p&gt;For many concurrent, I/O-bound connections Node.js's event-driven model is a good fit. For a typical CRUD API the database and caching usually matter more than the language. Measure with your own workload before deciding on speed alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Laravel or NestJS for a mobile app backend?
&lt;/h3&gt;

&lt;p&gt;Both work: each can expose a JSON API with token authentication. Pick NestJS if your mobile team writes TypeScript and wants shared types; pick Laravel if you also need a web admin and want it in the same app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I switch from Laravel to Node.js later?
&lt;/h3&gt;

&lt;p&gt;Yes, but it is a rewrite. A more common path is to keep the main backend and add a separate Node.js service for the part that needs it, such as real-time features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://survey.stackoverflow.co/2025/technology" rel="noopener noreferrer"&gt;2025 Stack Overflow Developer Survey: Technology&lt;/a&gt;, Stack Overflow, July 2025&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://survey.stackoverflow.co/2024/technology" rel="noopener noreferrer"&gt;2024 Stack Overflow Developer Survey: Technology&lt;/a&gt;, Stack Overflow, July 2024&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://laravel.com/docs/13.x/installation" rel="noopener noreferrer"&gt;Laravel 13.x documentation: Installation&lt;/a&gt;, Laravel, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.nestjs.com/" rel="noopener noreferrer"&gt;NestJS documentation: Introduction&lt;/a&gt;, NestJS, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en/about" rel="noopener noreferrer"&gt;About Node.js&lt;/a&gt;, OpenJS Foundation / Node.js, accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://w3techs.com/technologies/details/pl-php" rel="noopener noreferrer"&gt;Usage statistics of PHP for websites&lt;/a&gt;, W3Techs, October 2026&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>laravel</category>
      <category>node</category>
      <category>startup</category>
      <category>backend</category>
    </item>
    <item>
      <title>Hiring Junior Developers in the AI Era: What the Data Shows</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Wed, 28 Oct 2026 09:00:03 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/hiring-junior-developers-in-the-ai-era-what-the-data-shows-3ek7</link>
      <guid>https://dev.to/adilsoukaini/hiring-junior-developers-in-the-ai-era-what-the-data-shows-3ek7</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/junior-developers-hiring-ai-era" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hiring of junior developers has fallen further than any other part of the software job market since 2022. Payroll data shows employment of US software developers aged 22 to 25 down nearly 20% from its late-2022 peak by September 2025, and new graduates now make up a small share of hires at both large tech companies and startups. Researchers disagree on how much of this is AI and how much is interest rates, but for a small team the practical question is the same: a junior hire works only if someone senior has time to review their work.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the data shows
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Employment of young developers is down.&lt;/strong&gt; In the Stanford Digital Economy Lab's &lt;a href="https://digitaleconomy.stanford.edu/wp-content/uploads/2025/08/Canaries_BrynjolfssonChandarChen.pdf" rel="noopener noreferrer"&gt;payroll study&lt;/a&gt; (ADP data), employment for software developers aged 22 to 25 had declined nearly 20% from its late-2022 peak by September 2025, while older age groups kept growing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The gap keeps widening.&lt;/strong&gt; In the &lt;a href="https://digitaleconomy.stanford.edu/news/canariesaug26/" rel="noopener noreferrer"&gt;August 2026 update&lt;/a&gt;, employment of 22–25-year-olds in highly AI-exposed occupations stands about 19% below where it would be had it kept pace with less-exposed peers, up from a 15% gap in July 2025. The adjustment happens "primarily through reduced hiring of young workers rather than increased separations."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New graduates are a small share of hires.&lt;/strong&gt;&lt;a href="https://www.signalfire.com/blog/signalfire-state-of-talent-report-2025" rel="noopener noreferrer"&gt;SignalFire's 2025 report&lt;/a&gt; found new grads made up just 7% of hires at the 15 largest tech companies, down 25% from 2023 and over 50% from 2019. At VC-backed startups, they were under 6% of hires, down 11% from 2023 and over 30% from 2019.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The rebound is senior.&lt;/strong&gt; US software development postings have grown almost 15% since early 2025, but &lt;a href="https://hiringlab.indeed.com/2026/07/08/ai-and-job-postings-from-destruction-to-creation/" rel="noopener noreferrer"&gt;71% of the increase&lt;/a&gt; between May 2025 and May 2026 came from senior roles (Indeed Hiring Lab).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graduates are taking other paths.&lt;/strong&gt; According to &lt;a href="https://economicgraph.linkedin.com/content/dam/me/economicgraph/en-us/PDF/us-software-engineer-talent-landscape-2026.pdf" rel="noopener noreferrer"&gt;LinkedIn's Economic Graph&lt;/a&gt;, 55% of computer science graduates started in non-software-engineering jobs in 2023 and 2024, against 49% in 2016, and entry-level software engineering hiring did not rebound at the end of 2025.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Is AI the cause? Two readings of the same trend
&lt;/h2&gt;

&lt;p&gt;The Stanford authors argue their results are consistent with generative AI affecting entry-level work. Declines are concentrated in occupations where AI tends to automate tasks rather than augment workers. In a &lt;a href="https://digitaleconomy.stanford.edu/news/canaries-interest-rates-and-timinga-more-on-recent-drivers-of-employment-changes-for-young-workers" rel="noopener noreferrer"&gt;February 2026 note&lt;/a&gt;, they also tested the interest-rate explanation and found that "more AI-exposed jobs are actually less exposed to interest rates on average." With stricter controls, they find the decline is significant only after 2024, and they acknowledge that the fall in young developer employment has "various factors," not AI alone.&lt;/p&gt;

&lt;p&gt;LinkedIn's economists read their own data differently. They find that software engineering hiring, junior and overall, has tracked the broader tech sector and national hiring, and that changes in real interest rates explain most of the variation over the past decade. They call the lack of an entry-level rebound "concerning for job seekers" but say it is not enough to blame AI.&lt;/p&gt;

&lt;p&gt;Both camps agree on the fact that matters for you: the entry level is weak, and the recovery so far favours experienced people. For the wider market picture, see &lt;a href="https://shipfastdev.com/blog/ai-impact-on-software-developer-jobs" rel="noopener noreferrer"&gt;how AI is changing the developer job market&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The paradox: juniors gain the most from AI
&lt;/h2&gt;

&lt;p&gt;The same tools that may be reducing junior hiring help juniors the most. In randomised field experiments with &lt;a href="https://www.microsoft.com/en-us/research/?p=1148213" rel="noopener noreferrer"&gt;4,867 developers&lt;/a&gt; at Microsoft, Accenture and a Fortune 100 company, an AI coding assistant increased completed tasks by 26.08% on average, and less experienced developers both adopted it more and gained more.&lt;/p&gt;

&lt;p&gt;There is a catch. In a user study published at the ACM CCS 2023 security conference, &lt;a href="https://arxiv.org/abs/2211.03622" rel="noopener noreferrer"&gt;participants with an AI assistant wrote significantly less secure code&lt;/a&gt; than those without, and were more likely to believe their code was secure. Participants who trusted the AI less and engaged more with their prompts produced fewer vulnerabilities. A junior with AI can produce a lot of plausible code quickly; without review, that is a risk, not a gain. Our checklist on &lt;a href="https://shipfastdev.com/blog/ai-generated-code-security-risks" rel="noopener noreferrer"&gt;AI-generated code security&lt;/a&gt; lists what to check.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should your startup hire a junior developer?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  It can work if
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You already have a senior developer or technical lead who can review every change and has scheduled time for it.&lt;/li&gt;
&lt;li&gt;The product's architecture is settled, and the backlog contains well-defined tasks: UI components, tests, internal tools, small integrations.&lt;/li&gt;
&lt;li&gt;You have automated tests and continuous integration, so mistakes show up before production.&lt;/li&gt;
&lt;li&gt;You can wait a few months for the hire to become fully productive.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Think twice if
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You are pre-MVP with no technical lead. A junior should not be the person deciding architecture, authentication or data models.&lt;/li&gt;
&lt;li&gt;Your product handles payments, health data or other sensitive information and no one can review security.&lt;/li&gt;
&lt;li&gt;You need speed now. The research on &lt;a href="https://shipfastdev.com/blog/ai-coding-assistants-productivity-research" rel="noopener noreferrer"&gt;AI coding assistant productivity&lt;/a&gt; shows gains depend on review and testing, which a junior alone cannot supply.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you lack senior capacity, you can rent it: a &lt;a href="https://shipfastdev.com/blog/fractional-cto-vs-development-partner" rel="noopener noreferrer"&gt;fractional CTO or development partner&lt;/a&gt; can provide the review and direction that make a junior productive.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to make a junior hire work with AI tools
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Make code review non-negotiable.&lt;/strong&gt; Every pull request gets a senior review before merge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask juniors to explain AI-generated code.&lt;/strong&gt; If they cannot explain a block line by line in review, it does not get merged. This keeps learning happening.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Route sensitive work to seniors.&lt;/strong&gt; Authentication, payments, permissions and database migrations stay with experienced people until the junior has shown they handle them well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give them tests to write.&lt;/strong&gt; Writing tests teaches the codebase and strengthens the safety net that AI-heavy teams need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Track progress.&lt;/strong&gt; Watch the number of review rounds per pull request; it should fall over the first months.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document onboarding.&lt;/strong&gt; A written setup guide and coding conventions help juniors and AI tools alike. See our guide to &lt;a href="https://shipfastdev.com/blog/onboarding-a-remote-developer" rel="noopener noreferrer"&gt;onboarding a remote developer&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The long-term cost of skipping juniors
&lt;/h2&gt;

&lt;p&gt;Every senior developer was once a junior. If companies stop hiring at the entry level, the pool of experienced people who can review AI-generated code will shrink over time. For a single startup that is not a reason to hire someone you cannot support, but it is a reason not to dismiss junior candidates outright once you have the review capacity in place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is it harder for junior developers to get hired in 2026?
&lt;/h3&gt;

&lt;p&gt;Yes. Employment of US developers aged 22 to 25 fell nearly 20% from late 2022 to September 2025, and most of the 2025–2026 recovery in postings has been for senior roles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is AI replacing junior developers?
&lt;/h3&gt;

&lt;p&gt;Partly, according to Stanford's payroll research, which links the decline to AI-exposed occupations. LinkedIn's analysis points mainly to interest rates and the economic cycle. The cause is debated; the weak entry-level market is not.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should a startup hire a junior developer?
&lt;/h3&gt;

&lt;p&gt;Only if a senior person can review their work regularly and the tasks are well defined. Without that, a junior with AI tools can produce code faster than anyone can check it.&lt;/p&gt;

&lt;h3&gt;
  
  
  How should junior developers use AI tools safely?
&lt;/h3&gt;

&lt;p&gt;Use them, but treat output as a draft: understand every line, write tests, and get a senior review. Research shows AI users can write less secure code while feeling more confident about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://digitaleconomy.stanford.edu/wp-content/uploads/2025/08/Canaries_BrynjolfssonChandarChen.pdf" rel="noopener noreferrer"&gt;Canaries in the Coal Mine? Six Facts about the Recent Employment Effects of Artificial Intelligence (working paper, November 2025 version)&lt;/a&gt;, Stanford Digital Economy Lab, 2025-11&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://digitaleconomy.stanford.edu/news/canariesaug26/" rel="noopener noreferrer"&gt;Canaries in the Coal Mine: August 2026 update&lt;/a&gt;, Stanford Digital Economy Lab, 2026-08&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://digitaleconomy.stanford.edu/news/canaries-interest-rates-and-timinga-more-on-recent-drivers-of-employment-changes-for-young-workers" rel="noopener noreferrer"&gt;Canaries, Interest Rates, and Timing: More on Recent Drivers of Employment Changes for Young Workers&lt;/a&gt;, Stanford Digital Economy Lab, 2026-02&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.signalfire.com/blog/signalfire-state-of-talent-report-2025" rel="noopener noreferrer"&gt;SignalFire State of Talent Report 2025&lt;/a&gt;, SignalFire, 2025-05&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://economicgraph.linkedin.com/content/dam/me/economicgraph/en-us/PDF/us-software-engineer-talent-landscape-2026.pdf" rel="noopener noreferrer"&gt;U.S. Software Engineer Talent Landscape&lt;/a&gt;, LinkedIn Economic Graph, 2026-02&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hiringlab.indeed.com/2026/07/08/ai-and-job-postings-from-destruction-to-creation/" rel="noopener noreferrer"&gt;AI and Job Postings: From Destruction to Creation?&lt;/a&gt;, Indeed Hiring Lab, 2026-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/research/?p=1148213" rel="noopener noreferrer"&gt;The Effects of Generative AI on High-Skilled Work: Evidence from Three Field Experiments with Software Developers&lt;/a&gt;, Microsoft Research (Cui, Demirer, Jaffe, Musolff, Peng, Salz), 2025-06&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2211.03622" rel="noopener noreferrer"&gt;Do Users Write More Insecure Code with AI Assistants? (ACM CCS 2023)&lt;/a&gt;, Perry, Srivastava, Kumar, Boneh (arXiv), 2023-12&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>How AI is changing the software developer job market</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Tue, 27 Oct 2026 09:00:04 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/how-ai-is-changing-the-software-developer-job-market-1p0m</link>
      <guid>https://dev.to/adilsoukaini/how-ai-is-changing-the-software-developer-job-market-1p0m</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/ai-impact-on-software-developer-jobs" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AI has not wiped out software developer jobs, but it is changing who gets hired. In the US, software development job postings are still 27.5% below their February 2020 level, yet they have grown almost 15% since early 2025, and most of that growth is in senior and AI-related roles. The clearest losses are at the entry level, among developers aged 22 to 25.&lt;/p&gt;

&lt;p&gt;This article pulls together the most recent official and research data (up to mid-2026) on employment, job postings and skills, then translates it into what it means if you are a founder about to hire.&lt;/p&gt;

&lt;h2&gt;
  
  
  Employment: still growing, but not evenly
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm" rel="noopener noreferrer"&gt;US Bureau of Labor Statistics&lt;/a&gt; counted 1,717,800 software developer jobs in 2025 and projects 10% growth for the occupation between 2025 and 2035, about 174,700 additional jobs. The median annual pay for software developers was $135,980 in May 2025. The BLS explicitly links the demand to AI: it expects strong demand because of "the continued expansion of software development for artificial intelligence (AI), Internet of Things (IoT), robotics, and other automation applications."&lt;/p&gt;

&lt;p&gt;The picture is different for the narrower role of "computer programmer". The &lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/computer-programmers.htm" rel="noopener noreferrer"&gt;BLS projects a 7% decline&lt;/a&gt; in that occupation over the same decade (110,800 jobs in 2025), pointing to automation, AI handling repetitive coding tasks and higher-level work moving to software developers.&lt;/p&gt;

&lt;p&gt;In Europe, the trend is still upward. &lt;a href="https://ec.europa.eu/eurostat/statistics-explained/index.php?title=ICT_specialists_in_employment" rel="noopener noreferrer"&gt;Eurostat&lt;/a&gt; reports more than 10 million ICT specialists employed in the EU in 2025, 5.0% of total employment, up 59.4% between 2015 and 2025, against 9.8% growth in total employment.&lt;/p&gt;

&lt;p&gt;So the headline is not "fewer developers". It is a shift away from roles that mostly turn specifications into code, and toward roles that design, integrate and own systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Job postings: a slow recovery led by senior and AI roles
&lt;/h2&gt;

&lt;p&gt;Job postings react faster than employment statistics. According to &lt;a href="https://hiringlab.indeed.com/2026/07/08/ai-and-job-postings-from-destruction-to-creation/" rel="noopener noreferrer"&gt;Indeed Hiring Lab (July 2026)&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;US software development postings remain 27.5% below February 2020 levels.&lt;/li&gt;
&lt;li&gt;They have grown by almost 15% since the launch of Claude Code in late February 2025, while overall postings fell 7% over the same period.&lt;/li&gt;
&lt;li&gt;71% of the increase between May 2025 and May 2026 came from senior roles, and 37% from jobs with AI in their title.&lt;/li&gt;
&lt;li&gt;The share of postings that are software development jobs has been rising in most large developed economies, with the exception of Germany and France.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Earlier in 2026, &lt;a href="https://hiringlab.indeed.com/2026/01/22/january-labor-market-update-jobs-mentioning-ai-are-growing-amid-broader-hiring-weakness/" rel="noopener noreferrer"&gt;Indeed&lt;/a&gt; found that software development postings mentioned AI 20% or more of the time, and that tech postings mentioning AI were about 45% above their February 2020 level while total tech postings were 34% below it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is losing ground: early-career developers
&lt;/h2&gt;

&lt;p&gt;The strongest evidence of an AI effect concerns young workers. Stanford researchers Erik Brynjolfsson, Bharat Chandar and Ruyu Chen use ADP payroll data covering millions of US workers. In their &lt;a href="https://digitaleconomy.stanford.edu/publication/canaries-in-the-coal-mine/" rel="noopener noreferrer"&gt;August 2026 revision&lt;/a&gt;, employment of workers aged 22 to 25 in AI-exposed occupations stands 19% below where it would be had it kept pace with less-exposed peers. Experienced workers show no comparable gap, and the adjustment happens mainly through fewer hires of young people rather than layoffs. The authors also state that they find "no evidence of widespread, economy-wide job displacement."&lt;/p&gt;

&lt;p&gt;Software developers are one of the two case studies in the paper. In the &lt;a href="https://digitaleconomy.stanford.edu/wp-content/uploads/2025/08/Canaries_BrynjolfssonChandarChen.pdf" rel="noopener noreferrer"&gt;November 2025 version&lt;/a&gt;, employment for software developers aged 22 to 25 had declined nearly 20% from its late-2022 peak by September 2025, while older age groups kept growing.&lt;/p&gt;

&lt;p&gt;Not everyone reads the data the same way. &lt;a href="https://economicgraph.linkedin.com/content/dam/me/economicgraph/en-us/PDF/us-software-engineer-talent-landscape-2026.pdf" rel="noopener noreferrer"&gt;LinkedIn's Economic Graph team (February 2026)&lt;/a&gt; finds that software engineering hiring has broadly tracked the tech sector and the national economy, and that changes in real interest rates account for most of the variation in software engineering hiring over the past decade. They note that entry-level hiring did not rebound at the end of 2025 and call that "concerning", but say it is not enough to conclude AI is the cause. Our article on &lt;a href="https://shipfastdev.com/blog/junior-developers-hiring-ai-era" rel="noopener noreferrer"&gt;junior developer hiring in the AI era&lt;/a&gt; goes deeper into this debate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which roles and skills are growing, and which are shrinking
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Growing
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Senior engineers.&lt;/strong&gt; They account for most of the 2025–2026 rebound in postings (Indeed).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI engineers.&lt;/strong&gt; LinkedIn reports that AI engineers now account for a share of software engineering hires 14 times higher than in 2019 and 10 times higher than in 2022. Machine learning engineers roughly doubled their share since 2019.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloud and data skills.&lt;/strong&gt; The top skills among software engineers hired in 2021–2025 were Python, AWS, SQL, JavaScript and React.js, and the fastest-growing included AI, Tailwind CSS, Azure Databricks, Google BigQuery and Azure SQL (LinkedIn).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Software jobs outside tech companies.&lt;/strong&gt; Professional services rose from 21.2% to 28.2% of software engineering postings between December 2023 and December 2025 (LinkedIn).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Shrinking or under pressure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pure coding roles&lt;/strong&gt;, as the BLS projection for computer programmers shows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entry-level positions&lt;/strong&gt;, as shown by the Stanford data and the flat entry-level hiring LinkedIn observed at the end of 2025.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Profiles built only on basic web skills.&lt;/strong&gt; LinkedIn notes that in 2016–2020 the top skills were JavaScript, CSS and HTML; hiring now leans toward Python, cloud and AI capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it means if you are hiring
&lt;/h2&gt;

&lt;p&gt;For a founder, these numbers translate into a few practical decisions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Budget for experience.&lt;/strong&gt; If most new demand is for senior people, that is where competition and salaries are. Our breakdown of the &lt;a href="https://shipfastdev.com/blog/cost-to-hire-a-software-developer" rel="noopener noreferrer"&gt;cost to hire a software developer&lt;/a&gt; shows how to compare options.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hire for judgement, not typing speed.&lt;/strong&gt; Coding assistants generate code quickly; the scarce skill is deciding what to build, reviewing it, testing it and keeping it secure. The research on &lt;a href="https://shipfastdev.com/blog/ai-coding-assistants-productivity-research" rel="noopener noreferrer"&gt;AI coding assistant productivity&lt;/a&gt; shows gains are real but uneven, and depend on review and testing practices.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't plan to skip engineers entirely.&lt;/strong&gt; AI app builders can get a prototype out, but security and maintenance still need someone accountable. See &lt;a href="https://shipfastdev.com/blog/vibe-coding-mvp-limits" rel="noopener noreferrer"&gt;what vibe coding can and cannot do for an MVP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask how candidates use AI.&lt;/strong&gt; With a fifth or more of software postings mentioning AI, it is now normal to assess this skill. Our guide to &lt;a href="https://shipfastdev.com/blog/hiring-developers-in-2026-what-changed" rel="noopener noreferrer"&gt;hiring developers in 2026&lt;/a&gt; covers how.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look beyond a full-time hire.&lt;/strong&gt; A small team may not need a permanent senior engineer on payroll. Compare a &lt;a href="https://shipfastdev.com/blog/freelancer-vs-agency-vs-dev-retainer" rel="noopener noreferrer"&gt;freelancer, an agency or a development retainer&lt;/a&gt; before deciding.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Will AI replace software developers?
&lt;/h3&gt;

&lt;p&gt;The data so far does not show it. The BLS still projects 10% growth in software developer jobs for 2025–2035, and the Stanford team finds no economy-wide displacement. What is shrinking is entry-level hiring and pure coding work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are software developer jobs growing in 2026?
&lt;/h3&gt;

&lt;p&gt;Postings are recovering: Indeed measured almost 15% growth in US software development postings since early 2025, although they remain 27.5% below February 2020. Most of the new demand is for senior and AI-related roles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which developer skills are most in demand?
&lt;/h3&gt;

&lt;p&gt;LinkedIn's 2026 data points to Python, cloud platforms (AWS, Azure, Google Cloud), SQL, React and AI-related skills. In practice, employers also look for the ability to review and test AI-generated code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is this a good time for a startup to hire developers?
&lt;/h3&gt;

&lt;p&gt;Experienced developers are in demand, so expect competition for strong seniors. Junior candidates are easier to find, but they need mentoring and review capacity. Decide first which of those your team can actually support.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/software-developers.htm" rel="noopener noreferrer"&gt;Software Developers, Quality Assurance Analysts, and Testers (Occupational Outlook Handbook)&lt;/a&gt;, U.S. Bureau of Labor Statistics, 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.bls.gov/ooh/computer-and-information-technology/computer-programmers.htm" rel="noopener noreferrer"&gt;Computer Programmers (Occupational Outlook Handbook)&lt;/a&gt;, U.S. Bureau of Labor Statistics, 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hiringlab.indeed.com/2026/07/08/ai-and-job-postings-from-destruction-to-creation/" rel="noopener noreferrer"&gt;AI and Job Postings: From Destruction to Creation?&lt;/a&gt;, Indeed Hiring Lab, 2026-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hiringlab.indeed.com/2026/01/22/january-labor-market-update-jobs-mentioning-ai-are-growing-amid-broader-hiring-weakness/" rel="noopener noreferrer"&gt;January 2026 US Labor Market Update: Jobs Mentioning AI Are Growing Amid Broader Hiring Weakness&lt;/a&gt;, Indeed Hiring Lab, 2026-01&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://digitaleconomy.stanford.edu/publication/canaries-in-the-coal-mine/" rel="noopener noreferrer"&gt;Canaries in the Coal Mine? Six Facts about the Recent Employment Effects of Artificial Intelligence (revised)&lt;/a&gt;, Stanford Digital Economy Lab, 2026-08&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://digitaleconomy.stanford.edu/wp-content/uploads/2025/08/Canaries_BrynjolfssonChandarChen.pdf" rel="noopener noreferrer"&gt;Canaries in the Coal Mine? (working paper, November 2025 version)&lt;/a&gt;, Stanford Digital Economy Lab, 2025-11&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://economicgraph.linkedin.com/content/dam/me/economicgraph/en-us/PDF/us-software-engineer-talent-landscape-2026.pdf" rel="noopener noreferrer"&gt;U.S. Software Engineer Talent Landscape&lt;/a&gt;, LinkedIn Economic Graph, 2026-02&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ec.europa.eu/eurostat/statistics-explained/index.php?title=ICT_specialists_in_employment" rel="noopener noreferrer"&gt;ICT specialists in employment&lt;/a&gt;, Eurostat, 2026&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>career</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>OptiVision: a white-labeled Odoo ERP for opticians</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Mon, 26 Oct 2026 09:00:03 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/optivision-a-white-labeled-odoo-erp-for-opticians-3mg8</link>
      <guid>https://dev.to/adilsoukaini/optivision-a-white-labeled-odoo-erp-for-opticians-3mg8</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/work/optivision-erp" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;OptiVision ERP is ShipFastDev's white-labeled Odoo 16 setup for opticians and eyewear shops: an eyewear catalogue with frame, lens and contact-lens specifications, a point of sale, stock management and sales reporting by eyewear category, all under the shop's own name and logo. It runs on Odoo Community with two custom modules. It is not public; a demo is available on a call.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an optician can do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep an eyewear catalogue.&lt;/strong&gt; Frames, prescription lenses, contact lenses, sunglasses, accessories and lens care, each product with an "Optician Details" tab next to Odoo's usual sales, purchase and inventory tabs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Record frame specifications&lt;/strong&gt;: material, style, colour, frame width, bridge width, temple length, and lens width and height.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Record lens and contact-lens specifications&lt;/strong&gt;: lens type (single vision, bifocal, progressive), material, index and prescription ranges; coatings (UV protection, blue-light filter, anti-reflective, photochromic); base curve, diameter, water content and oxygen permeability for contact lenses; and prescription values (SPH, CYL, AXIS, ADD, prism).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flag what a product needs&lt;/strong&gt;: whether a prescription is required, whether it is a prescription lens, whether it needs in-house fitting, and its warranty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Start with real brands.&lt;/strong&gt; The sample data includes frame brands (Ray-Ban, Oakley, Gucci, Tom Ford, Persol), lens makers (Essilor, ZEISS, Hoya) and contact-lens brands (Acuvue, CooperVision, Bausch + Lomb).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sell at the counter&lt;/strong&gt; with Odoo's point of sale, products grouped as frames, lenses, contact lenses, sunglasses, lens care and accessories. Odoo documents that its &lt;a href="https://www.odoo.com/documentation/16.0/applications/sales/point_of_sale.html" rel="noopener noreferrer"&gt;Point of Sale&lt;/a&gt; works on any device with a web browser, even if you are temporarily offline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;See what sells.&lt;/strong&gt; A sales analysis report shows revenue by eyewear category, for example prescription lenses against frames and sunglasses.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scan barcodes&lt;/strong&gt; for stock adjustments, picking and receiving, with a USB scanner or a phone camera.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What was built
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Odoo 16 Community in Docker.&lt;/strong&gt; Odoo and PostgreSQL run with Docker Compose, with a production Nginx configuration alongside. Stock and replenishment come from Odoo's standard &lt;a href="https://www.odoo.com/documentation/16.0/applications/inventory_and_mrp/inventory.html" rel="noopener noreferrer"&gt;Inventory&lt;/a&gt; app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An optician module.&lt;/strong&gt; A custom module adds the eyewear fields, a brand model, an API-key model, the optician views and sample data. Like any Odoo module, it declares its dependencies and data in a &lt;a href="https://www.odoo.com/documentation/16.0/developer/reference/backend/module.html" rel="noopener noreferrer"&gt;manifest&lt;/a&gt;, so it installs and upgrades on its own, with one documented command to upgrade it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A white-label module.&lt;/strong&gt; A second module removes Odoo's branding from the interface and gives the shop its own login page, colours, headers and footers, PDF report branding and email templates. A Branding settings page holds the brand name, tagline, support contact, colours and logos, and each company can set its own login logo, email header logo, PDF logo, favicon and footer text. Its latest version also hides the Enterprise upgrade prompts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A REST API for other apps.&lt;/strong&gt; Endpoints list products (filtered by type, brand or in-stock status), return product details with images, list brands, check stock by SKU and update stock levels. They are built as Odoo &lt;a href="https://www.odoo.com/documentation/16.0/developer/reference/backend/http.html" rel="noopener noreferrer"&gt;web controllers&lt;/a&gt;. API keys are managed in Inventory settings, one per app, each read-only or read-write, with usage tracking (last used, request count) and the option to regenerate or deactivate a key.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community modules instead of Enterprise features.&lt;/strong&gt; Modules from the Odoo Community Association (OCA) cover barcode scanning, barcode generation and &lt;a href="https://github.com/OCA/stock-logistics-barcode" rel="noopener noreferrer"&gt;multiple barcodes per product&lt;/a&gt;, SQL and visual BI reports, Excel and CSV exports, and approval workflows. For the till, OCA's &lt;a href="https://github.com/OCA/pos/tree/16.0" rel="noopener noreferrer"&gt;point-of-sale modules&lt;/a&gt; add margin on POS orders, the discount amount on the cashier screen and ticket, order-line editing, customer comments, lot selection and a default customer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it is kept reliable
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rate limits.&lt;/strong&gt; The production Nginx configuration allows 10 API requests per second (burst of 20) and 5 login attempts per minute (burst of 5).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security headers and filtering.&lt;/strong&gt; HSTS, X-Frame-Options, X-Content-Type-Options and a Content-Security-Policy, plus rules that block SQL-injection patterns, cross-site scripting attempts, vulnerability scanners and path traversal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Caching.&lt;/strong&gt; Static files are cached for 7 days and images for 1 day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API access.&lt;/strong&gt; Every endpoint except the health check requires an API key, and updating stock requires a key with write permission. The health check lets monitoring tools see whether the service is up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A production checklist.&lt;/strong&gt; The README lists what to do before go-live: change the master and database passwords, enable HTTPS, configure the firewall, schedule backups, review API-key permissions and turn on two-factor authentication for admins. Backup, restore and module-upgrade commands are documented.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standard Odoo underneath.&lt;/strong&gt; The changes live in separate modules rather than in Odoo's code, so the base system stays standard Odoo 16 Community.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Recent releases
&lt;/h2&gt;

&lt;p&gt;The repository's four commits are all dated 25 January 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The initial project: Docker setup, the optician and white-label modules, the OCA modules and the documentation.&lt;/li&gt;
&lt;li&gt;Docker Compose exposes an additional Odoo port and includes a commented Nginx service for a local reverse proxy.&lt;/li&gt;
&lt;li&gt;The white-label module moved to version 16.0.2, with a fuller debranding description and scripts and styles that hide Enterprise features and upgrade prompts.&lt;/li&gt;
&lt;li&gt;Documentation on where to find the OCA barcode scanner, how to install the alternatives and which Enterprise features they replace.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When Odoo fits
&lt;/h2&gt;

&lt;p&gt;For the wider question of whether an ERP like this suits your business, see &lt;a href="https://shipfastdev.com/blog/odoo-erp-for-small-businesses" rel="noopener noreferrer"&gt;Odoo ERP for small businesses&lt;/a&gt;, and &lt;a href="https://shipfastdev.com/blog/no-code-vs-custom-development" rel="noopener noreferrer"&gt;No-code vs custom development&lt;/a&gt; for when configuration is enough and when custom modules are worth it. More projects are in the &lt;a href="https://shipfastdev.com/portfolio" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;, including the &lt;a href="https://shipfastdev.com/work/driveway-morocco" rel="noopener noreferrer"&gt;Driveway Morocco case study&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is OptiVision a separate product from Odoo?
&lt;/h3&gt;

&lt;p&gt;No. It is Odoo 16 Community with two custom modules (optician fields and white-label branding) and a set of OCA modules. Staff see the shop's brand instead of Odoo's in the back office, on the login page and in reports and emails.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can it connect to an online shop or other apps?
&lt;/h3&gt;

&lt;p&gt;Yes, through its REST API: products, brands, stock checks by SKU and stock updates, each app with its own key set to read-only or read-write.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does it need Odoo Enterprise?
&lt;/h3&gt;

&lt;p&gt;No. It runs on Odoo Community, and OCA modules provide the barcode scanning, reporting, exports and approval workflows that would otherwise come from Enterprise.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I see it?
&lt;/h3&gt;

&lt;p&gt;OptiVision is not public. A demo is available on a call.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://www.odoo.com/documentation/16.0/applications/sales/point_of_sale.html" rel="noopener noreferrer"&gt;Point of Sale (Odoo 16.0 documentation)&lt;/a&gt;, Odoo S.A., accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.odoo.com/documentation/16.0/applications/inventory_and_mrp/inventory.html" rel="noopener noreferrer"&gt;Inventory (Odoo 16.0 documentation)&lt;/a&gt;, Odoo S.A., accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.odoo.com/documentation/16.0/developer/reference/backend/module.html" rel="noopener noreferrer"&gt;Module manifests (Odoo 16.0 developer documentation)&lt;/a&gt;, Odoo S.A., accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.odoo.com/documentation/16.0/developer/reference/backend/http.html" rel="noopener noreferrer"&gt;Web controllers (Odoo 16.0 developer documentation)&lt;/a&gt;, Odoo S.A., accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OCA/pos/tree/16.0" rel="noopener noreferrer"&gt;OCA/pos, branch 16.0&lt;/a&gt;, Odoo Community Association (GitHub), accessed October 2026&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/OCA/stock-logistics-barcode" rel="noopener noreferrer"&gt;OCA/stock-logistics-barcode&lt;/a&gt;, Odoo Community Association (GitHub), accessed October 2026&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Nearshore software development in Morocco: a practical guide for European companies</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Sat, 24 Oct 2026 09:00:04 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/nearshore-software-development-in-morocco-a-practical-guide-for-european-companies-4047</link>
      <guid>https://dev.to/adilsoukaini/nearshore-software-development-in-morocco-a-practical-guide-for-european-companies-4047</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/nearshore-software-development-morocco" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Morocco works well as a nearshore base for French and European companies: since 20 September 2026 it is on GMT all year, one hour behind Paris in winter and two in summer, so a normal working day overlaps almost entirely. French is widely read and written, English is improving, and the government's Digital Morocco 2030 plan targets 240,000 digital jobs. What makes it work in practice is how you set up the collaboration: overlap hours, written specs, ownership of your accounts and a proper data-transfer contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time zone: what changed in 2026
&lt;/h2&gt;

&lt;p&gt;For years Morocco stayed on GMT+1 and switched back to GMT during Ramadan. That ended in 2026. Decree 2.26.530, adopted on 25 June 2026 and published in the Official Bulletin on 29 June, &lt;a href="https://fr.hespress.com/480202-maroc-le-retour-a-lheure-gmt-officiellement-acte-a-partir-du-20-septembre.html" rel="noopener noreferrer"&gt;repealed the 2018 GMT+1 decree and returned the country to GMT from Sunday 20 September 2026&lt;/a&gt;; clocks went back 60 minutes for the last time.&lt;/p&gt;

&lt;p&gt;France still changes its clocks: summer time starts on &lt;a href="https://www.service-public.gouv.fr/particuliers/actualites/A15539" rel="noopener noreferrer"&gt;the last Sunday of March and ends on the last Sunday of October&lt;/a&gt;, a schedule harmonised across the European Union since 1998. In practice:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;From late October to late March:&lt;/strong&gt; Morocco is one hour behind Paris. 9:00 in Casablanca is 10:00 in Paris.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;From late March to late October:&lt;/strong&gt; Morocco is two hours behind Paris. 9:00 in Casablanca is 11:00 in Paris.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With standard 9:00–18:00 days on both sides, that leaves roughly eight hours of shared time in winter and seven in summer: plenty for a daily check-in, live pairing and same-day fixes. Agree on the overlap window in writing and put both time zones in calendar invites around the two changeover weekends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Languages
&lt;/h2&gt;

&lt;p&gt;Morocco's 2024 census (RGPH 2024) measured which languages people can read and write. Among literate Moroccans aged 10 and over, &lt;a href="https://m.hcp.ma/file/242665" rel="noopener noreferrer"&gt;99.2% read and write Arabic, 57.7% French and 20.5% English&lt;/a&gt;; in urban areas the figures are 64.3% for French and 25.2% for English. For a French company, this means many developers can work, write tickets and document in French.&lt;/p&gt;

&lt;p&gt;English is the language of code, libraries and documentation, and levels are rising. In the EF English Proficiency Index 2025, Morocco ranks &lt;a href="https://www.ef.com/assetscdn/WIBIwq6RdJvcD9bc8RMd/cefcom-epi-site/fact-sheets/2025/ef-epi-fact-sheet-morocco-english.pdf" rel="noopener noreferrer"&gt;68th globally with a score of 492, against a global average of 488&lt;/a&gt;; respondents working in IT score 504, and Rabat (517) and Casablanca (503) are above the national average. In short: French is the safer default for meetings with French teams; check written and spoken English in the interview if your team works in English.&lt;/p&gt;

&lt;h2&gt;
  
  
  Talent pool and national strategy
&lt;/h2&gt;

&lt;p&gt;Morocco's population was &lt;a href="https://m.hcp.ma/file/242665" rel="noopener noreferrer"&gt;36,828,330 on 1 September 2024&lt;/a&gt;, with 62.8% living in cities and 59.6% of people aged 15 and over using the internet. The digital strategy, Digital Morocco 2030, was presented in September 2024 with these targets, &lt;a href="https://fr.hespress.com/387500-digital-morocco-2030-100-milliards-de-dirhams-et-240-000-emplois-pour-dynamiser-leconomie-numerique.html" rel="noopener noreferrer"&gt;as reported at the launch&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;240,000 direct jobs in the digital sector and a contribution of 100 billion dirhams to GDP by 2030;&lt;/li&gt;
&lt;li&gt;100,000 people trained in digital skills each year, including 50,000 career changers;&lt;/li&gt;
&lt;li&gt;digital exports rising from 17.9 billion dirhams in 2023 to 40 billion in 2030;&lt;/li&gt;
&lt;li&gt;3,000 startups by 2030.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Public money has followed: according to the government portal, public investment in digital rose &lt;a href="https://www.maroc.ma/fr/actualites/la-strategie-digital-morocco-2030-fait-du-numerique-un-moteur-de-competitivite-et-dinclusion-sociale" rel="noopener noreferrer"&gt;from 11 million dirhams in 2021 to more than 1.7 billion dirhams in 2024&lt;/a&gt;. The US Commerce Department's country guide also notes the other side: Morocco faces &lt;a href="https://www.trade.gov/country-commercial-guides/morocco-digital-economy" rel="noopener noreferrer"&gt;a shortage of skilled professionals in cybersecurity, data science and software development&lt;/a&gt;. Experienced developers are in demand, so expect to compete for them and to verify experience carefully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data protection: Morocco is not an "adequate" country
&lt;/h2&gt;

&lt;p&gt;If the developer will access personal data from your EU users (a production database, analytics, customer emails), that is a transfer outside the EU under the GDPR. Morocco is &lt;a href="https://commission.europa.eu/law/law-topic/data-protection/international-dimension-data-protection/adequacy-decisions_en" rel="noopener noreferrer"&gt;not on the European Commission's list of countries with an adequacy decision&lt;/a&gt;, so you need another legal basis. For most small companies that means the Commission's &lt;a href="https://www.cnil.fr/fr/transferer-des-donnees-hors-de-lue" rel="noopener noreferrer"&gt;standard contractual clauses (SCCs)&lt;/a&gt;, signed with the provider, plus a short transfer impact assessment. Better still, limit access: give developers anonymised or seeded data and keep production access to the minimum (see &lt;a href="https://shipfastdev.com/blog/onboarding-a-remote-developer" rel="noopener noreferrer"&gt;onboarding a remote developer&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  How to work well with a developer in Morocco
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fix a shared window.&lt;/strong&gt; For example, 10:00–17:00 Paris time in winter (9:00–16:00 in Morocco). Hold the daily check-in inside it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose the working language explicitly.&lt;/strong&gt; French, English or both, for meetings and for written tickets. Don't assume.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write things down.&lt;/strong&gt; Short written specs with acceptance criteria beat long calls. They also survive time-zone gaps and handovers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep ownership on your side.&lt;/strong&gt; The repository, hosting, domain and analytics accounts belong to your company; the developer gets invited with the right role. See &lt;a href="https://shipfastdev.com/blog/code-ownership-and-ip-when-outsourcing" rel="noopener noreferrer"&gt;code ownership and IP when outsourcing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Release small and often.&lt;/strong&gt; A weekly release rhythm keeps both sides honest about progress (see &lt;a href="https://shipfastdev.com/blog/weekly-releases-with-a-remote-developer" rel="noopener noreferrer"&gt;weekly releases with a remote developer&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share a calendar of public and religious holidays&lt;/strong&gt; on both sides at the start of the year, so nobody plans a launch on a day off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agree on currency and contract.&lt;/strong&gt; Invoices in euros or dollars, the applicable law, notice period and the IP clause. Ask your accountant about VAT treatment for services bought from outside the EU.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a concrete example of a product built and run from Morocco, see the &lt;a href="https://shipfastdev.com/work/driveway-morocco" rel="noopener noreferrer"&gt;Driveway Morocco case study&lt;/a&gt; and the &lt;a href="https://shipfastdev.com/portfolio" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;. To compare costs with hiring locally, read &lt;a href="https://shipfastdev.com/blog/cost-to-hire-a-software-developer" rel="noopener noreferrer"&gt;what a software developer costs&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is the time difference between Morocco and France?
&lt;/h3&gt;

&lt;p&gt;Since 20 September 2026 Morocco is on GMT all year. It is one hour behind France from the last Sunday of October to the last Sunday of March, and two hours behind during French summer time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do Moroccan developers speak French?
&lt;/h3&gt;

&lt;p&gt;Many do. In the 2024 census, 57.7% of literate Moroccans aged 10 and over could read and write French, and 64.3% in urban areas. Check the level you need during the interview.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is it legal to give a developer in Morocco access to EU personal data?
&lt;/h3&gt;

&lt;p&gt;Yes, with safeguards. Morocco has no EU adequacy decision, so use the European Commission's standard contractual clauses and give access only to the data the work requires.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Morocco a good nearshore destination for software development?
&lt;/h3&gt;

&lt;p&gt;It offers time-zone overlap with Europe, French-speaking talent and an active national digital strategy. Experienced developers are in demand, so focus on verifying skills and setting up the collaboration well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://fr.hespress.com/480202-maroc-le-retour-a-lheure-gmt-officiellement-acte-a-partir-du-20-septembre.html" rel="noopener noreferrer"&gt;Maroc : le retour à l'heure GMT officiellement acté à partir du 20 septembre&lt;/a&gt;, Hespress FR, 2026-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.service-public.gouv.fr/particuliers/actualites/A15539" rel="noopener noreferrer"&gt;Changement d'heure : passage à l'heure d'été le 29 mars 2026&lt;/a&gt;, Service-Public.fr, 2026-03&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://m.hcp.ma/file/242665" rel="noopener noreferrer"&gt;Recensement Général de la Population et de l'Habitat 2024 – Principaux résultats&lt;/a&gt;, Haut-Commissariat au Plan (HCP), 2024-12&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.ef.com/assetscdn/WIBIwq6RdJvcD9bc8RMd/cefcom-epi-site/fact-sheets/2025/ef-epi-fact-sheet-morocco-english.pdf" rel="noopener noreferrer"&gt;EF EPI 2025 fact sheet – Morocco&lt;/a&gt;, EF Education First, 2025&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://fr.hespress.com/387500-digital-morocco-2030-100-milliards-de-dirhams-et-240-000-emplois-pour-dynamiser-leconomie-numerique.html" rel="noopener noreferrer"&gt;Digital Morocco 2030 : 100 milliards de dirhams et 240.000 emplois pour dynamiser l'économie numérique&lt;/a&gt;, Hespress FR, 2024-09&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.maroc.ma/fr/actualites/la-strategie-digital-morocco-2030-fait-du-numerique-un-moteur-de-competitivite-et-dinclusion-sociale" rel="noopener noreferrer"&gt;La stratégie Digital Morocco 2030 fait du numérique un moteur de compétitivité et d'inclusion sociale&lt;/a&gt;, Maroc.ma (portail national du Royaume du Maroc), 2026-06&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.trade.gov/country-commercial-guides/morocco-digital-economy" rel="noopener noreferrer"&gt;Morocco – Country Commercial Guide: Digital Economy&lt;/a&gt;, International Trade Administration (U.S. Department of Commerce), 2025-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://commission.europa.eu/law/law-topic/data-protection/international-dimension-data-protection/adequacy-decisions_en" rel="noopener noreferrer"&gt;Adequacy decisions&lt;/a&gt;, European Commission, 2026-02&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.cnil.fr/fr/transferer-des-donnees-hors-de-lue" rel="noopener noreferrer"&gt;Transférer des données hors de l'UE&lt;/a&gt;, CNIL, n.d.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Freelancer vs agency vs development retainer: which one fits your product?</title>
      <dc:creator>Adil Soukaini | Full-Stack Developer</dc:creator>
      <pubDate>Tue, 20 Oct 2026 09:00:37 +0000</pubDate>
      <link>https://dev.to/adilsoukaini/freelancer-vs-agency-vs-development-retainer-which-one-fits-your-product-4645</link>
      <guid>https://dev.to/adilsoukaini/freelancer-vs-agency-vs-development-retainer-which-one-fits-your-product-4645</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://shipfastdev.com/blog/freelancer-vs-agency-vs-dev-retainer" rel="noopener noreferrer"&gt;shipfastdev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hire a &lt;strong&gt;freelancer&lt;/strong&gt; for a well-defined task you can describe and check yourself; hire an &lt;strong&gt;agency&lt;/strong&gt; for a fixed project with a deadline that needs several skills at once (design, front end, back end, QA); choose a &lt;strong&gt;monthly development retainer&lt;/strong&gt; when your product needs steady, ongoing work from people who already know the code. Most problems with outsourcing come from using one model for a job that fits another.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you are actually buying
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Freelancer:&lt;/strong&gt; one person's time, usually billed by the hour or day, sometimes per deliverable. Independent work is common in the profession: &lt;a href="https://survey.stackoverflow.co/2025/work" rel="noopener noreferrer"&gt;13.9% of respondents to the 2025 Stack Overflow Developer Survey&lt;/a&gt; describe themselves as independent contractors, freelancers or self-employed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agency:&lt;/strong&gt; a company that delivers a project with a team it assembles and manages. You buy an outcome and pay for coordination as well as code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Development retainer:&lt;/strong&gt; a fixed monthly fee for an agreed amount of capacity and responsibility (for example, a set number of hours, code reviews, deployments, hosting care) from the same developer or small team, month after month. You buy continuity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the three models compare
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cost structure
&lt;/h3&gt;

&lt;p&gt;Freelancers bill for time, so you pay only for what you use; in German-speaking Europe the average rate for software and web development was &lt;a href="https://www.freelancermap.de/blog/?p=71117" rel="noopener noreferrer"&gt;€91 an hour in 2026&lt;/a&gt;. Agencies add project management and margin, and usually quote per project. A retainer is a flat monthly amount: predictable for budgeting, but you pay for the capacity even in a quiet month. For full numbers, see &lt;a href="https://shipfastdev.com/blog/cost-to-hire-a-software-developer" rel="noopener noreferrer"&gt;what it costs to hire a software developer&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Continuity and knowledge
&lt;/h3&gt;

&lt;p&gt;A freelancer may move to another client when your project pauses, and the knowledge leaves with them. Agencies rotate staff between projects, so the person who built your feature may not be the one who fixes it. A retainer is designed for continuity: the same people keep context from month to month, which is what makes small, frequent releases possible (see &lt;a href="https://shipfastdev.com/blog/weekly-releases-with-a-remote-developer" rel="noopener noreferrer"&gt;weekly releases with a remote developer&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Breadth of skills
&lt;/h3&gt;

&lt;p&gt;One freelancer brings one skill set. An agency can staff designers, several developers and testers in parallel. A retainer with a single developer sits in between: one accountable person, with the option of bringing in specialists for specific pieces.&lt;/p&gt;

&lt;h3&gt;
  
  
  Management load on you
&lt;/h3&gt;

&lt;p&gt;With a freelancer, you are the project manager: you write the tasks, review the work and decide priorities. An agency takes most of that on, which is valuable if nobody on your side can do it, and costly if you could. A retainer works best when you set priorities and the developer owns the technical decisions and delivery.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed to start
&lt;/h3&gt;

&lt;p&gt;Freelancers can often start within days. Agencies need a proposal, estimate and contract. Retainers usually start with a short onboarding period; a practical two-week plan is in &lt;a href="https://shipfastdev.com/blog/onboarding-a-remote-developer" rel="noopener noreferrer"&gt;onboarding a remote developer&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The risks of each model
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Freelancer
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single point of failure.&lt;/strong&gt; Illness, holidays or a better-paid contract stop your project. Keep the code in your own repository and insist on written handover notes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Misclassification.&lt;/strong&gt; If you treat a full-time freelancer like an employee, tax authorities may too. In the US, the IRS looks at &lt;a href="https://www.irs.gov/businesses/small-businesses-self-employed/independent-contractor-self-employed-or-employee" rel="noopener noreferrer"&gt;behavioral control, financial control and the type of relationship&lt;/a&gt;. In the UK, medium and large clients have been &lt;a href="https://www.gov.uk/guidance/understanding-off-payroll-working-ir35" rel="noopener noreferrer"&gt;responsible for deciding employment status under the off-payroll (IR35) rules since April 2021&lt;/a&gt;. In France, a client who directs the freelancer like an employee risks &lt;a href="https://bpifrance-creation.fr/encyclopedie/micro-entreprise-regime-auto-entrepreneur/lessentiel-ce-regime/independance-juridique" rel="noopener noreferrer"&gt;requalification into an employment contract&lt;/a&gt;, with back pay, contribution adjustments and possible penalties for concealed work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Agency
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Change requests.&lt;/strong&gt; A quoted project is priced on a fixed scope; every change becomes a negotiation. See &lt;a href="https://shipfastdev.com/blog/fixed-price-vs-time-and-materials-vs-retainer" rel="noopener noreferrer"&gt;fixed price vs time and materials vs retainer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Staffing you did not choose.&lt;/strong&gt; Ask who will write the code, not just who runs the sales call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handover.&lt;/strong&gt; When the project ends, the team moves on. Make sure you receive the repository, documentation and deployment access, and that the contract transfers the rights to the code (see &lt;a href="https://shipfastdev.com/blog/code-ownership-and-ip-when-outsourcing" rel="noopener noreferrer"&gt;code ownership and IP when outsourcing&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Retainer
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unused capacity.&lt;/strong&gt; If you do not have a backlog, you pay for idle time. Keep a prioritised list of work ready.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vague scope.&lt;/strong&gt; "Development as needed" invites disagreement. Write down what is included (hours, response times, reviews, hosting, support) and what is not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependency.&lt;/strong&gt; The same continuity that helps can make you dependent. The safeguards are the same as with a freelancer: your repository, your hosting accounts, documentation and a notice period.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Which one fits your situation
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A defined, short task&lt;/strong&gt; (fix a payment bug, build one integration, migrate a WordPress theme): a freelancer, paid per task or for a capped number of hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A defined project with a hard deadline&lt;/strong&gt; and several disciplines (a marketing site with a design system, a first version of an app for a launch date): an agency, if you can write the scope clearly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A live product that needs regular releases&lt;/strong&gt;, fixes and small features every month: a retainer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An MVP whose scope will change as you learn&lt;/strong&gt;: usually a retainer or time-based freelance work, because fixed-price quotes punish change. Start by &lt;a href="https://shipfastdev.com/blog/how-to-scope-an-mvp" rel="noopener noreferrer"&gt;scoping the MVP&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A team with in-house engineers&lt;/strong&gt; that needs extra hands: a freelancer or retainer who works inside your process.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to judge any of them after three months
&lt;/h2&gt;

&lt;p&gt;Whatever the model, measure delivery, not hours. DORA, a long-running research programme on software delivery, defines &lt;a href="https://dora.dev/guides/dora-metrics/" rel="noopener noreferrer"&gt;five delivery metrics&lt;/a&gt;: change lead time, deployment frequency, failed deployment recovery time, change fail rate and deployment rework rate. You do not need a dashboard. Ask simple questions every month: how often did working changes reach production, how long did a typical change take from request to release, and how many releases needed an urgent fix?&lt;/p&gt;

&lt;p&gt;Also check that you can answer yes to these: the code is in a repository your company owns, you can deploy without the provider, and there is enough documentation for someone else to take over.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is a freelancer cheaper than an agency?
&lt;/h3&gt;

&lt;p&gt;Usually per hour, because an agency adds project management and margin. But if you have to manage the freelancer yourself, count your own time too. For a multi-skill project with a fixed deadline, an agency can be cheaper overall.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is a development retainer?
&lt;/h3&gt;

&lt;p&gt;A monthly agreement where you pay a fixed fee for a defined amount of development capacity and responsibilities from the same developer or team. It suits products that need ongoing releases, maintenance and small features rather than a one-off build.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can a long-term freelancer be treated as an employee?
&lt;/h3&gt;

&lt;p&gt;Yes, if the relationship looks like employment. US, UK and French authorities all look at control, integration into your organisation and economic dependence. Keep the freelancer independent in how they work, and get local advice for long engagements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should a startup outsource development?
&lt;/h3&gt;

&lt;p&gt;Outsourcing makes sense when you need to ship before you can justify a full-time hire, or need skills you lack. Keep ownership of the code, the hosting accounts and the product decisions in-house whichever model you choose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://survey.stackoverflow.co/2025/work" rel="noopener noreferrer"&gt;2025 Developer Survey – Work&lt;/a&gt;, Stack Overflow, 2025-07&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freelancermap.de/blog/?p=71117" rel="noopener noreferrer"&gt;Freelancer-Einkommen: Projektumsatz sinkt um 17 % (Freelancer-Kompass 2026)&lt;/a&gt;, freelancermap, 2026-04&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.irs.gov/businesses/small-businesses-self-employed/independent-contractor-self-employed-or-employee" rel="noopener noreferrer"&gt;Independent contractor (self-employed) or employee?&lt;/a&gt;, Internal Revenue Service (IRS), 2026-05&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.gov.uk/guidance/understanding-off-payroll-working-ir35" rel="noopener noreferrer"&gt;Understanding off-payroll working (IR35)&lt;/a&gt;, HM Revenue &amp;amp; Customs, GOV.UK, 2026-02&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bpifrance-creation.fr/encyclopedie/micro-entreprise-regime-auto-entrepreneur/lessentiel-ce-regime/independance-juridique" rel="noopener noreferrer"&gt;Indépendance juridique : risque de requalification du contrat de mission en contrat de travail&lt;/a&gt;, Bpifrance Création, 2026-06&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dora.dev/guides/dora-metrics/" rel="noopener noreferrer"&gt;DORA's software delivery performance metrics&lt;/a&gt;, DORA, 2026-01&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>product</category>
      <category>softwaredevelopment</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
