<?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: Ibrahima D.</title>
    <description>The latest articles on DEV Community by Ibrahima D. (@ibrahimdans).</description>
    <link>https://dev.to/ibrahimdans</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%2F1002326%2F52fc8ac0-d5ec-492f-ab46-1fd9c95b716c.jpeg</url>
      <title>DEV Community: Ibrahima D.</title>
      <link>https://dev.to/ibrahimdans</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ibrahimdans"/>
    <language>en</language>
    <item>
      <title>The Principles I Code By: Small Rules, Big Difference</title>
      <dc:creator>Ibrahima D.</dc:creator>
      <pubDate>Sat, 06 Jun 2026 16:09:32 +0000</pubDate>
      <link>https://dev.to/ibrahimdans/the-principles-i-code-by-small-rules-big-difference-5d6a</link>
      <guid>https://dev.to/ibrahimdans/the-principles-i-code-by-small-rules-big-difference-5d6a</guid>
      <description>&lt;p&gt;&lt;strong&gt;Frameworks come and go. Principles stay.&lt;/strong&gt; ✨&lt;/p&gt;

&lt;p&gt;After a few years of writing software — from MVPs built from scratch 🚀 to legacy systems nobody dared to touch 👻 — I've come to realize something: the developers I admire most aren't the ones who know the most frameworks. They're the ones who follow a few simple principles, consistently, on every line they write.&lt;/p&gt;

&lt;p&gt;Over time, I've collected my own set of principles. They act like a compass 🧭: whenever I'm unsure how to approach a problem, I come back to them. None of them are mine — they've been shaped by people much smarter than me — but together they form the way I work. Let me walk you through each one, with examples from real life. 👇&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡ Make it work, make it right, make it fast
&lt;/h2&gt;

&lt;p&gt;This one, from &lt;strong&gt;Kent Beck&lt;/strong&gt;, is the backbone of everything else. It's an order of priorities, and the order matters:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;✅ &lt;strong&gt;Make it work&lt;/strong&gt; — first, get a working solution. Don't optimize, don't over-engineer. Just solve the problem.&lt;/li&gt;
&lt;li&gt;🧹 &lt;strong&gt;Make it right&lt;/strong&gt; — now refactor. Clean names, clear structure, tests. Make it readable for the next person (often your future self).&lt;/li&gt;
&lt;li&gt;🏎️ &lt;strong&gt;Make it fast&lt;/strong&gt; — only then, &lt;em&gt;if needed&lt;/em&gt;, optimize for performance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;An example 💡.&lt;/strong&gt; You need to display a list of users. The trap is to immediately think about caching, pagination, and database indexes. Don't. First, fetch the list and render it (&lt;em&gt;it works&lt;/em&gt;). Then extract a clean component and add a test (&lt;em&gt;it's right&lt;/em&gt;). Then, &lt;em&gt;only if the page is actually slow&lt;/em&gt;, add caching (&lt;em&gt;it's fast&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Most performance problems we obsess over never materialize. Respect the order, and you'll move faster overall. 🎯&lt;/p&gt;

&lt;h2&gt;
  
  
  🔮 YAGNI — You Aren't Gonna Need It
&lt;/h2&gt;

&lt;p&gt;We love to build for a future that rarely comes. 🔭 &lt;em&gt;"We might need this option later"&lt;/em&gt;, &lt;em&gt;"let's make it configurable just in case"&lt;/em&gt;... and we end up maintaining code nobody uses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An example 💡.&lt;/strong&gt; You're asked to export data as CSV. You think: "I'll build a generic exporter that also supports JSON, XML, and PDF, so we're ready for anything." Six months later, only CSV is used — but you're still maintaining (and debugging 🐛) three formats nobody asked for.&lt;/p&gt;

&lt;p&gt;YAGNI is a reminder: &lt;strong&gt;build for the need you have today, not the one you imagine for tomorrow.&lt;/strong&gt; ⏳ When tomorrow actually arrives, you'll have better information to build the right thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎲 The Principle of Least Surprise
&lt;/h2&gt;

&lt;p&gt;Code should behave the way the reader &lt;em&gt;expects&lt;/em&gt; it to. The best code is boring: when someone opens your file, nothing makes them go &lt;em&gt;"wait, what?"&lt;/em&gt; 😵 Surprise is where bugs hide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An example 💡.&lt;/strong&gt; A function called &lt;code&gt;getUser()&lt;/code&gt; that &lt;em&gt;also&lt;/em&gt; silently updates the last-login timestamp in the database. The name promises a read; the body does a write. Six months later, someone calls it in a loop to display names — and accidentally hammers the database. The code wasn't complex. It was &lt;em&gt;surprising&lt;/em&gt;. A function should do what its name says, nothing more.&lt;/p&gt;

&lt;p&gt;Here's a subtle one — and it sets up the next principle nicely: &lt;em&gt;predictable&lt;/em&gt; often wins over &lt;em&gt;simple&lt;/em&gt;. Sometimes slightly more verbose, "boring" code that follows the conventions of your codebase beats a clever one-liner that makes the next reader stop and squint. Be the developer whose code holds no surprises. 🧘&lt;/p&gt;

&lt;h2&gt;
  
  
  ✂️ KISS — Keep It Simple
&lt;/h2&gt;

&lt;p&gt;The simplest solution that solves the problem is almost always the best one. Complexity is easy to add and very hard to remove. 🧨&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An example 💡.&lt;/strong&gt; I've seen a single function grow to 200 lines because it tried to handle every imaginable case with a pile of flags: &lt;code&gt;processData(data, true, false, true)&lt;/code&gt;. 😵‍💫 Nobody could read it. Split into three small, well-named functions, the same logic became obvious at a glance.&lt;/p&gt;

&lt;p&gt;Before writing a clever abstraction, ask yourself: &lt;em&gt;do I really need this, or am I just showing off?&lt;/em&gt; 🤔 Simple code is code your teammates can read, debug, and change without fear. That's worth more than cleverness — but remember the previous principle: if "simple" means "surprising," go for predictable instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  ♻️ DRY — Don't Repeat Yourself
&lt;/h2&gt;

&lt;p&gt;Every piece of knowledge should have a single source of truth in your codebase. When the same logic lives in three places, fixing a bug means remembering all three — and you never do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An example 💡.&lt;/strong&gt; A password validation rule (8 characters, one uppercase, one digit) copy-pasted into the signup form, the reset form, and the back-end. The day the rule changes, you'll fix two of them and ship the bug in the third. 😬 Extract it once, use it everywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But be careful ⚠️&lt;/strong&gt; — don't apply DRY too early. Two pieces of code that &lt;em&gt;look&lt;/em&gt; similar today might evolve in different directions tomorrow. Forcing them into one abstraction creates a tangled mess. As the saying goes: &lt;em&gt;duplication is cheaper than the wrong abstraction.&lt;/em&gt; Wait until you see the pattern repeat a third time before extracting it.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧱 SOLID — Five Letters for Maintainable Code
&lt;/h2&gt;

&lt;p&gt;SOLID is a set of five principles for object-oriented design. People recite them like a spell, but each one solves a very concrete pain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;S — Single Responsibility.&lt;/strong&gt; A class (or function) should have one reason to change. A &lt;code&gt;User&lt;/code&gt; class that handles authentication &lt;em&gt;and&lt;/em&gt; sends emails &lt;em&gt;and&lt;/em&gt; formats invoices will break in three different ways. Split responsibilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O — Open/Closed.&lt;/strong&gt; Open for extension, closed for modification. Adding a new payment method shouldn't mean editing a giant &lt;code&gt;if/else&lt;/code&gt;. You should be able to &lt;em&gt;plug in&lt;/em&gt; the new case without touching the existing, tested code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;L — Liskov Substitution.&lt;/strong&gt; A subtype must work anywhere its parent is expected. If your &lt;code&gt;Square&lt;/code&gt; extends &lt;code&gt;Rectangle&lt;/code&gt; but breaks when you set width and height independently, your hierarchy is lying to you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I — Interface Segregation.&lt;/strong&gt; Many small, focused interfaces beat one giant one. Don't force a class to implement methods it doesn't need just because they live in the same interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D — Dependency Inversion.&lt;/strong&gt; Depend on abstractions, not concrete details. Your business logic shouldn't know &lt;em&gt;which&lt;/em&gt; database you use. Pass it an interface, and you can swap the implementation (or mock it in tests) freely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need to recite them. You need to feel them: code that's &lt;strong&gt;easy to extend and hard to break.&lt;/strong&gt; 💪&lt;/p&gt;

&lt;h2&gt;
  
  
  👣 Baby Steps — Small, Validated Increments
&lt;/h2&gt;

&lt;p&gt;Big changes are scary because they fail in big, mysterious ways. Small changes fail small, and they tell you exactly what went wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An example 💡.&lt;/strong&gt; Instead of writing 300 lines and running everything at the end (then spending an hour figuring out which part broke), I write a few lines, run the tests, commit, and repeat. When something fails, I know it's in the last tiny change — not somewhere in 300 lines. And because I commit often, &lt;code&gt;git bisect&lt;/code&gt; becomes a superpower. 🦸&lt;/p&gt;

&lt;p&gt;Progress made of tiny, reversible steps is faster than it looks — and far less stressful. 😌&lt;/p&gt;

&lt;h2&gt;
  
  
  🌳 The Mikado Method — Taming the Big Refactor
&lt;/h2&gt;

&lt;p&gt;Sometimes a change looks simple, then you pull the thread and the whole sweater unravels. 🧶 The &lt;strong&gt;Mikado Method&lt;/strong&gt; is how I handle that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An example 💡.&lt;/strong&gt; You want to upgrade a library. You change it — and 12 files break. The naive approach is to fix them all at once and pray. 😅 The Mikado approach: try the change, &lt;em&gt;see&lt;/em&gt; what breaks, write down the prerequisites, then &lt;strong&gt;revert&lt;/strong&gt;. Now tackle one prerequisite at a time, each as its own small, safe commit. Once the groundwork is done, the original change becomes trivial.&lt;/p&gt;

&lt;p&gt;The result: no more half-finished refactors stuck in a branch for three weeks. You always have working code, and a clear map of what's left. 🗺️&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 How they fit together
&lt;/h2&gt;

&lt;p&gt;None of these principles work alone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🪶 &lt;strong&gt;KISS&lt;/strong&gt;, &lt;strong&gt;YAGNI&lt;/strong&gt; and &lt;strong&gt;Least Surprise&lt;/strong&gt; keep me from building too much — and from building it weird.&lt;/li&gt;
&lt;li&gt;🛠️ &lt;strong&gt;DRY&lt;/strong&gt; and &lt;strong&gt;SOLID&lt;/strong&gt; keep what I build maintainable.&lt;/li&gt;
&lt;li&gt;🛡️ &lt;strong&gt;Baby Steps&lt;/strong&gt; and &lt;strong&gt;Mikado&lt;/strong&gt; keep me safe when I change existing code.&lt;/li&gt;
&lt;li&gt;🧭 And &lt;strong&gt;"make it work, make it right, make it fast"&lt;/strong&gt; sets the order for all of it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But here's the uncomfortable truth nobody tells you when you first learn these: &lt;strong&gt;principles contradict each other.&lt;/strong&gt; 💥 YAGNI says &lt;em&gt;don't build it&lt;/em&gt;, while SOLID says &lt;em&gt;add this layer of abstraction&lt;/em&gt;. DRY says &lt;em&gt;extract the duplicate&lt;/em&gt;, while Least Surprise says &lt;em&gt;keep it consistent and obvious&lt;/em&gt;. So which one wins?&lt;/p&gt;

&lt;p&gt;The trick is to treat them as a &lt;strong&gt;hierarchy, not a checklist.&lt;/strong&gt; 🏛️ The foundational ones come first, and a "higher" principle is only allowed to apply when it doesn't break a "lower" one. Roughly: &lt;em&gt;make it work&lt;/em&gt; → &lt;em&gt;YAGNI&lt;/em&gt; → &lt;em&gt;least surprise&lt;/em&gt; → &lt;em&gt;KISS&lt;/em&gt; → &lt;em&gt;DRY&lt;/em&gt; → &lt;em&gt;SOLID&lt;/em&gt; → and &lt;em&gt;make it fast&lt;/em&gt; dead last. When two principles clash, the more foundational one wins. That's how you stop arguing in circles in code review.&lt;/p&gt;

&lt;p&gt;They're not rules I follow blindly — every one of them has a &lt;em&gt;"but"&lt;/em&gt; attached, as you've seen. They're a starting point, a default. The judgment of when to bend them — and which one outranks which — comes with experience.&lt;/p&gt;

&lt;p&gt;So next time you're staring at a problem, unsure where to start, ask yourself the simplest question:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;"What's the smallest, simplest thing that makes this work?"&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Start there. Your code, your teammates, and your future self will thank you. 🙌&lt;/p&gt;




&lt;p&gt;These are &lt;em&gt;my&lt;/em&gt; principles — but I'm always looking to sharpen my compass. 🧭&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What about you?&lt;/strong&gt; Which principle has saved you the most pain? Is there a rule you swear by that I didn't mention here? Or maybe one of these you've learned to &lt;em&gt;break&lt;/em&gt; on purpose?&lt;/p&gt;

&lt;p&gt;👇 &lt;strong&gt;Drop your favorite tip in the comments&lt;/strong&gt; — I read every one, and I'd love to learn from yours. And if this article resonated with you, a ❤️ or a 🔖 helps it reach another dev who needs it.&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀 &lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>cleancode</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How to use two instances of Claude Code</title>
      <dc:creator>Ibrahima D.</dc:creator>
      <pubDate>Tue, 19 Aug 2025 15:24:44 +0000</pubDate>
      <link>https://dev.to/ibrahimdans/how-to-use-two-instances-of-claude-code-2nae</link>
      <guid>https://dev.to/ibrahimdans/how-to-use-two-instances-of-claude-code-2nae</guid>
      <description>&lt;p&gt;&lt;strong&gt; You have reached the limit for Claude Code &lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F288ry0oj49fc9yg4aooj.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%2F288ry0oj49fc9yg4aooj.png" alt=" " width="800" height="38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's quite frustrating, especially since it often happens when our treatment isn't finished.&lt;br&gt;
It's not ideal to have two instances of Claude, because it means paying for Claude Pro twice, but it's cheaper than having Claude Max, which costs over €100.&lt;/p&gt;

&lt;p&gt;First, at the root of your account, create a new folder that will hold your Claude configurations, credentials, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpna116amqbdoptd8ptzv.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%2Fpna116amqbdoptd8ptzv.png" alt=" " width="191" height="65"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have specific configurations such as commands, don't forget to copy them. That's what I do when I activate another instance of Claude.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp -R .claude .claude-2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;in zshrc &lt;code&gt;$HOME/.zshrc|.bashrc&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cc() {
 claude
}

ccp() {

CLAUDE_CONFIG_DIR=~/.claude-2 claude

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you just need to launch &lt;strong&gt;cc&lt;/strong&gt; for claude or &lt;strong&gt; ccp  for claude-2.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Note: &lt;strong&gt;cc&lt;/strong&gt; and &lt;strong&gt;ccp&lt;/strong&gt; are arbitrary you can call them whatever you want.&lt;/p&gt;

&lt;p&gt;Enjoy &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9l5gkm9tirlo25v5hc6e.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%2F9l5gkm9tirlo25v5hc6e.png" alt=" " width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Essential Code Review Terms Every Developer Should Know</title>
      <dc:creator>Ibrahima D.</dc:creator>
      <pubDate>Mon, 07 Jul 2025 09:12:09 +0000</pubDate>
      <link>https://dev.to/ibrahimdans/essential-code-review-terms-every-developer-should-know-2dp6</link>
      <guid>https://dev.to/ibrahimdans/essential-code-review-terms-every-developer-should-know-2dp6</guid>
      <description>&lt;p&gt;When I first started out in this profession, I would often come across certain terms and acronyms in code reviews and team discussions, and I always wondered what they meant. If you’re new to software development or just want a refresher, here’s a handy list that might help you navigate those conversations more confidently.&lt;/p&gt;

&lt;p&gt;Common Terms and Acronyms&lt;br&gt;
&lt;strong&gt;WIP&lt;/strong&gt; (Work In Progress): Indicates that the work or pull request is not finished yet and is not ready for a full review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LGTM&lt;/strong&gt; (Looks Good To Me): The proposed code looks correct and can be merged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NIT&lt;/strong&gt; (Nitpick): A minor suggestion or remark, often about style or readability, with no functional impact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ACK&lt;/strong&gt; (Acknowledge): Confirms that a comment has been read and considered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PTAL&lt;/strong&gt; (Please Take A Look): A request to review or re-review the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RFC&lt;/strong&gt; (Request For Comments): An invitation for feedback or opinions on a proposal or change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMO/IMHO&lt;/strong&gt; (In My [Humble] Opinion): Indicates that what follows is a personal opinion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blocking&lt;/strong&gt;: A comment or issue that must be addressed before the code can be merged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-blocking&lt;/strong&gt;: A suggestion or remark that does not prevent the code from being merged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ship It&lt;/strong&gt;: Informal way of saying the code is ready to be delivered or merged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stale&lt;/strong&gt;: A review or pull request that hasn’t seen activity in a long time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Self-review&lt;/strong&gt;: Reviewing your own code before submitting it to others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refactor&lt;/strong&gt;: Rewriting code to improve its structure or readability without changing its functionality.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Patch&lt;/strong&gt;: A software fix or update.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hotfix&lt;/strong&gt;: A quick fix for a critical bug, usually deployed urgently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DRY&lt;/strong&gt; (Don’t Repeat Yourself): Principle to avoid code duplication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bump&lt;/strong&gt;: To increase or update a version number, or to make a small improvement or fix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chore&lt;/strong&gt;: A technical or maintenance task that doesn’t add a new user-facing feature, but is necessary for the health of the project (e.g., code cleanup, updating dependencies, configuring tools).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FYI&lt;/strong&gt; (For Your Information): Sharing information without expecting an immediate response or action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TBR&lt;/strong&gt; (To Be Reviewed): Indicates that a piece of code or change is waiting for review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dead code&lt;/strong&gt;: Unused or obsolete code that should be removed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Needs Rebase&lt;/strong&gt;: The branch needs to be updated to resolve conflicts or incorporate the latest changes from the main branch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outdated&lt;/strong&gt;: A comment made on an older version of the code, often after a rebase or new commit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TBD&lt;/strong&gt; (To Be Determined/Defined): Something that still needs to be specified or decided.&lt;/p&gt;

&lt;p&gt;If you know more terms or acronyms that are commonly used in code reviews, feel free to share them in the comments! This list is not exhaustive, and your input can help others in the community. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8fy543e9m32kkikg57b.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%2Fu8fy543e9m32kkikg57b.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>development</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Enhancing Testability with Dynamic Data-testid Attributes</title>
      <dc:creator>Ibrahima D.</dc:creator>
      <pubDate>Thu, 28 Mar 2024 14:21:39 +0000</pubDate>
      <link>https://dev.to/ibrahimdans/enhancing-testability-with-dynamic-data-testid-attributes-4407</link>
      <guid>https://dev.to/ibrahimdans/enhancing-testability-with-dynamic-data-testid-attributes-4407</guid>
      <description>&lt;p&gt;We've all been faced with the challenge of choosing a better test ID for our component at some point. Why not leverage the logic we already use for CSS, like BEM (Block Element Modifier)? What is the best solution for achieving consistent and logical IDs across the board? What are the existing best practices?&lt;/p&gt;

&lt;p&gt;✅ The Solution:&lt;br&gt;
The best solution I've found with React is to create a custom hook that generates an ID, making it easier to locate them in our tests.&lt;/p&gt;

&lt;p&gt;📚 Code Examples:&lt;/p&gt;

&lt;p&gt;Create a custom hook useTestIdGenerator.ts:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkqnvgc5lhoukytfjaamb.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%2Fkqnvgc5lhoukytfjaamb.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use the custom hook in your grid component:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhwpfp2r0u86mian29dbh.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%2Fhwpfp2r0u86mian29dbh.png" alt=" " width="800" height="652"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, each element in your grid has unique "data-testid" attributes!&lt;/p&gt;

&lt;p&gt;This approach greatly facilitates testing of dynamic components while maintaining the cleanliness and maintainability of your code. 🔥&lt;/p&gt;

&lt;p&gt;An example test using this unique attribute:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokwy6vh5loza5pgpcehp.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%2Fokwy6vh5loza5pgpcehp.png" alt=" " width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't hesitate If you have another even better solution, to suggest it in the comments.&lt;/p&gt;

</description>
      <category>react</category>
      <category>testing</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>The boy scout rule : Small Steps, Big Impact</title>
      <dc:creator>Ibrahima D.</dc:creator>
      <pubDate>Mon, 04 Sep 2023 10:01:31 +0000</pubDate>
      <link>https://dev.to/ibrahimdans/the-boy-scout-rule-small-steps-big-impact-1dp6</link>
      <guid>https://dev.to/ibrahimdans/the-boy-scout-rule-small-steps-big-impact-1dp6</guid>
      <description>&lt;p&gt;In his book 'Clean Code,' &lt;strong&gt;Robert C. Martin&lt;/strong&gt; introduces us to an essential principle for writing beautiful code, the famous Boy Scout Rule, which can be summed up in one sentence: 'Always leave a place in a better state than you found it.'&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fps8rj3njw0f26s8tzg2i.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.amazonaws.com%2Fuploads%2Farticles%2Fps8rj3njw0f26s8tzg2i.jpg" alt=" " width="640" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As developers, we are constantly faced with challenges to produce clean, readable, and maintainable code. One of the simplest yet most powerful methods to achieve this goal is the Boy Scout Rule. Inspired by the idea of leaving the environment in a better state than we found it, this rule can have a significant impact on the quality of our code. In this article, we will explore this concept and discover how it can enhance our development process&lt;/p&gt;

&lt;p&gt;The Boy Scout Rule, popularized by software engineering veteran Robert C. Martin, encourages us to improve the code with every change we make, even if that change is not directly related to our current task. This can include minor adjustments such as renaming variables for clarity, adding comments to explain complex parts of the code, or reorganizing sections for better readability.&lt;/p&gt;

&lt;p&gt;The Benefits of Following the Rule&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cleaner Code&lt;/strong&gt;: By adopting this rule, we ensure that our code remains consistently clean and organized. The cumulative effect of small improvements over time contributes to overall quality maintenance.&lt;/p&gt;

&lt;p&gt;Ease of Maintenance: Well-maintained code is easier to understand and modify. Future development teams will appreciate code that reads like a well-written book.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reducing Technical Debt&lt;/strong&gt;: By preventing the accumulation of poor code, we avoid technical debt, allowing development to proceed smoothly without being hindered by quality issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Apply the Boy Scout Rule&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be Conscious&lt;/strong&gt;: Every time you modify a part of the code, be mindful of opportunities for improvement. Ask yourself, "How can I leave this part of the code in a better state?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prioritize&lt;/strong&gt;: Not all improvements are equal. Focus on changes that will have the most impact on code readability, maintainability, and clarity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Communicate&lt;/strong&gt;: Share the Boy Scout Rule with your colleagues. Encourage a development culture where a commitment to quality is valued.&lt;/p&gt;

&lt;p&gt;The Boy Scout Rule is a simple yet effective approach to ensuring the ongoing quality of our code. By incorporating this philosophy into our development process, we contribute to an environment where code respect and a continuous improvement mindset are at the core of our work. So, the next time you make a change, ask yourself, &lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;'Am I leaving the code in a better state than I found it?'&lt;/strong&gt;&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Your code, your colleagues, and your future self will thank you.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv5fz7p8sic5xl3rzmjqr.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%2Fv5fz7p8sic5xl3rzmjqr.png" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>11 Pieces of Advice I Wish I Had Known as a Junior Developer</title>
      <dc:creator>Ibrahima D.</dc:creator>
      <pubDate>Wed, 16 Aug 2023 10:41:40 +0000</pubDate>
      <link>https://dev.to/ibrahimdans/11-pieces-of-advice-i-wish-i-had-known-as-a-junior-developer-2o7e</link>
      <guid>https://dev.to/ibrahimdans/11-pieces-of-advice-i-wish-i-had-known-as-a-junior-developer-2o7e</guid>
      <description>&lt;p&gt;Being a &lt;strong&gt;junior developer&lt;/strong&gt; is an exciting stage, but it's often filled with challenges and learning experiences. Looking back, many developers realize that there were several things they would have liked to know at the beginning of their careers. This article delves into the valuable lessons and advice that I would have wished to receive when starting out in the field.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Don't Neglect the Basics !!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the most common mistakes made by junior developers is to focus solely on memorizing syntax and using ready-made solutions. In reality, understanding the fundamental concepts of programming and specific languages is essential. This enables more effective problem-solving, adaptation of solutions to needs, and building a solid foundation for further development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Read the Documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reading, re-reading, and reading documentation again is often underestimated, but it can make all the difference in the development process. Junior developers should learn to read and create accurate documentation from the start. This facilitates collaboration with other team members, understanding libraries and frameworks, and contributes to quick problem resolution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Learn How to Learn&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The development industry evolves rapidly with new technologies and emerging best practices constantly. Developers should become familiar with the idea that learning never stops. Participating in online courses, following relevant blogs, and working on personal projects are all ways to stay updated and continue evolving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Code Simply, Then Format the Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's easy to fall into the trap of wanting to write perfect code from the start. However, it's more important to focus on efficient problem-solving. Developers should learn to iterate, test their ideas quickly, and improve gradually. Perfection comes with experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Don't Hesitate to Ask Questions and Seek Help&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Development isn't limited to just programming. Communication with team members, clients, and stakeholders is crucial for understanding needs, sharing ideas, and solving problems. Developers should cultivate their communication skills to become valuable team members.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Don't Fear Failure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Making mistakes is part of learning, so don't be afraid of making them. Even great software developers have been fired, made mistakes, and felt down, but what makes them great is that they rise and learn from their mistakes. Don't be discouraged by errors or bugs; use them as learning and growth opportunities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Contribute to Open Source Software&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You'll learn a lot by contributing to an open-source project, so by helping the community, you're helping yourself, and maintainers are happy. Start small and learn about the project; begin with a framework/tool you use. There are many ways to contribute to open-source projects, such as reporting a bug, reproducing the bug, and writing code to fix a bug or implement a new feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Be Open to Feedback and Criticism&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Receiving constructive feedback on your code is a chance to learn and improve. Be open to critiques and consider them as opportunities for growth. Practicing egoless programming can be beneficial.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Manage Your Time&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Development can be time-intensive. Learn to manage your time by planning, setting priorities, and avoiding getting overwhelmed by secondary tasks. The day you're satisfied with your development is the day you'll no longer grow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Version Your Code (GitHub, GitLab, Bitbucket ...)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use a version control system like Git from the start. This allows you to track the evolution of your code, collaborate more effectively with other developers, and revert changes if necessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11. Enjoy the Journey&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Taking breaks and vacations is essential to maintain a healthy balance between work and personal life. Schedule short, regular breaks throughout the day to rest your mind. Techniques like the Pomodoro technique recommend working for about 25 minutes and then taking a 5-minute break. Use this time to stand up, stretch, take deep breaths, or simply step away from your screen.&lt;/p&gt;

&lt;p&gt;Don't underestimate the importance of vacations. Plan your time off in advance and make sure to adhere to it. When you go on vacation, truly disconnect from work. Avoid checking your work emails or thinking about ongoing projects. Allow yourself the necessary time to rest, relax, and recharge.&lt;/p&gt;

&lt;p&gt;Regardless of the experience gained over the years, being junior or senior isn't determined by time alone, but by the level of professionalism one achieves. Each day is an opportunity to continue learning, growing, and refining one's skills. This mindset enables me not only to embrace new technologies and tackle challenges but also to stay connected to the very essence of programming – a constant quest for improvement and understanding. Recognizing that development is a perpetually evolving field, I remain linked to its ever-changing dynamics.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Egoless Programming</title>
      <dc:creator>Ibrahima D.</dc:creator>
      <pubDate>Thu, 10 Aug 2023 12:21:55 +0000</pubDate>
      <link>https://dev.to/ibrahimdans/egoless-programming-1h9o</link>
      <guid>https://dev.to/ibrahimdans/egoless-programming-1h9o</guid>
      <description>&lt;p&gt;In the dynamic landscape of software development, a transformative concept is gaining prominence: "Egoless Programming." Rooted in collaboration and humility, this approach transcends individual ego to prioritize collective success. This article delves into the tenets of egoless programming, its impact on project quality, and its role in cultivating a harmonious development environment. A fresh perspective that could steer developers toward more efficient and fulfilling horizons.&lt;/p&gt;

&lt;p&gt;Egoless programming," also known as "programming without ego" in French, is a concept in the field of computer programming that encourages developers to embrace a humble and collaborative approach when creating software. The fundamental idea behind egoless programming is for developers to set aside their ego, biases, and personal desires in order to work together constructively and produce high-quality code.&lt;/p&gt;

&lt;p&gt;The key principles of egoless programming include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Focus on Results, Not Individuals&lt;/strong&gt;: Emphasis is placed on achieving project objectives rather than seeking personal credit or recognition. Programmers prioritize what's best for the software and its users, rather than their own glory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embrace Constructive Criticism&lt;/strong&gt;: Programmers should be open to feedback and suggestions from peers. They should be willing to challenge their own code and make improvements based on received feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team Collaboration&lt;/strong&gt;: Egoless programming promotes effective collaboration and communication among team members. Programmers should be ready to share knowledge and learn from others, rather than monopolizing expertise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continuous Learning&lt;/strong&gt;: Programmers acknowledge that there's always something new to learn and discover. They should be open to continuous learning and skill improvement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Minimize Code Ownership&lt;/strong&gt;: Instead of clinging to specific code as if it were their exclusive creation, programmers should encourage code sharing and collective improvement.&lt;/p&gt;

&lt;p&gt;Egoless programming can contribute to code quality enhancement, reduce conflicts within the development team, and foster a more positive and collaborative work environment. Ultimately, the focus is on creating high-quality software rather than individual programmer ego.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
