<?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 Ben Moussa</title>
    <description>The latest articles on DEV Community by Adil Ben Moussa (@adilbenmoussa).</description>
    <link>https://dev.to/adilbenmoussa</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%2F25514%2F5f9cfa9b-411a-43f0-9516-88baf2e12a7c.jpg</url>
      <title>DEV Community: Adil Ben Moussa</title>
      <link>https://dev.to/adilbenmoussa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adilbenmoussa"/>
    <language>en</language>
    <item>
      <title>Same AI, two outcomes: a faster team or a dead project</title>
      <dc:creator>Adil Ben Moussa</dc:creator>
      <pubDate>Mon, 09 Nov 2026 23:13:14 +0000</pubDate>
      <link>https://dev.to/adilbenmoussa/same-ai-two-outcomes-a-faster-team-or-a-dead-project-3k66</link>
      <guid>https://dev.to/adilbenmoussa/same-ai-two-outcomes-a-faster-team-or-a-dead-project-3k66</guid>
      <description>&lt;p&gt;&lt;em&gt;This is part 1 of 8 of the free series &lt;a href="https://tt-tech.io/series/ai-with-angular" rel="noopener noreferrer"&gt;AI with Angular: agents in your codebase&lt;/a&gt;, first published on &lt;a href="https://tt-tech.io/blog/same-ai-two-outcomes" rel="noopener noreferrer"&gt;tt-tech.io&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Everyone says AI makes developers faster. Why are we not faster?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(A question managers often ask me)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It is a fair question.&lt;/p&gt;

&lt;p&gt;My team did not write a single line of code by hand this year. Agents did, every day, in Angular and React Native codebases that people rely on, in healthcare and digital media. Our job became review: gatekeepers, agent babysitters. That is how we saw the same agent make some projects faster and nearly sink others, more than once. The model was the same. What differed was what we gave it first.&lt;/p&gt;

&lt;p&gt;This track is about agents building your Angular.&lt;/p&gt;

&lt;h2&gt;
  
  
  The project that nearly sinks
&lt;/h2&gt;

&lt;p&gt;Someone installs an agent, opens the biggest feature module and asks for a change. Two hours and a token bill later, there is a diff of well over a thousand lines. It touches four libraries. It imports a data-access service straight into a UI component. Every test is green, because the agent rewrote the assertions too.&lt;/p&gt;

&lt;p&gt;Is the model stupid? No. It did exactly the task it got (&lt;a href="https://tt-tech.io/blog/how-ai-learns-to-pass-tests" rel="noopener noreferrer"&gt;why agents behave this way&lt;/a&gt;). The task was the problem. "Convert this", with no plan, no fences and no size limit, gives this result in most runs I have seen. The rules that keep an old monorepo alive live in people's heads, and the agent cannot read heads.&lt;/p&gt;

&lt;p&gt;Now look at it from management's side, where the pressure comes from. Leadership hears "AI writes code" and expects the work to be fast now. Someone under pressure gets a working screen out of an agent in an afternoon and shows it in a meeting. Everyone sees the screen; nobody sees the diff behind it. From then on, a demo sets the expectation.&lt;/p&gt;

&lt;p&gt;Then the engineers who own the codebase open the pull request. It is huge, it breaks rules the team kept for years for good reasons, and its tests were rewritten to pass. They are right not to merge it. Someone now carries the gap between what leadership saw and what the codebase can take, usually the person doing the work properly. Nothing was measured, so nothing can be argued. The demo took an afternoon, the review took weeks, and only the afternoon made it into a meeting.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Faster juniors, slower seniors: the work did not shrink, it moved to review.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If it gets merged anyway, the bill grows. Debt you chose on purpose is at least debt you know about. The worse kind is code nobody on the team can explain when production breaks at two in the morning. That is comprehension debt. No dashboard shows it, and an agent asked to "convert this" is the fastest way I know to grow it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Technical debt you chose. Comprehension debt chose you.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The faster team
&lt;/h2&gt;

&lt;p&gt;Same agent, same kind of codebase, different afternoon. The agent gets a short rules file, an architecture it cannot cross because a lint command fails when it tries, and a task with a scope and a size limit. Its first diff lands inside the fence, so the reviewer reads a decision instead of a surprise. A junior who runs it ships code that respects boundaries they have not learned yet, and learns them from the lint error.&lt;/p&gt;

&lt;p&gt;One rule sits under all of it, and every part of this track comes back to it: &lt;strong&gt;the agent executes a decided scope. It never decides one.&lt;/strong&gt; The rest of the track:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://tt-tech.io/blog/three-files-before-an-agent-writes-a-line" rel="noopener noreferrer"&gt;The three files&lt;/a&gt; the agent must read, pass and stay inside.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tt-tech.io/blog/from-ticket-to-task-file" rel="noopener noreferrer"&gt;From ticket to task file&lt;/a&gt;: the agent drafts the scope, a person decides it.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tt-tech.io/blog/demote-dont-delete" rel="noopener noreferrer"&gt;Demote, don't delete&lt;/a&gt;: the migration plan that survives production.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tt-tech.io/blog/pin-the-behaviour-before-you-touch-it" rel="noopener noreferrer"&gt;Pin the behaviour first&lt;/a&gt;: step one of that plan, tests on the legacy code.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tt-tech.io/blog/angularjs-readers-the-compiler-cannot-see" rel="noopener noreferrer"&gt;The readers your compiler cannot see&lt;/a&gt;: the same plan when the legacy is AngularJS.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://tt-tech.io/blog/what-could-i-delete-and-stay-green" rel="noopener noreferrer"&gt;What could I delete and stay green?&lt;/a&gt;: the agent's tests, and the migration in numbers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Restyling with design tokens and security already have exercises in the demo repo; their written parts are coming soon.&lt;/p&gt;

&lt;p&gt;When the demo is shown to you, one question settles most of it: do you want this to work this year, or do you want it still safe and maintained in five?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt · the first thing to ask any agent in a large codebase&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before changing anything, look at how this repository is organised: its libraries, its lint config, and any rules file written for agents. Then tell me, in a short list, which rules of this codebase you would be most likely to break on a task like "migrate the transfers module to signals", and why. Do not write code.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agents usually name their likely mistakes if you ask before they start. Treat the list as a draft of the rules file in the next part.&lt;/p&gt;

&lt;h2&gt;
  
  
  On Monday
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Someone shows you an AI demo: ask for the diff before the screen.&lt;/li&gt;
&lt;li&gt;Count one number per change from now on: review hours per pull request. The demo never shows it. &lt;a href="https://tt-tech.io/blog/what-could-i-delete-and-stay-green" rel="noopener noreferrer"&gt;Part 7&lt;/a&gt; puts it next to the demo repo's diff sizes.&lt;/li&gt;
&lt;li&gt;Read &lt;a href="https://tt-tech.io/blog/three-files-before-an-agent-writes-a-line" rel="noopener noreferrer"&gt;the next part&lt;/a&gt; and spend one afternoon on the three files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The demo app for every part is &lt;a href="https://github.com/tt-tech/workshop-ai-with-angular" rel="noopener noreferrer"&gt;Atlas Bank&lt;/a&gt;, an imaginary Moroccan bank with two legacy corners waiting to be migrated: a transfer screen in an &lt;code&gt;NgModule&lt;/code&gt; and a beneficiaries screen in AngularJS. Never client code.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Track 1, part 1 of the free series behind the &lt;a href="https://tt-tech.io/workshops/ai-with-angular" rel="noopener noreferrer"&gt;Fast and safe: AI in your Angular codebase&lt;/a&gt; workshop. In the room you do it on your own codebase.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>ai</category>
      <category>architecture</category>
      <category>webdev</category>
    </item>
    <item>
      <title>React Native video training in Arabic</title>
      <dc:creator>Adil Ben Moussa</dc:creator>
      <pubDate>Wed, 12 Jul 2017 12:00:38 +0000</pubDate>
      <link>https://dev.to/adilbenmoussa/react-native-video-training-in-arabic</link>
      <guid>https://dev.to/adilbenmoussa/react-native-video-training-in-arabic</guid>
      <description>&lt;p&gt;Last weeks as FE architect I have had the greatest opportunity to investigate React-Native possibilities for future mobile applications in our company @AgileXS&lt;/p&gt;

&lt;p&gt;As one of my principal rules, I started trying to explain each day what I have learned days before and try to teach it via a youtube video. My plan was to create a real application just for fun, I have chosen one of the most popular newspaper apps in Morocco (hespress.com).&lt;br&gt;
The result I have ended with is a very simple to follow video series in Arabic showing how to build a newspaper app with React Native.&lt;br&gt;
The topics I have touched when creating this application are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lean how to use FlatList, Cards, Arabic Fonts, SVG Icons, Side Menu and Pull to refresh component.&lt;/li&gt;
&lt;li&gt;Router Flux, Redux, Promise Middleware and Saga Middleware&lt;/li&gt;
&lt;li&gt;HTML parsing&lt;/li&gt;
&lt;li&gt;Axios&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The result is available here: &lt;a href="https://www.youtube.com/watch?list=UUoEuFnwZ1aMYns1X8-KiACQ&amp;amp;v=8MSRurO4Sfc"&gt;Youtube playlist&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Code is also available at &lt;a href="https://github.com/adilbenmoussa/hespress.com-react-native"&gt;Github&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  App Images:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5zDyhl5y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/adilbenmoussa/hespress.com-react-native/master/src/images/final1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5zDyhl5y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/adilbenmoussa/hespress.com-react-native/master/src/images/final1.png" width="800"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2XguaDJC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/adilbenmoussa/hespress.com-react-native/master/src/images/final2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2XguaDJC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/adilbenmoussa/hespress.com-react-native/master/src/images/final2.png" width="800"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QKa98NVs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/adilbenmoussa/hespress.com-react-native/master/src/images/final3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QKa98NVs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/adilbenmoussa/hespress.com-react-native/master/src/images/final3.png" width="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>redux</category>
      <category>reduxsaga</category>
    </item>
  </channel>
</rss>
