<?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: Rodolphe D.</title>
    <description>The latest articles on DEV Community by Rodolphe D. (@_notbu7ch).</description>
    <link>https://dev.to/_notbu7ch</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F19916%2F0b1e95ee-c2d5-456f-90f4-ae362f330ab0.jpg</url>
      <title>DEV Community: Rodolphe D.</title>
      <link>https://dev.to/_notbu7ch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_notbu7ch"/>
    <language>en</language>
    <item>
      <title>Le projet qui fonctionnait… mais que je détestais modifier</title>
      <dc:creator>Rodolphe D.</dc:creator>
      <pubDate>Thu, 28 May 2026 09:03:22 +0000</pubDate>
      <link>https://dev.to/_notbu7ch/le-projet-qui-fonctionnait-mais-que-je-detestais-modifier-5d8p</link>
      <guid>https://dev.to/_notbu7ch/le-projet-qui-fonctionnait-mais-que-je-detestais-modifier-5d8p</guid>
      <description>&lt;p&gt;Il y a un moment que tous les développeurs finissent par vivre.&lt;/p&gt;

&lt;p&gt;Celui où ton projet fonctionne parfaitement.&lt;/p&gt;

&lt;p&gt;Les routes répondent.&lt;/p&gt;

&lt;p&gt;La base de données est connectée.&lt;/p&gt;

&lt;p&gt;Les features font exactement ce que tu as prévu.&lt;/p&gt;

&lt;p&gt;Et pourtant… tu n’as aucune envie d’y retourner.&lt;/p&gt;




&lt;h2&gt;
  
  
  “Ça marche” n’est pas une victoire
&lt;/h2&gt;

&lt;p&gt;Je me souviens très bien de ce projet.&lt;/p&gt;

&lt;p&gt;Une API Node.js avec Express, PostgreSQL derrière, un peu de Sequelize pour faire propre.&lt;/p&gt;

&lt;p&gt;Rien de compliqué.&lt;/p&gt;

&lt;p&gt;Au début, tout était fluide.&lt;/p&gt;

&lt;p&gt;Tu codes, ça marche, tu avances.&lt;/p&gt;

&lt;p&gt;Tu as cette sensation agréable de progression rapide.&lt;/p&gt;

&lt;p&gt;Et puis un jour, tu reviens dessus.&lt;/p&gt;

&lt;p&gt;Juste pour ajouter une petite fonctionnalité.&lt;/p&gt;

&lt;p&gt;Et là… quelque chose change.&lt;/p&gt;

&lt;p&gt;Tu ouvres le projet.&lt;/p&gt;

&lt;p&gt;Tu regardes une route.&lt;/p&gt;

&lt;p&gt;Puis une autre.&lt;/p&gt;

&lt;p&gt;Et sans trop comprendre pourquoi, tu sens une forme de blocage.&lt;/p&gt;

&lt;p&gt;Pas technique.&lt;/p&gt;

&lt;p&gt;Mental.&lt;/p&gt;




&lt;h2&gt;
  
  
  Le vrai problème n’était pas le code
&lt;/h2&gt;

&lt;p&gt;Sur le moment, je me disais que ça allait.&lt;/p&gt;

&lt;p&gt;“C’est normal, c’est un petit projet.”&lt;/p&gt;

&lt;p&gt;Mais en réalité, le problème était déjà là.&lt;/p&gt;

&lt;p&gt;Mes routes faisaient tout.&lt;/p&gt;

&lt;p&gt;Un peu de logique métier ici.&lt;/p&gt;

&lt;p&gt;Un appel base de données là.&lt;/p&gt;

&lt;p&gt;Une gestion d’erreur bricolée dans un coin.&lt;/p&gt;

&lt;p&gt;Rien n’était vraiment structuré.&lt;/p&gt;

&lt;p&gt;Mais comme tout fonctionnait… je ne voyais pas le problème.&lt;/p&gt;




&lt;h2&gt;
  
  
  Jusqu’au jour où j’ai voulu modifier un truc simple
&lt;/h2&gt;

&lt;p&gt;Je voulais juste ajouter une fonctionnalité.&lt;/p&gt;

&lt;p&gt;Rien de fou.&lt;/p&gt;

&lt;p&gt;Un champ en plus, une petite logique.&lt;/p&gt;

&lt;p&gt;Et pourtant, j’ai commencé à hésiter.&lt;/p&gt;

&lt;p&gt;“Si je change ça… qu’est-ce que je vais casser ?”&lt;/p&gt;

&lt;p&gt;Et c’est là que j’ai compris un truc assez dérangeant.&lt;/p&gt;

&lt;p&gt;Mon code fonctionnait… mais je ne lui faisais plus confiance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Le moment un peu bizarre où tu réalises que tu subis ton propre code
&lt;/h2&gt;

&lt;p&gt;C’est difficile à expliquer.&lt;/p&gt;

&lt;p&gt;Tu n’as pas d’erreur.&lt;/p&gt;

&lt;p&gt;Pas de bug bloquant.&lt;/p&gt;

&lt;p&gt;Mais tu avances avec prudence.&lt;/p&gt;

&lt;p&gt;Comme si chaque modification pouvait déclencher une réaction en chaîne.&lt;/p&gt;

&lt;p&gt;Et ça, pour un développeur, c’est un signal très clair.&lt;/p&gt;

&lt;p&gt;Quelque chose ne va pas dans la structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Le premier déclic : arrêter de tout mettre au même endroit
&lt;/h2&gt;

&lt;p&gt;Je n’ai pas tout refactorisé d’un coup.&lt;/p&gt;

&lt;p&gt;Personne ne fait ça proprement.&lt;/p&gt;

&lt;p&gt;J’ai commencé petit.&lt;/p&gt;

&lt;p&gt;Une seule chose : arrêter de mettre toute la logique dans les routes.&lt;/p&gt;

&lt;p&gt;Avant, j’avais un truc comme ça :&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;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/events&lt;/span&gt;&lt;span class="dl"&gt;'&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;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&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;event&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&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="nx"&gt;event&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;Et dès que ça grossit un peu, ça devient vite ingérable.&lt;br&gt;
Validation, règles métier, permissions… tout finit empilé.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Le changement n’était pas spectaculaire
&lt;/h2&gt;

&lt;p&gt;J’ai juste déplacé la logique.&lt;/p&gt;

&lt;p&gt;Un service.&lt;/p&gt;

&lt;p&gt;Un contrôleur.&lt;/p&gt;

&lt;p&gt;Rien de magique.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// controller&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;createEvent&lt;/span&gt; &lt;span class="o"&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;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&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;event&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;eventService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createEvent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&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="nx"&gt;event&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// service&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;createEvent&lt;/span&gt; &lt;span class="o"&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;data&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="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&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;Et honnêtement ?&lt;/p&gt;

&lt;p&gt;À ce moment-là, je n’ai pas eu de révélation.&lt;/p&gt;

&lt;p&gt;Pas de “wow”.&lt;/p&gt;

&lt;p&gt;Juste un truc très simple :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“ok… c’est plus clair.”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Mais le vrai changement est venu après
&lt;/h2&gt;

&lt;p&gt;Le vrai test, ce n’est pas quand tu refactorises.&lt;/p&gt;

&lt;p&gt;C’est deux semaines après.&lt;/p&gt;

&lt;p&gt;Quand tu reviens dans ton projet.&lt;/p&gt;

&lt;p&gt;Et que tu comprends ce que tu as fait sans relire 15 fichiers.&lt;/p&gt;

&lt;p&gt;Là, j’ai senti la différence.&lt;/p&gt;

&lt;p&gt;Moins de stress.&lt;/p&gt;

&lt;p&gt;Moins d’hésitation.&lt;/p&gt;

&lt;p&gt;Moins de “je touche ou pas ?”&lt;/p&gt;




&lt;h2&gt;
  
  
  Ce que j’ai compris à ce moment-là
&lt;/h2&gt;

&lt;p&gt;Ce n’est pas la complexité du code qui pose problème.&lt;/p&gt;

&lt;p&gt;C’est le chaos invisible.&lt;/p&gt;

&lt;p&gt;Quand tout est mélangé, ton cerveau doit tout retenir en même temps :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;logique métier&lt;/li&gt;
&lt;li&gt;requêtes SQL&lt;/li&gt;
&lt;li&gt;gestion HTTP&lt;/li&gt;
&lt;li&gt;erreurs&lt;/li&gt;
&lt;li&gt;règles implicites&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et ça fatigue.&lt;/p&gt;

&lt;p&gt;Sans que tu t’en rendes compte.&lt;/p&gt;




&lt;h2&gt;
  
  
  Et pourtant… ce projet fonctionnait parfaitement
&lt;/h2&gt;

&lt;p&gt;C’est ça le piège.&lt;/p&gt;

&lt;p&gt;Le code peut être “bon” techniquement.&lt;/p&gt;

&lt;p&gt;Mais mauvais à vivre.&lt;/p&gt;

&lt;p&gt;Et à un moment, en tant que développeur, tu fais la différence entre :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;un projet qui marche&lt;/li&gt;
&lt;li&gt;et un projet avec lequel tu peux travailler sereinement&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  La suite a changé ma façon de coder
&lt;/h2&gt;

&lt;p&gt;Ce petit refactor m’a ouvert une porte.&lt;/p&gt;

&lt;p&gt;Après ça, je ne regardais plus mes projets de la même façon.&lt;/p&gt;

&lt;p&gt;Je ne cherchais plus juste à “faire fonctionner”.&lt;/p&gt;

&lt;p&gt;Je commençais à me demander :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“est-ce que je vais comprendre ça dans 2 semaines ?”&lt;/li&gt;
&lt;li&gt;“est-ce que quelqu’un d’autre peut lire ça facilement ?”&lt;/li&gt;
&lt;li&gt;“est-ce que je suis en train de créer du chaos sans m’en rendre compte ?”&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Et c’est là que tout commence vraiment
&lt;/h2&gt;

&lt;p&gt;Pas quand tu sais coder une API.&lt;/p&gt;

&lt;p&gt;Pas quand tu sais utiliser un ORM.&lt;/p&gt;

&lt;p&gt;Mais quand tu commences à ressentir ton propre code.&lt;/p&gt;

&lt;p&gt;Quand tu sais, instinctivement, qu’un projet va devenir lourd… avant même qu’il le devienne.&lt;/p&gt;




&lt;p&gt;👉 Dans le prochain article, on parlera d’un truc encore plus vicieux :&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;les routes Express qui deviennent illisibles sans qu’on s’en rende compte.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>express</category>
      <category>codenewbie</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Comment structurer une API simple avec Go pour plus de clarté</title>
      <dc:creator>Rodolphe D.</dc:creator>
      <pubDate>Tue, 26 May 2026 08:15:00 +0000</pubDate>
      <link>https://dev.to/_notbu7ch/comment-structurer-une-api-simple-avec-go-pour-plus-de-clarte-38g9</link>
      <guid>https://dev.to/_notbu7ch/comment-structurer-une-api-simple-avec-go-pour-plus-de-clarte-38g9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Quand on apprend à construire des backends, on a souvent le même réflexe : ajouter des couches.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Frameworks, abstractions, middlewares, services…&lt;/p&gt;

&lt;p&gt;Et petit à petit, on finit parfois par perdre de vue quelque chose de très simple :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ce que fait réellement une API.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧠 Revenir à l’essentiel
&lt;/h2&gt;

&lt;p&gt;Go m’a forcé à revenir à cette base.&lt;/p&gt;

&lt;p&gt;Pas parce qu’il est “magique” ou “révolutionnaire”.&lt;/p&gt;

&lt;p&gt;Mais parce qu’il est &lt;strong&gt;explicite&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Tout est plus direct :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;une requête arrive&lt;/li&gt;
&lt;li&gt;elle est traitée par une fonction&lt;/li&gt;
&lt;li&gt;une réponse est renvoyée&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et c’est tout.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔁 Le cycle réel d’une requête HTTP
&lt;/h2&gt;

&lt;p&gt;Si on simplifie au maximum, une API fonctionne toujours de la même manière :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Une requête HTTP arrive sur le serveur&lt;/li&gt;
&lt;li&gt;Elle est dirigée vers un handler&lt;/li&gt;
&lt;li&gt;Le handler exécute une logique métier&lt;/li&gt;
&lt;li&gt;Une réponse est renvoyée au format JSON&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ce schéma ne change jamais.&lt;/p&gt;

&lt;p&gt;Ce qui change, c’est la manière dont on le rend complexe.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 Le rôle du handler en Go
&lt;/h2&gt;

&lt;p&gt;En Go, un handler est juste une fonction.&lt;/p&gt;

&lt;p&gt;Pas une couche abstraite.&lt;/p&gt;

&lt;p&gt;Pas un système caché.&lt;/p&gt;

&lt;p&gt;Juste une fonction qui :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reçoit une requête&lt;/li&gt;
&lt;li&gt;traite une logique&lt;/li&gt;
&lt;li&gt;retourne une réponse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce découpage impose une discipline naturelle :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;peu de magie&lt;/li&gt;
&lt;li&gt;peu d’indirection&lt;/li&gt;
&lt;li&gt;beaucoup de lisibilité&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚙️ Ce que ça change dans ta manière de coder
&lt;/h2&gt;

&lt;p&gt;Quand tu commences à structurer tes backends en Go, tu observes un changement progressif :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tu penses en flux (request → process → response)&lt;/li&gt;
&lt;li&gt;tu réduis les couches inutiles&lt;/li&gt;
&lt;li&gt;tu rends les responsabilités plus claires&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et surtout, tu réalises quelque chose :&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;la complexité ne vient pas du langage, mais de la manière dont on structure les choses.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  📌 Ce qu’il faut retenir
&lt;/h2&gt;

&lt;p&gt;Go ne rend pas le backend “plus simple”.&lt;/p&gt;

&lt;p&gt;Il le rend &lt;strong&gt;plus lisible&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Et cette lisibilité change tout :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tu comprends ce que tu fais&lt;/li&gt;
&lt;li&gt;tu maintiens plus facilement&lt;/li&gt;
&lt;li&gt;tu évites les sur-architectures inutiles&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧭 Conclusion
&lt;/h2&gt;

&lt;p&gt;Si tu viens d’un écosystème comme Node.js, PHP ou Ruby, cette approche peut sembler un peu plus stricte au début.&lt;/p&gt;

&lt;p&gt;Mais cette “rigidité” est souvent ce qui manque pour retrouver de la clarté.&lt;/p&gt;

&lt;p&gt;Go n’ajoute pas de complexité.&lt;/p&gt;

&lt;p&gt;Il en enlève.&lt;/p&gt;

&lt;p&gt;Et parfois, c’est exactement ce dont on a besoin pour construire des systèmes plus sains.&lt;/p&gt;

</description>
      <category>go</category>
      <category>backend</category>
      <category>api</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Common backend mistakes I keep seeing from students</title>
      <dc:creator>Rodolphe D.</dc:creator>
      <pubDate>Thu, 21 May 2026 17:30:57 +0000</pubDate>
      <link>https://dev.to/_notbu7ch/common-backend-mistakes-i-keep-seeing-from-students-3gl4</link>
      <guid>https://dev.to/_notbu7ch/common-backend-mistakes-i-keep-seeing-from-students-3gl4</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.amazonaws.com%2Fuploads%2Farticles%2Ftbrt3phnnbmlm6nmk4mp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftbrt3phnnbmlm6nmk4mp.jpeg" alt="hardTimes" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  TL;DR
&lt;/h3&gt;

&lt;p&gt;Most beginner backend issues come down to 5 things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;messy APIs that don’t scale&lt;/li&gt;
&lt;li&gt;weak SQL habits&lt;/li&gt;
&lt;li&gt;security added too late&lt;/li&gt;
&lt;li&gt;no code structure&lt;/li&gt;
&lt;li&gt;bad error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fix these early and you’ll already be ahead of most juniors.&lt;/p&gt;




&lt;p&gt;When you start backend dev, the goal is simple: make it work.&lt;/p&gt;

&lt;p&gt;And honestly, that’s fine at the beginning.&lt;/p&gt;

&lt;p&gt;But after reviewing a lot of student projects, you start noticing the same patterns over and over again.&lt;/p&gt;

&lt;p&gt;Here are the most common ones.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧵 APIs that “work”, but don’t scale
&lt;/h2&gt;

&lt;p&gt;Most beginners build APIs that return everything, everywhere, all the time.&lt;/p&gt;

&lt;p&gt;You’ll see things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;endpoints that dump full database objects&lt;/li&gt;
&lt;li&gt;no pagination at all&lt;/li&gt;
&lt;li&gt;multiple DB calls for simple requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not a problem… until traffic grows or data increases.&lt;/p&gt;

&lt;p&gt;Then everything slows down, and nobody understands why.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧵 SQL used without thinking
&lt;/h2&gt;

&lt;p&gt;SQL is usually learned fast, then ignored in practice.&lt;/p&gt;

&lt;p&gt;Common patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;SELECT *&lt;/code&gt; everywhere&lt;/li&gt;
&lt;li&gt;no indexes&lt;/li&gt;
&lt;li&gt;joins stacked without thinking about cost&lt;/li&gt;
&lt;li&gt;“it works on my machine” queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s fine for small projects, but it doesn’t scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧵 Security added at the end (if at all)
&lt;/h2&gt;

&lt;p&gt;A lot of projects treat security like a final step.&lt;/p&gt;

&lt;p&gt;That leads to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;plain text passwords&lt;/li&gt;
&lt;li&gt;no validation on inputs&lt;/li&gt;
&lt;li&gt;weak or incorrect JWT handling&lt;/li&gt;
&lt;li&gt;no rate limiting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Security should be part of the design, not a patch.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧵 No real structure in the code
&lt;/h2&gt;

&lt;p&gt;Everything ends up inside controllers.&lt;/p&gt;

&lt;p&gt;At first it feels fast.&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;logic gets duplicated&lt;/li&gt;
&lt;li&gt;nothing is reusable&lt;/li&gt;
&lt;li&gt;testing becomes painful&lt;/li&gt;
&lt;li&gt;adding features starts breaking things&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s usually the moment people discover “clean architecture” exists.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧵 Error handling that doesn’t help
&lt;/h2&gt;

&lt;p&gt;This one is very common.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;everything returns 500&lt;/li&gt;
&lt;li&gt;no logs&lt;/li&gt;
&lt;li&gt;useless error messages&lt;/li&gt;
&lt;li&gt;no distinction between client and server errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When something breaks in production, debugging becomes guesswork.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Final thoughts
&lt;/h2&gt;

&lt;p&gt;None of this is dramatic. Everyone goes through it.&lt;/p&gt;

&lt;p&gt;The real issue is staying in that phase too long.&lt;/p&gt;

&lt;p&gt;If you fix even half of these early, you’ll already be ahead of most junior backend devs.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤝 Let’s build better backend habits together
&lt;/h2&gt;

&lt;p&gt;I’m trying to collect real-world mistakes and patterns from devs at all levels.&lt;/p&gt;

&lt;p&gt;If you’ve seen other common backend mistakes (or made some yourself 😅), drop them in the comments.&lt;/p&gt;

&lt;p&gt;Let’s build a list that actually helps juniors improve.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>webdev</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Once upon a time there was web development</title>
      <dc:creator>Rodolphe D.</dc:creator>
      <pubDate>Fri, 10 Jan 2020 13:25:42 +0000</pubDate>
      <link>https://dev.to/_notbu7ch/once-upon-a-time-there-was-web-development-3o1n</link>
      <guid>https://dev.to/_notbu7ch/once-upon-a-time-there-was-web-development-3o1n</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.amazonaws.com%2Fuploads%2Farticles%2F43u51t2pkbq6wgkmdv34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43u51t2pkbq6wgkmdv34.png" alt="from Undraw : focus" width="800" height="493"&gt;&lt;/a&gt;&lt;br&gt;
Hello everyone, it's okay, I finally decided to write a post... &lt;br&gt;
I'm a bit anxious because usually I still think I have nothing interesting to say. But I'm forced to admit that some of the people I work with on a daily basis are happy to hear my adventures.( So i come from France excuse my English)&lt;br&gt;
 So I'm going to talk subjectively here about certain subjects.&lt;br&gt;
 To begin with, we'll talk about learning.&lt;br&gt;
Learning something new can be exciting, but it can also be difficult. We expected that we would spend some time each day or each week learning something about a specific topic. We all aspire to some mastery of the subject we choose. If you're like me, you'll feel frustrated when your study time doesn't allow you to learn as much as the day before, but that's natural and it's part of the process. Learning is not linear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning by repetition
&lt;/h2&gt;

&lt;p&gt;Some things we learn simply by doing them over and over again. I'd be willing to bet you can add 2 and 3 in your head without even thinking about it. But why is that? It's because you've done it so much in your life that you don't even have to think about it. That's kind of the way you have to code. If you go on long enough, through repetition, you'll begin to be able to do things easily that you've had to make a concerted effort to do before. If you don't, you probably won't be able to pinpoint the exact time when it made sense to you. One way or another, over the course of rehearsals, it does.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhf1ej8v41covvwgz9s6l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhf1ej8v41covvwgz9s6l.png" alt="You can do it" width="800" height="642"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cliff Climbing
&lt;/h2&gt;

&lt;p&gt;On the other hand, some ideas are more abstract. There will probably be a time in your learning when you notice that things will become much more difficult. These situations tend to occur when concepts come into play. You've learned the basics, but now you have to put them together to design a solution to a problem. In my experience, it's a bit like standing at the bottom of a cliff. This is where I felt the most frustration in my learning process.&lt;br&gt;
But there is good news. It can be overcome, and you can climb that cliff! I have personally experienced situations where I simply couldn't grasp a concept. I may have heard twenty explanations and seen twenty examples on the same subject. For some unknown reason, perhaps it is the twenty-first explanation and the twenty-first example that enlightens me. In most cases, there is nothing very different between this example and those I have already seen. I have sat in my office and said, "Oh, when it finally hits me and the concept crystallizes like never before. The good thing about those moments is that once you understand the idea, it's hard to forget it.&lt;br&gt;
When you understand a concept, your learning is not so much a curve as a vertical jump.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing we should unlearn
&lt;/h2&gt;

&lt;p&gt;Humans are not born believing that they can never get smarter. This is something we learn in our lifetime, and it is something we should all unlearn. If you've ever seen a child tackle a puzzle, you'll have an idea of what I mean. A child will get bored with an easy problem, but will deal with a difficult one. On the other hand, an adult is likely to raise his or her hands in frustration and walk away from the problem. The instinct we are born with is that we can get the solution with enough time, effort and resources.&lt;br&gt;
Alfred Binet, the inventor of the first practical IQ test, believed that intelligence was changeable. In his book, we can find this quote: "Some modern philosophers assert that the intelligence of an individual is a fixed quantity, a quantity that cannot be increased. We must protest and react against this brutal pessimism... With practice, training, and above all method, we can increase our attention, memory, judgment and literally become more intelligent than before."&lt;br&gt;
You may be working on a piece of code or an idea that you haven't fully grasped yet. You might be thinking to yourself, "I'm not smart enough to do this". I always think that when I'm stuck. I take comfort in knowing that my inability to solve the problem is probably not permanent. It's something that can change with time, effort and resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memorizing is mostly wasteful
&lt;/h2&gt;

&lt;p&gt;People have repeatedly asked me what I think are the most important things to remember when learning to program. My answer: practically nothing. Anything that might be important enough to be memorized will naturally occur by repetition, as mentioned above. If you don't use a particular thing in your programs often enough to learn it by repetition, it's not worth the effort to memorize it either.&lt;br&gt;
Coming back to my mathematical example, you have probably memorized 2 + 3. I'm assuming you didn't memorize 29,083,983 + 3,497,267. And why is that? It's because you get the idea behind the addition. You know how addition works as a concept, so you can use it on any number you are given. This is an example of wasted memorization.&lt;br&gt;
Programmers, in general, do not rely on memorizing every construction, every parameter, every object, method and class. Instead, we use our resources combined with the concepts we have learned to produce the result. That's why documentation is so valuable, and you'll hear programmers talk about it a lot. I bet very few people memorize all the recipes in a cookbook. If we want to cook something else, we read the cookbook. It's the same idea. If a programmer had to memorize everything in one language, we wouldn't have programmers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep moving forward
&lt;/h2&gt;

&lt;p&gt;Don't stop learning. Even if you've been stuck on a problem or project for weeks, don't stop learning. You may need to go back and review some of your basics. You may need another source to change your pace. Try reading an explanation on Medium or search for something on YouTube. Maybe even do some generic Googling. You might even try to learn something else about the language/platform/IDE and get back to where you were stuck. Keep pushing against that wall. Eventually, you'll have a breakthrough, and it will probably be something you won't easily forget. It's worth the time and effort, even if you don't get immediate results.&lt;br&gt;
Programming can be hard to learn, but it can also be incredibly fun and more creative than non-programmers understand. If you are interested and dedicated enough, you will see progress. The next step may be your breaking point, but you'll never know if you don't take that step.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0f324kybckdy8jx4epj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0f324kybckdy8jx4epj.png" alt="Alt Text" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>motivation</category>
    </item>
  </channel>
</rss>
