<?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: JavaScript Mastery</title>
    <description>The latest articles on DEV Community by JavaScript Mastery (@javascriptmastery).</description>
    <link>https://dev.to/javascriptmastery</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%2F4197992%2F897ae323-0e3e-4add-a04f-4f4d00dffcf7.png</url>
      <title>DEV Community: JavaScript Mastery</title>
      <link>https://dev.to/javascriptmastery</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/javascriptmastery"/>
    <language>en</language>
    <item>
      <title>This Week in AI for Developers: IPOs, Texting Agents &amp; Self-Replicating Models</title>
      <dc:creator>JavaScript Mastery</dc:creator>
      <pubDate>Sun, 01 Nov 2026 12:35:28 +0000</pubDate>
      <link>https://dev.to/javascriptmastery/this-week-in-ai-for-developers-ipos-texting-agents-self-replicating-models-5cjh</link>
      <guid>https://dev.to/javascriptmastery/this-week-in-ai-for-developers-ipos-texting-agents-self-replicating-models-5cjh</guid>
      <description>&lt;p&gt;AI had a wild last week of October 2026. Anthropic opened up its books to go public. OpenAI put its agents inside your text messages. And Microsoft offered buyouts to a quarter of its workforce while AI spending keeps climbing.&lt;/p&gt;

&lt;p&gt;If you write code for a living, none of this is just business news. It changes what you build, what you build it on, and which skills are worth your next 100 hours.&lt;/p&gt;

&lt;p&gt;Here is what happened, and what it means for you as a developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Anthropic filed to go public (ticker: ANT)
&lt;/h2&gt;

&lt;p&gt;On Monday, October 26, Anthropic made its S-1 public. It plans to list Class A shares on the Nasdaq Global Select Market under the ticker &lt;strong&gt;ANT&lt;/strong&gt;. Share count and price range are not set yet. (&lt;a href="https://www.freepressjournal.in/tech/anthropic-files-s-1-with-sec-for-proposed-ipo-plans-nasdaq-listing-under-ant" rel="noopener noreferrer"&gt;Free Press Journal&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The numbers worth knowing (&lt;a href="https://www.iposcoop.com/the-ipo-buzz-anthropic-ant-proposed-files-its-s-1/" rel="noopener noreferrer"&gt;IPOScoop&lt;/a&gt;):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What&lt;/th&gt;
&lt;th&gt;Number&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Expected market cap at listing (Reuters)&lt;/td&gt;
&lt;td&gt;~$1.5 trillion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Expected raise&lt;/td&gt;
&lt;td&gt;~$75 billion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revenue, 12 months to June 30, 2026&lt;/td&gt;
&lt;td&gt;$19.7 billion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customers paying $1M+ a year&lt;/td&gt;
&lt;td&gt;1,900+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customers paying $10M+ a year&lt;/td&gt;
&lt;td&gt;~250&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Earliest roadshow (Bloomberg)&lt;/td&gt;
&lt;td&gt;Week of Nov 9&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The company is still not profitable, and the filing itself flags the technology as carrying existential risks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why devs should care:&lt;/strong&gt; a big part of this story is Claude Code. Anthropic's coding agent reportedly hit over $2.5 billion in run-rate revenue by February 2026 (&lt;a href="https://ai2.work/blog/anthropic-files-confidential-s-1-as-revenue-run-rate-hits-47b" rel="noopener noreferrer"&gt;AI2Work&lt;/a&gt;). Developers paying for AI that writes code helped build one of the most valuable companies on the planet.&lt;/p&gt;

&lt;p&gt;A public company also behaves differently. Expect more predictable pricing, stricter enterprise terms, and more pressure to keep shipping developer tools. If you build on any single model provider, now is a good time to put an abstraction layer between your app and the API.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. OpenAI's agents moved into your text messages
&lt;/h2&gt;

&lt;p&gt;On October 28, OpenAI let US ChatGPT Pro users text their &lt;strong&gt;Dots&lt;/strong&gt; (its always-on AI agents) through iMessage and RCS. You send a text, a photo or a voice note, and the agent picks up the task. It keeps a persistent memory of context, so it remembers what you asked last time. It is a beta for select Pro users, set up by verifying your phone number in the Dot profile. (&lt;a href="https://cryptobriefing.com/openai-dots-imessage-rcs-pro-users/" rel="noopener noreferrer"&gt;Crypto Briefing&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;The same week, reports said OpenAI is negotiating a raise of up to $30 billion at a $1.25 trillion pre-money valuation, led by Coatue and UAE-based investors. Terms are not final. (&lt;a href="https://www.winzheng.com/en/article/openai-30b-raise-trillion-valuation" rel="noopener noreferrer"&gt;Winzheng, citing CNBC&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why devs should care:&lt;/strong&gt; this is the "your next app might not have a UI" moment. For years, building a product meant building screens: forms, menus, dashboards, a Submit button. Dots skip all of that. The interface is a conversation in the inbox you already use.&lt;/p&gt;

&lt;p&gt;That does not kill frontend work. It shifts where the hard problems live:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tool calling:&lt;/strong&gt; the agent needs clean, well-described actions it can safely call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Memory:&lt;/strong&gt; what the agent remembers, for how long, and who can see it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Judgment:&lt;/strong&gt; when the agent should act on its own and when it should ask first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust:&lt;/strong&gt; showing the user what happened, since there is no screen to click through.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have only ever built UIs, learning to build the agent behind the UI is the highest-leverage skill you can pick up right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Anthropic says small models may soon copy themselves
&lt;/h2&gt;

&lt;p&gt;This one landed a couple of weeks ago, but it is still all over dev timelines. Anthropic's Frontier Red Team tested whether AI models could find vulnerable devices, copy themselves onto them and keep spreading without human help. (&lt;a href="https://www.thestar.com.my/tech/tech-news/2026/10/13/ai-models-may-soon-self-replicate-without-access-to-data-centers-anthropic-warns" rel="noopener noreferrer"&gt;The Star, via Reuters&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;What they found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Models under 30 billion parameters could already complete many of the individual steps, but struggled to chain them end to end.&lt;/li&gt;
&lt;li&gt;In simplified tests with some security steps removed, GLM-5.2 and stronger models did manage full replication.&lt;/li&gt;
&lt;li&gt;Cheap IoT hardware like off-brand Android TV boxes could provide enough compute to run a small model.&lt;/li&gt;
&lt;li&gt;If small models keep improving at their historical rate, Anthropic expects this capability by the end of 2026.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not everyone bought it. The Register called it a threat that does not exist yet, and a former head of the UK's National Cyber Security Centre dismissed running a small model on cheap TVs as no security crisis. (&lt;a href="https://www.theregister.com/a/5302866" rel="noopener noreferrer"&gt;The Register&lt;/a&gt;, &lt;a href="https://www.canberratimes.com.au/story/9368176/anthropic-warns-ai-models-may-soon-self-replicate/" rel="noopener noreferrer"&gt;Canberra Times&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why devs should care:&lt;/strong&gt; whether or not the worst case ever happens, the lesson for anyone shipping agents is the same. Agents should get the smallest set of permissions that does the job. Keep a human approval step for anything that sends, deletes, pays or deploys. Log every tool call so you can see what your agent actually did. And if you ship IoT or edge devices, default credentials and unpatched firmware are now an AI problem, not just a botnet problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Big Tech is spending more on AI and fewer people
&lt;/h2&gt;

&lt;p&gt;Two stories from the same week tell you where the money is going.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The market got nervous.&lt;/strong&gt; On Thursday, October 22, the Nasdaq fell 2.6%, its steepest drop since early June. Meta fell nearly 7% after raising its 2026 capital spending forecast to $135 to $145 billion. Nvidia, Amazon, Alphabet and Microsoft all dropped too, as investors questioned whether this level of AI spending can pay off. Gartner forecasts $2.7 trillion of global AI investment in 2026. (&lt;a href="https://aljazeera.com/economy/2026/10/23/us-tech-stocks-tumble-as-investors-fret-over-ai-spending" rel="noopener noreferrer"&gt;Al Jazeera&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microsoft offered buyouts to about 60,000 people.&lt;/strong&gt; On October 26, Microsoft announced a Voluntary Exit Offer for roughly 27% of its global workforce, in Canada, India, the UK and the US. The company did not tie it directly to AI, but it comes as industry data center spending is on track to top $700 billion this year. (&lt;a href="https://www.wcax.com/2026/10/26/microsoft-offers-60000-employees-voluntary-buyouts-ai-spending-accelerates/?outputType=amp" rel="noopener noreferrer"&gt;WCAX, via AP&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why devs should care:&lt;/strong&gt; budgets are moving from headcount to compute. Teams will be smaller and expected to ship more, with AI doing a bigger share of the routine work. The developers who stay valuable are the ones who can direct that AI well, review its output, and build the systems around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to actually do this week
&lt;/h2&gt;

&lt;p&gt;News is only useful if it changes what you do on Monday. Here is the short list:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Build one small agent.&lt;/strong&gt; Pick a boring task you do every week and wire an LLM to two or three tools that handle it. You will learn more from one working agent than from ten tutorials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrap your model provider.&lt;/strong&gt; Put a thin layer between your app and any single AI API. Pricing and terms are about to get more corporate on both sides of the OpenAI vs Anthropic race.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design for "no UI".&lt;/strong&gt; For your next feature, ask what it would look like as a single message to an agent. Then design the API that agent would need.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lock down your agents.&lt;/strong&gt; Least privilege, human approval for anything destructive, and logs for every tool call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get good at reviewing AI code.&lt;/strong&gt; Smaller teams plus more AI output means review is where your judgment shows.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The big picture
&lt;/h2&gt;

&lt;p&gt;Put the week together and the pattern is clear. The AI labs are turning into trillion-dollar public companies. Their products are leaving the app and moving into the places you already spend your day. And the companies paying for all of it are rethinking how many people they need.&lt;/p&gt;

&lt;p&gt;The app era is not over, but it is folding. The developers who do well next are the ones who learn to build what sits behind the conversation.&lt;/p&gt;

&lt;p&gt;Over to you: &lt;strong&gt;would you rather tap through an app, or just text an agent and let it handle things?&lt;/strong&gt; Drop your take in the comments.&lt;/p&gt;

&lt;p&gt;If you want a weekly breakdown like this, follow JavaScript Mastery here on dev.to.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.freepressjournal.in/tech/anthropic-files-s-1-with-sec-for-proposed-ipo-plans-nasdaq-listing-under-ant" rel="noopener noreferrer"&gt;Anthropic files S-1, plans Nasdaq listing under ANT&lt;/a&gt; (Free Press Journal)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.iposcoop.com/the-ipo-buzz-anthropic-ant-proposed-files-its-s-1/" rel="noopener noreferrer"&gt;The IPO Buzz: Anthropic files its S-1&lt;/a&gt; (IPOScoop)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ai2.work/blog/anthropic-files-confidential-s-1-as-revenue-run-rate-hits-47b" rel="noopener noreferrer"&gt;Anthropic files confidential S-1 as revenue run-rate hits $47B&lt;/a&gt; (AI2Work)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://cryptobriefing.com/openai-dots-imessage-rcs-pro-users/" rel="noopener noreferrer"&gt;OpenAI lets US Pro users text their Dots through iMessage and RCS&lt;/a&gt; (Crypto Briefing)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.winzheng.com/en/article/openai-30b-raise-trillion-valuation" rel="noopener noreferrer"&gt;OpenAI working on new $30B raise at $1.25T valuation&lt;/a&gt; (citing CNBC)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.thestar.com.my/tech/tech-news/2026/10/13/ai-models-may-soon-self-replicate-without-access-to-data-centers-anthropic-warns" rel="noopener noreferrer"&gt;AI models may soon self-replicate without access to data centers&lt;/a&gt; (The Star, via Reuters)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.theregister.com/a/5302866" rel="noopener noreferrer"&gt;Anthropic conjures another threat that doesn't exist yet&lt;/a&gt; (The Register)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.canberratimes.com.au/story/9368176/anthropic-warns-ai-models-may-soon-self-replicate/" rel="noopener noreferrer"&gt;Anthropic warns AI models may soon self-replicate&lt;/a&gt; (Canberra Times, via AAP)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://aljazeera.com/economy/2026/10/23/us-tech-stocks-tumble-as-investors-fret-over-ai-spending" rel="noopener noreferrer"&gt;US tech stocks tumble as investors fret over AI spending&lt;/a&gt; (Al Jazeera)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.wcax.com/2026/10/26/microsoft-offers-60000-employees-voluntary-buyouts-ai-spending-accelerates/?outputType=amp" rel="noopener noreferrer"&gt;Microsoft offers 60,000 employees voluntary buyouts&lt;/a&gt; (WCAX, via AP)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>news</category>
    </item>
    <item>
      <title>AI Writes Half Our Code Now. Nobody Taught Us How to Review It.</title>
      <dc:creator>JavaScript Mastery</dc:creator>
      <pubDate>Thu, 29 Oct 2026 05:00:00 +0000</pubDate>
      <link>https://dev.to/javascriptmastery/ai-writes-half-our-code-now-nobody-taught-us-how-to-review-it-3h44</link>
      <guid>https://dev.to/javascriptmastery/ai-writes-half-our-code-now-nobody-taught-us-how-to-review-it-3h44</guid>
      <description>&lt;p&gt;AI wrote this function. It passed linting. It got approved. It shipped.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getUsers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ids&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

  &lt;span class="nx"&gt;ids&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`/api/users/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;users&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;It returned an empty array. Every. Single. Time.&lt;/p&gt;

&lt;p&gt;No error. No warning. Just &lt;code&gt;[]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you spotted it in 5 seconds, nice. If you didn't, you're not alone, and that's exactly the problem we want to talk about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers changed. Our habits didn't.
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://2026.stateofai.dev/" rel="noopener noreferrer"&gt;State of AI 2026&lt;/a&gt; developer survey collected answers from 7,258 developers, including how much of their code is AI-generated. The average answer was &lt;strong&gt;54%&lt;/strong&gt;. A year earlier, it was &lt;strong&gt;28%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;(Fair caveat: an AI survey probably attracts people who use AI a lot. But even if the real number is lower, the direction is obvious.)&lt;/p&gt;

&lt;p&gt;In one year, AI went from "helps with boilerplate" to "writes more than half the code."&lt;/p&gt;

&lt;p&gt;But think about how most of us learned to code. We learned to &lt;strong&gt;write&lt;/strong&gt; it. Tutorials, courses, bootcamps, LeetCode: almost all of it trains the writing muscle.&lt;/p&gt;

&lt;p&gt;Almost nobody trained us to &lt;strong&gt;review&lt;/strong&gt; code we didn't write, at speed, all day. And that's now the main job.&lt;/p&gt;

&lt;p&gt;AI-generated code has a specific personality. It looks clean, it's confidently formatted, it has nice variable names, and it's wrong in subtle ways that don't throw errors.&lt;/p&gt;

&lt;p&gt;Here are 5 bugs we see AI write over and over in JavaScript and React. Every snippet below has been run, and the output is real.&lt;/p&gt;




&lt;h2&gt;
  
  
  Bug #1: &lt;code&gt;forEach&lt;/code&gt; doesn't wait for &lt;code&gt;async&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;That's our opening example. &lt;code&gt;forEach&lt;/code&gt; calls your async callback, gets back a promise, and &lt;strong&gt;ignores it&lt;/strong&gt;. It doesn't wait. So &lt;code&gt;return users&lt;/code&gt; runs before a single fetch finishes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; &lt;code&gt;[]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; use &lt;code&gt;map&lt;/code&gt; to collect the promises, then &lt;code&gt;Promise.all&lt;/code&gt; to wait for them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getUsers&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ids&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;ids&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`/api/users/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;🔍 &lt;strong&gt;Review rule:&lt;/strong&gt; If you see &lt;code&gt;async&lt;/code&gt; inside &lt;code&gt;forEach&lt;/code&gt;, stop. It's almost always a bug.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Bug #2: The &lt;code&gt;try/catch&lt;/code&gt; that catches nothing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;saveUser&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Save failed:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Looks safe, right? There's error handling and everything.&lt;/p&gt;

&lt;p&gt;But &lt;code&gt;db.insert()&lt;/code&gt; returns a promise, and there's no &lt;code&gt;await&lt;/code&gt;. So the function returns &lt;code&gt;{ ok: true }&lt;/code&gt; immediately. When the insert fails later, the error is &lt;strong&gt;outside&lt;/strong&gt; the &lt;code&gt;try&lt;/code&gt; block. Your &lt;code&gt;catch&lt;/code&gt; never runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; &lt;code&gt;{ ok: true }&lt;/code&gt;, even when the save failed. The real error shows up as an unhandled promise rejection, which in modern Node.js crashes the process by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; one word.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;🔍 &lt;strong&gt;Review rule:&lt;/strong&gt; Any call that returns a promise inside a &lt;code&gt;try&lt;/code&gt; block needs an &lt;code&gt;await&lt;/code&gt;, or the &lt;code&gt;catch&lt;/code&gt; is just decoration.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Bug #3: Sorting numbers like they're words
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;prices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;prices&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; &lt;code&gt;[100, 1200, 25, 50, 9]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;By default, &lt;code&gt;.sort()&lt;/code&gt; converts everything to &lt;strong&gt;strings&lt;/strong&gt; and sorts alphabetically. &lt;code&gt;"1200"&lt;/code&gt; comes before &lt;code&gt;"25"&lt;/code&gt; because &lt;code&gt;"1"&lt;/code&gt; comes before &lt;code&gt;"2"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;AI loves this one because it reads perfectly in plain English. "Sort the prices." Done. Except it isn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;prices&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// [9, 25, 50, 100, 1200]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;🔍 &lt;strong&gt;Review rule:&lt;/strong&gt; &lt;code&gt;.sort()&lt;/code&gt; with no comparator on anything that isn't a plain string array is a red flag.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Bug #4: The timer that's stuck on 1
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Timer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;seconds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setSeconds&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;setInterval&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nf"&gt;setSeconds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;seconds&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;clearInterval&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;[]);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;seconds&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It even cleans up the interval. Very responsible. Very wrong.&lt;/p&gt;

&lt;p&gt;The empty dependency array means the effect runs once, so the interval callback captures &lt;code&gt;seconds&lt;/code&gt; &lt;strong&gt;from the first render&lt;/strong&gt;, when it was &lt;code&gt;0&lt;/code&gt;. Every tick sets it to &lt;code&gt;0 + 1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; &lt;code&gt;1&lt;/code&gt;. Forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; use the functional updater so you always get the latest value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nf"&gt;setSeconds&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;🔍 &lt;strong&gt;Review rule:&lt;/strong&gt; A state variable used inside &lt;code&gt;setInterval&lt;/code&gt;, &lt;code&gt;setTimeout&lt;/code&gt;, or an event listener in a &lt;code&gt;useEffect&lt;/code&gt; with &lt;code&gt;[]&lt;/code&gt; deps? Check for a stale closure.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Bug #5: The list that never updates
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;TodoList&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setTodos&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;([]);&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;addTodo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nf"&gt;setTodos&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;todos.push()&lt;/code&gt; mutates the existing array. Then &lt;code&gt;setTodos(todos)&lt;/code&gt; passes React &lt;strong&gt;the same array reference&lt;/strong&gt;. React compares the old and new state, sees they're the same object, and skips the re-render.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt; You click "Add". Nothing appears on screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix:&lt;/strong&gt; create a new array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nf"&gt;setTodos&lt;/span&gt;&lt;span class="p"&gt;([...&lt;/span&gt;&lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;🔍 &lt;strong&gt;Review rule:&lt;/strong&gt; &lt;code&gt;.push()&lt;/code&gt;, &lt;code&gt;.splice()&lt;/code&gt;, or direct property assignment on something that came from &lt;code&gt;useState&lt;/code&gt; means the UI won't update.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The 30-second review checklist
&lt;/h2&gt;

&lt;p&gt;Save this. Run through it every time AI hands you code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;strong&gt;Async:&lt;/strong&gt; Is every promise actually &lt;code&gt;await&lt;/code&gt;ed? Any &lt;code&gt;async&lt;/code&gt; inside &lt;code&gt;forEach&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Errors:&lt;/strong&gt; Will the &lt;code&gt;catch&lt;/code&gt; actually catch what you think it catches?&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Defaults:&lt;/strong&gt; Is it relying on a default behavior (like &lt;code&gt;.sort()&lt;/code&gt;, &lt;code&gt;==&lt;/code&gt;, or &lt;code&gt;parseInt&lt;/code&gt;) that might not do what the name suggests?&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;State:&lt;/strong&gt; Is anything from &lt;code&gt;useState&lt;/code&gt; being mutated directly?&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Closures:&lt;/strong&gt; Is a callback reading a value that might be stale?&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;The empty case:&lt;/strong&gt; What happens with &lt;code&gt;[]&lt;/code&gt;, &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;""&lt;/code&gt;, or &lt;code&gt;0&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;[ ] &lt;strong&gt;Can you explain it?&lt;/strong&gt; If you can't explain every line to a teammate, you're not done reviewing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last one matters most.&lt;/p&gt;




&lt;h2&gt;
  
  
  The real skill in 2026 isn't prompting
&lt;/h2&gt;

&lt;p&gt;Here's our honest take.&lt;/p&gt;

&lt;p&gt;Prompting is getting easier every month. The tools are getting better at understanding what you mean. That's great, but it also means prompting is becoming less of a differentiator.&lt;/p&gt;

&lt;p&gt;What's getting &lt;strong&gt;more&lt;/strong&gt; valuable is the thing AI is still bad at: knowing when the confident, clean, well-formatted code in front of you is wrong.&lt;/p&gt;

&lt;p&gt;Every one of the bugs above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;passes a linter&lt;/li&gt;
&lt;li&gt;throws no error on the line where the bug is&lt;/li&gt;
&lt;li&gt;looks like something a senior dev would write&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can only catch them if you actually understand how JavaScript and React work under the hood. Event loop. Closures. References. Promises.&lt;/p&gt;

&lt;p&gt;The fundamentals didn't become less important when AI showed up. They became the whole job.&lt;/p&gt;




&lt;h2&gt;
  
  
  Your turn 👇
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What's the sneakiest bug AI has ever shipped into your codebase?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Drop it in the comments. Bonus points for a snippet. Let's build the ultimate list of "AI code that looked fine."&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you want to go deeper on building with AI agents without losing your engineering skills, we cover exactly this in our &lt;a href="https://jsmastery.com/course/agentic-engineering-course" rel="noopener noreferrer"&gt;Agentic Engineering Course&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>discuss</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Your First Dev Job in 2026: The Roadmap Nobody Gave You</title>
      <dc:creator>JavaScript Mastery</dc:creator>
      <pubDate>Thu, 22 Oct 2026 04:50:09 +0000</pubDate>
      <link>https://dev.to/javascriptmastery/your-first-dev-job-in-2026-the-roadmap-nobody-gave-you-3749</link>
      <guid>https://dev.to/javascriptmastery/your-first-dev-job-in-2026-the-roadmap-nobody-gave-you-3749</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F172j13ut7pqvys3dzkaw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F172j13ut7pqvys3dzkaw.jpg" alt="Javascriptmastery-job-roadmap" width="800" height="447"&gt;&lt;/a&gt;&lt;strong&gt;You finished the degree, the bootcamp, or the 100 tutorials. You open LinkedIn, hit "Easy Apply" 80 times... and hear nothing back.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's not just you. The market in 2026 is weird. Overall software hiring is growing again, but the classic junior job ("here's a ticket, build this form") is shrinking, because AI now does a big chunk of that work.&lt;/p&gt;

&lt;p&gt;The good news is that companies still hire new engineers. They just look for different signals now.&lt;/p&gt;

&lt;p&gt;So here's the roadmap we'd follow if we were starting the job hunt today. It's high level on purpose, so you can see the whole path first and then go deep where you're weak.&lt;/p&gt;




&lt;h2&gt;
  
  
  The roadmap at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Proof you have it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Fundamentals AI can't fake&lt;/td&gt;
&lt;td&gt;You can debug code you didn't write&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;AI fluency, not AI dependence&lt;/td&gt;
&lt;td&gt;You can explain every line AI wrote for you&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1–2 real projects&lt;/td&gt;
&lt;td&gt;Live URL, real users, clean README&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Testing and shipping&lt;/td&gt;
&lt;td&gt;Tests + CI + deployed app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;System thinking&lt;/td&gt;
&lt;td&gt;You can sketch how your app scales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Show your work&lt;/td&gt;
&lt;td&gt;GitHub, a few posts, a clear LinkedIn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Interview ready&lt;/td&gt;
&lt;td&gt;You've done mock interviews until they're boring&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Let's go through each one.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 1: Fundamentals AI can't fake
&lt;/h2&gt;

&lt;p&gt;AI can write a function in seconds. What it can't do is tell you &lt;em&gt;why&lt;/em&gt; your app breaks in production at 2am.&lt;/p&gt;

&lt;p&gt;That's why fundamentals matter more now, not less. In BairesDev's Q2 2026 Dev Barometer (1,569 developers surveyed), nearly half of juniors picked &lt;strong&gt;problem-solving&lt;/strong&gt; as the top hiring skill, about 3x more than those who picked AI proficiency.&lt;/p&gt;

&lt;p&gt;Focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript/TypeScript in depth:&lt;/strong&gt; closures, async/await, the event loop, types&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Debugging:&lt;/strong&gt; reading stack traces, using breakpoints, not just &lt;code&gt;console.log&lt;/code&gt; everywhere&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reading other people's code:&lt;/strong&gt; most real jobs start with an existing codebase, not a blank file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Quick test: open a random open-source repo, pick a small bug, and try to trace it. If that feels scary, this is your stage.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 2: AI fluency, not AI dependence
&lt;/h2&gt;

&lt;p&gt;In 2026, not using AI tools is like not knowing Git in 2015. AI skills now show up in roughly 4 in 10 software job descriptions, up from about 8% in 2022.&lt;/p&gt;

&lt;p&gt;But here's the catch: hiring managers don't care that you &lt;em&gt;can&lt;/em&gt; prompt. They care that you can &lt;strong&gt;judge&lt;/strong&gt; what comes back.&lt;/p&gt;

&lt;p&gt;Get comfortable with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An AI coding tool (Claude Code, Cursor, Copilot, whatever you like)&lt;/li&gt;
&lt;li&gt;Reviewing AI-generated code like a senior would: is it secure, readable, actually correct?&lt;/li&gt;
&lt;li&gt;Building small features &lt;em&gt;with&lt;/em&gt; AI APIs, like a chatbot, a summarizer, or an agent that calls a tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The rule:&lt;/strong&gt; if you can't explain a line of code in an interview, it shouldn't be in your portfolio.&lt;/p&gt;

&lt;p&gt;If you want to go deeper on building real AI-powered products, our upcoming &lt;a href="https://jsmastery.com/waitlist/ai-course?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=job-hunt-roadmap-2026&amp;amp;utm_content=article-20261022" rel="noopener noreferrer"&gt;Agentic Engineering Course&lt;/a&gt; covers models, APIs, and production pipelines. The waitlist is open now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 3: Build 1–2 real projects, not 10 clones
&lt;/h2&gt;

&lt;p&gt;Todo apps and Netflix clones all look the same to a recruiter. One real project beats ten tutorials.&lt;/p&gt;

&lt;p&gt;A "real" project has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ A &lt;strong&gt;live URL&lt;/strong&gt; anyone can open&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Auth + a database&lt;/strong&gt;, not just static pages&lt;/li&gt;
&lt;li&gt;✅ At least a few &lt;strong&gt;real users&lt;/strong&gt; (friends, a Discord, a local business)&lt;/li&gt;
&lt;li&gt;✅ A &lt;strong&gt;README&lt;/strong&gt; that explains &lt;em&gt;why&lt;/em&gt; you made your decisions, not just how to install it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pick a problem you or someone you know actually has. That story ("my friend's shop was tracking orders on paper, so I built...") is gold in interviews.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 4: Testing and shipping
&lt;/h2&gt;

&lt;p&gt;This is the stage most new devs skip, and it's exactly what separates "knows how to code" from "can work on a team."&lt;/p&gt;

&lt;p&gt;Learn the basics of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unit and integration tests&lt;/strong&gt; (Vitest, Jest, Playwright)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CI&lt;/strong&gt;, so tests run automatically on every push (GitHub Actions is enough)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploying&lt;/strong&gt; properly, with environment variables and basic error logging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When an interviewer sees tests in your repo, they immediately read you as "safe to hire." Our &lt;a href="https://jsmastery.com/course/the-complete-next-js-testing-course?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=job-hunt-roadmap-2026&amp;amp;utm_content=article-20261022" rel="noopener noreferrer"&gt;Complete Testing Course&lt;/a&gt; is built around exactly this skill.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 5: System thinking
&lt;/h2&gt;

&lt;p&gt;You don't need to design Netflix as a fresh grad. But you should be able to answer: &lt;em&gt;"What happens when 10,000 people use your app at once?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Know the basics of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How a request travels from the browser to your server and database&lt;/li&gt;
&lt;li&gt;When to use &lt;strong&gt;caching&lt;/strong&gt;, &lt;strong&gt;queues&lt;/strong&gt;, and &lt;strong&gt;background jobs&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;How to design a simple &lt;strong&gt;database schema&lt;/strong&gt; and why indexes matter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A good exercise: draw your own project's architecture on one page. If you can explain that diagram for 5 minutes, you're ahead of most applicants.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 6: Show your work
&lt;/h2&gt;

&lt;p&gt;Skills that nobody can see don't get you interviews.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; pin your 2 best projects, with clean READMEs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write:&lt;/strong&gt; a short post on what you learned building something (yes, right here on DEV counts)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; one clear headline, e.g. "Full-Stack Developer · Next.js · AI Integrations", not "Aspiring developer looking for opportunities"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Writing about your work also proves the skill companies keep asking for: &lt;strong&gt;communication&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Stage 7: Interview ready
&lt;/h2&gt;

&lt;p&gt;Most people walk into their first interview having never done one. That's where the nerves come from.&lt;/p&gt;

&lt;p&gt;Prepare for three types of rounds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Technical:&lt;/strong&gt; solve problems out loud, and explain your thinking before you code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project deep dive:&lt;/strong&gt; walk through your project's decisions, trade-offs, and what you'd change&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavioral:&lt;/strong&gt; have 3–4 short stories ready (a bug you fixed, a deadline you hit, a mistake you learned from)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then practice until it feels boring. Our &lt;a href="https://jsmastery.com/course/dev-career-accelerator?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=job-hunt-roadmap-2026&amp;amp;utm_content=article-20261022" rel="noopener noreferrer"&gt;Dev Career Accelerator&lt;/a&gt; covers portfolio strategy, interview prep, and the mindset that gets callbacks.&lt;/p&gt;




&lt;h2&gt;
  
  
  Your "before I hit apply" checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] I can debug code I didn't write&lt;/li&gt;
&lt;li&gt;[ ] I use AI tools daily, and I can explain everything they generate&lt;/li&gt;
&lt;li&gt;[ ] I have 1–2 deployed projects with real users&lt;/li&gt;
&lt;li&gt;[ ] My projects have tests and run on CI&lt;/li&gt;
&lt;li&gt;[ ] I can sketch my app's architecture and explain how it scales&lt;/li&gt;
&lt;li&gt;[ ] My GitHub, LinkedIn, and at least one post show my work&lt;/li&gt;
&lt;li&gt;[ ] I've done at least 5 mock interviews&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can tick most of these, stop preparing and start applying. If not, you now know exactly which stage to work on next.&lt;/p&gt;




&lt;p&gt;The 2026 market is harder, but it's not closed. It just rewards developers who can &lt;strong&gt;think, ship, and explain&lt;/strong&gt;, not only type code. AI raised the bar, and it also gave you the tools to clear it.&lt;/p&gt;

&lt;p&gt;Which stage are you on right now? Drop it in the comments 👇 and we'll share resources for it.&lt;/p&gt;

</description>
      <category>career</category>
      <category>ai</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>JavaScript Mastery is officially on DEV!</title>
      <dc:creator>JavaScript Mastery</dc:creator>
      <pubDate>Wed, 21 Oct 2026 10:07:36 +0000</pubDate>
      <link>https://dev.to/javascriptmastery/javascript-mastery-is-officially-on-dev-what-should-we-build-next-2gd</link>
      <guid>https://dev.to/javascriptmastery/javascript-mastery-is-officially-on-dev-what-should-we-build-next-2gd</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6e6s2ou8y0wxk9zo1etj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6e6s2ou8y0wxk9zo1etj.png" alt="Javascript mastery Banner" width="800" height="296"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hey DEV community! 👋&lt;/p&gt;

&lt;p&gt;We're &lt;strong&gt;JavaScript Mastery&lt;/strong&gt;, and yes, this is our official account (you'll find this profile linked from &lt;a href="https://jsmastery.com/?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=devto_launch&amp;amp;utm_content=intro_post" rel="noopener noreferrer"&gt;jsmastery.com&lt;/a&gt; and our &lt;a href="https://www.youtube.com/channel/UCmXmlB4-HJytD7wek0Uo97A" rel="noopener noreferrer"&gt;YouTube channel&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;If you've ever followed one of our project-based tutorials, built a full-stack app with us, or binge-watched a 5-hour build on a Saturday, thank you. You're the reason we're here. 💙&lt;/p&gt;

&lt;h2&gt;
  
  
  Why DEV?
&lt;/h2&gt;

&lt;p&gt;We've been creating tutorials on YouTube for years, but DEV is where developers actually &lt;em&gt;talk&lt;/em&gt; about what they're learning and building. We don't want to just post content here. We want to be part of the conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can expect from us
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🛠️ &lt;strong&gt;Real-world project breakdowns&lt;/strong&gt;: how we structure apps, not just what we build&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;AI-powered development&lt;/strong&gt;: building with LLMs, agents, and AI SaaS apps&lt;/li&gt;
&lt;li&gt;⚛️ &lt;strong&gt;React &amp;amp; Next.js deep dives&lt;/strong&gt;: patterns we actually use in production&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;Quick dev tips&lt;/strong&gt;: short, practical things you can use today&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Now it's your turn 👇
&lt;/h2&gt;

&lt;p&gt;We want our first DEV article to come from &lt;strong&gt;you&lt;/strong&gt;. Which topic should we write about first?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;🤖 Building AI agents (agentic engineering)&lt;/li&gt;
&lt;li&gt;🎬 Scroll animations with GSAP&lt;/li&gt;
&lt;li&gt;⚡ Getting started with TanStack Start&lt;/li&gt;
&lt;li&gt;💼 Launching a SaaS in under 7 days&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Drop your vote (or your own idea) in the comments. The most-requested topic becomes our first full article! 🔥&lt;/p&gt;

&lt;p&gt;Want to go deeper right now? Check out &lt;a href="https://jsmastery.com/all-courses?utm_source=devto&amp;amp;utm_medium=social&amp;amp;utm_campaign=devto_launch&amp;amp;utm_content=all_courses" rel="noopener noreferrer"&gt;all our courses&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Follow us so you don't miss it, and tell us what you're currently learning. We read every comment!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
