<?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: Yeferson Guarin</title>
    <description>The latest articles on DEV Community by Yeferson Guarin (@jeffaristi92).</description>
    <link>https://dev.to/jeffaristi92</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%2F523433%2Fdf814682-1728-4f27-9584-0d7f23a7d522.jpeg</url>
      <title>DEV Community: Yeferson Guarin</title>
      <link>https://dev.to/jeffaristi92</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jeffaristi92"/>
    <language>en</language>
    <item>
      <title>Sweeft: reclaim the gigabytes your dev tools quietly eat (and how I finally built it with Claude Code)</title>
      <dc:creator>Yeferson Guarin</dc:creator>
      <pubDate>Wed, 05 Aug 2026 13:36:35 +0000</pubDate>
      <link>https://dev.to/jeffaristi92/sweeft-reclaim-the-gigabytes-your-dev-tools-quietly-eat-and-how-i-finally-built-it-with-claude-2mf4</link>
      <guid>https://dev.to/jeffaristi92/sweeft-reclaim-the-gigabytes-your-dev-tools-quietly-eat-and-how-i-finally-built-it-with-claude-2mf4</guid>
      <description>&lt;p&gt;Every developer's disk is slowly being eaten alive.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;node_modules&lt;/code&gt; here, a forgotten &lt;code&gt;bin/obj&lt;/code&gt; there, a &lt;code&gt;.gradle&lt;/code&gt; cache that somehow grew to a gigabyte, an &lt;code&gt;.iso&lt;/code&gt; you downloaded eight months ago "just in case." Multiply that across dozens of projects and old folders, and one day your drive is full and you have no idea where it all went.&lt;/p&gt;

&lt;p&gt;I got tired of hunting it down by hand, so I built &lt;strong&gt;&lt;a href="https://github.com/jeffaristi92/Sweeft" rel="noopener noreferrer"&gt;Sweeft&lt;/a&gt;&lt;/strong&gt; — a small, fast, cross-platform tool (CLI &lt;strong&gt;and&lt;/strong&gt; GUI) that finds this stuff and helps you reclaim the space &lt;strong&gt;safely&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Sweep the cruft.&lt;/em&gt; — a Jeffersoft tool. MIT-licensed, single native binary, no runtime required.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  An idea I'd carried for a long time
&lt;/h2&gt;

&lt;p&gt;Here's the honest backstory: for years I kept losing time manually going project by project, deleting folders to free up space. And for just as long I'd had the idea of building a tool to do that &lt;em&gt;intelligently&lt;/em&gt; — but I never made the time. Company work always pulled me away, and "I'll build it someday" stayed a someday.&lt;/p&gt;

&lt;p&gt;What changed is that today we have tools powerful enough to close that gap between &lt;em&gt;idea&lt;/em&gt; and &lt;em&gt;shipped&lt;/em&gt;. I sat down with &lt;strong&gt;&lt;a href="https://claude.com/claude-code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;&lt;/strong&gt;, turned the vague idea in my head into a real plan, and then we executed it. That's how Sweeft was born.&lt;/p&gt;

&lt;p&gt;I'll be transparent about my three reasons for building it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A real need&lt;/strong&gt; — I genuinely wanted my disk space back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curiosity&lt;/strong&gt; — I wanted to push on what an AI coding agent like Claude Code can actually do on a real, end-to-end project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;To give something back&lt;/strong&gt; — I wanted to hand the community a tool that might be useful. Use it, fork it, change whatever you want, and if it helps you, drop a ⭐ on the repo.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# macOS / Linux&lt;/span&gt;
brew &lt;span class="nb"&gt;install &lt;/span&gt;jeffaristi92/tap/sweeft

&lt;span class="c"&gt;# Windows&lt;/span&gt;
scoop bucket add sweeft https://github.com/jeffaristi92/scoop-bucket
scoop &lt;span class="nb"&gt;install &lt;/span&gt;sweeft

&lt;span class="c"&gt;# Any OS with the .NET SDK&lt;/span&gt;
dotnet tool &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; Sweeft
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or grab a single native binary from the &lt;a href="https://github.com/jeffaristi92/Sweeft/releases" rel="noopener noreferrer"&gt;releases page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes it more than &lt;code&gt;rm -rf node_modules&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Deleting build folders is easy. Deleting them &lt;em&gt;without shooting yourself in the foot&lt;/em&gt; is the interesting part. That's where Sweeft spends its effort.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. See where your space actually went
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sweeft ~/projects &lt;span class="nt"&gt;--top&lt;/span&gt; 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;   3.2 GB  ████████████████████   79%  ZeroOne/
 302 MB    ██                      7%  AppRecetas/
 118 MB    █                       3%  api-workers/
&lt;/span&gt;&lt;span class="c"&gt; ...
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The GUI takes this further with an interactive &lt;strong&gt;treemap&lt;/strong&gt; — rectangles sized by disk usage, double-click to drill in. It's the "where did my space go?" view, read-only, it never deletes anything.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Clean regenerable folders — carefully
&lt;/h3&gt;

&lt;p&gt;Sweeft knows the usual suspects (&lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;bin&lt;/code&gt;, &lt;code&gt;obj&lt;/code&gt;, &lt;code&gt;.vs&lt;/code&gt;, &lt;code&gt;target&lt;/code&gt;, &lt;code&gt;.gradle&lt;/code&gt;, &lt;code&gt;__pycache__&lt;/code&gt;, &lt;code&gt;dist&lt;/code&gt;, &lt;code&gt;build&lt;/code&gt;, virtualenvs…) and reports them sorted by size. By default it sends everything to the &lt;strong&gt;Recycle Bin&lt;/strong&gt; (recoverable), asks before deleting, and refuses unattended permanent deletion unless you explicitly pass &lt;code&gt;--force&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. It's Git-aware
&lt;/h3&gt;

&lt;p&gt;This is my favorite safety feature. Sweeft detects the Git repo each item belongs to and checks whether it has &lt;strong&gt;uncommitted changes&lt;/strong&gt;. Those items get flagged and are &lt;em&gt;not&lt;/em&gt; pre-selected — so you never wipe a &lt;code&gt;build/&lt;/code&gt; folder in a project you're mid-way through.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;code&gt;--stale&lt;/code&gt;: don't touch what you're working on
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sweeft ~/projects &lt;span class="nt"&gt;--stale&lt;/span&gt; 90d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This only cleans regenerable folders of projects you &lt;strong&gt;haven't touched in 90 days&lt;/strong&gt;. The project you're coding on today? Untouched. The prototype you abandoned last spring? Fair game.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. &lt;code&gt;--global&lt;/code&gt;: the caches nobody ever cleans
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sweeft &lt;span class="nt"&gt;--global&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;npm, NuGet, pip, Gradle, Maven, Cargo, Go… their global caches grow forever. On my machine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  npm cache ............. 14.46 GB
  NuGet packages ......... 9.48 GB
  pip / pnpm / Gradle .... ~3 GB
  ────────────────────────────────
  Total reclaimable ..... 27.49 GB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;27 GB&lt;/strong&gt; I didn't know I could get back. All rebuildable on demand.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. An interactive terminal picker
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sweeft ~/projects &lt;span class="nt"&gt;--tui&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrow keys, space to toggle, Enter to clean. Regenerable items pre-checked, dirty-repo items flagged. And there's a full WPF GUI on Windows with a scan/stop button, per-type toggles, and that treemap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Under the hood (the fun part)
&lt;/h2&gt;

&lt;p&gt;A few things I enjoyed building:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;.NET 8 + NativeAOT.&lt;/strong&gt; The CLI ships as a single ~3.5 MB native binary — instant startup, no runtime to install. The trick was making JSON AOT-safe with source generators instead of reflection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One shared Core.&lt;/strong&gt; The scan engine, models, Git detection and deletion live in a &lt;code&gt;Core&lt;/code&gt; library reused by &lt;em&gt;both&lt;/em&gt; the CLI and the GUI. Write once, two front-ends.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A real security bug I had to defend against.&lt;/strong&gt; Sweeft runs &lt;code&gt;git status&lt;/code&gt; inside repositories it discovers — and a hostile repo can set &lt;code&gt;core.fsmonitor&lt;/code&gt; to an arbitrary command that Git executes on &lt;code&gt;status&lt;/code&gt;. Scanning a downloaded project could run code. Fix: resolve &lt;code&gt;git&lt;/code&gt; by absolute path and run it with &lt;code&gt;-c core.fsmonitor=&lt;/code&gt; and &lt;code&gt;GIT_CONFIG_NOSYSTEM&lt;/code&gt;, so a malicious repo config can't execute anything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyless publishing.&lt;/strong&gt; Releases are automated on Git tags: GitHub Actions cross-compiles native binaries for Windows, Linux, and both macOS architectures, publishes the GitHub Release, and pushes the .NET tool to NuGet via &lt;strong&gt;Trusted Publishing (OIDC)&lt;/strong&gt; — no long-lived API key stored anywhere. Homebrew and Scoop manifests update themselves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-compiling macOS on CI.&lt;/strong&gt; The scarce macOS-Intel runners kept blocking releases, so the Apple-Silicon runner now cross-compiles &lt;em&gt;both&lt;/em&gt; macOS binaries. Reliable, and I still ship an Intel build.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building it with an AI agent — the process
&lt;/h2&gt;

&lt;p&gt;Since one of my goals was to test how far an AI coding agent can go on a &lt;em&gt;real&lt;/em&gt; project, here's an honest account of how the work actually went. It wasn't "type a prompt, get an app." It was a back-and-forth where I made the calls and Claude Code did the heavy lifting — and, importantly, it hit real-world walls and had to work through them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plan first, then execute.&lt;/strong&gt; We started from architecture decisions (a shared &lt;code&gt;Core&lt;/code&gt; reused by a CLI, with a GUI to come later), not from code. Having that skeleton made everything after it faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Iterative, in vertical slices.&lt;/strong&gt; CLI scanner → WPF GUI → Git-awareness → shared config → then the features (&lt;code&gt;--stale&lt;/code&gt;, &lt;code&gt;--global&lt;/code&gt;, disk-usage treemap, the TUI). Each landed as a working, tested slice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A security review that found a real bug.&lt;/strong&gt; I asked for a security pass, and it surfaced the &lt;code&gt;git core.fsmonitor&lt;/code&gt; remote-code-execution vector above — then &lt;em&gt;proved it&lt;/em&gt; with an actual exploit (a repo that dropped a marker file when scanned) and confirmed the fix blocked it. That's the moment I stopped treating this like a toy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real friction, real fixes.&lt;/strong&gt; My antivirus (McAfee) quarantined the unsigned native binary; a macOS-Intel CI runner sat stuck in a queue for 90+ minutes and blocked a release; re-tagging once rebuilt the binaries with new hashes and broke the Homebrew/Scoop manifests. None of these are things you plan for — we diagnosed and solved each one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The boring-but-crucial 80%.&lt;/strong&gt; Cross-platform line endings, an MIT license, CI, four distribution channels, OIDC publishing, self-updating package manifests, English-only docs, a rename/rebrand to "Sweeft." The kind of scaffolding that usually never gets done on a side project — this time it did.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My honest takeaway: the agent didn't replace the engineering judgment (naming, trade-offs, "ship the Intel build too," "don't ship a self-hosted runner on a public repo," what to prioritize). It &lt;em&gt;removed the friction&lt;/em&gt; that kept this idea in my backlog for years. That's the part that felt new.&lt;/p&gt;

&lt;h2&gt;
  
  
  Roadmap
&lt;/h2&gt;

&lt;p&gt;It's early (v1.1.0) and open source — contributions welcome. On the list: a duplicate-file finder, &lt;code&gt;sweeft doctor&lt;/code&gt;, shell completions, a cleanup history/undo, and code signing to keep antivirus engines happy with the unsigned native binary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it — and make it yours
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/jeffaristi92/Sweeft" rel="noopener noreferrer"&gt;github.com/jeffaristi92/Sweeft&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I built this out of a real need, out of curiosity about what these tools can do, and to put something useful in the community's hands. So: &lt;strong&gt;use it, fork it, change whatever you want, open issues and PRs.&lt;/strong&gt; If it frees up a few gigabytes for you, a ⭐ on the repo would genuinely make my day.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What's the biggest space hog hiding on your dev machine? Run &lt;code&gt;sweeft --global&lt;/code&gt; and tell me in the comments 👇&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cli</category>
      <category>github</category>
      <category>opensource</category>
      <category>tools</category>
    </item>
    <item>
      <title>Take care of the quality of your software and do not fail in the attempt: Part 2</title>
      <dc:creator>Yeferson Guarin</dc:creator>
      <pubDate>Wed, 13 Jan 2021 22:55:40 +0000</pubDate>
      <link>https://dev.to/jeffaristi92/take-care-of-the-quality-of-your-software-and-do-not-fail-in-the-attempt-part-2-1b5f</link>
      <guid>https://dev.to/jeffaristi92/take-care-of-the-quality-of-your-software-and-do-not-fail-in-the-attempt-part-2-1b5f</guid>
      <description>&lt;p&gt;In the last post I told you about the quality criteria to take into account for the project development. Today, I will continue to tell you about this so you can be a more professional developer. Before continuing, I remind you of the six quality attributes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Functionality&lt;/li&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;li&gt;Usability&lt;/li&gt;
&lt;li&gt;Efficiency&lt;/li&gt;
&lt;li&gt;Maintainability&lt;/li&gt;
&lt;li&gt;Portability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this post I am going to tell you about the last three.&lt;/p&gt;

&lt;p&gt;Efficiency is the ability of the software to respond to a user request with the appropriate speed. You may think that I mean "the application responds fast", but this would be ambiguous, since how can you determine what is fast and what is not? At this point you must take into account what is an adequate response time for your user, as well as take into account the norms or standards that exist about this. You as a developer can help the software have adequate response times by correctly managing hardware resources, using good development practices, such as using efficient ordering methods or long-proven industry libraries.&lt;/p&gt;

&lt;p&gt;Maintainability is the ability of the software for the user to invest minimal effort to maintain or improve it. Perhaps this attribute you understand better with examples. Suppose that in your work you were assigned a new requirement for an application that was developed by a person who no longer works for the company. The first thing you are going to do is check the code to try to understand it, if the code is easily understood by you or by another of your colleagues, we could say that the software is maintainable, but this is not enough. Now, suppose that you are going to start making the request, but you find that to do it, you have to change many things and that when you move something, the application begins to present unexpected effects, in this case we would see that the application cannot be " easily modified "and it is" not very stable ", so in this case we could say that the application is not very maintainable. Finally, suppose that you have finished the adjustments that you requested in the requirements, now you must do the corresponding tests to validate that the change you made has been correct, if the application is modular, doing these tests will probably be easy, in this case we could say the software is maintainable. In general, to determine if software is maintainable, we must ask ourselves how understandable, changeable, stable, and testable it is.&lt;/p&gt;

&lt;p&gt;Ultimately, portability is the ability of software to be transferred from one environment to another and function in it. This means that the software can be installed / executed in different environments, for example that it can run on Windows, Linux or IOS, if it is a web application, that can be viewed in different browsers, or if it is a mobile application, that it can be installed on Android or IOS. It also refers to the ease of installation, preferably having an assistant to perform the installation and in each step it is clear to the user what he is doing, always avoiding that he makes decisions that affect the environment where it is executed and does not generate conflicts with other system. Portability also refers to the ability that the software can have to be used instead of another product, for the same purpose, in the same environment, for example, a mailing API that can replace another API that does the same. same.&lt;/p&gt;

&lt;p&gt;It is important to clarify that the software does not necessarily have to comply with 100% of these attributes, it all depends on the requirements, needs and even the budget of the client, but if it is important that when you make the software, you have all this in mind, think in the impact it will have in the future, since the conditions and needs of the environment and your client may change&lt;/p&gt;

&lt;p&gt;You can read the first part &lt;a href="https://dev.to/jeffaristi92/take-care-of-the-quality-of-your-software-and-do-not-fail-in-the-attempt-4eed"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Take care of the quality of your software and do not fail in the attempt: Part 1</title>
      <dc:creator>Yeferson Guarin</dc:creator>
      <pubDate>Tue, 15 Dec 2020 05:46:50 +0000</pubDate>
      <link>https://dev.to/jeffaristi92/take-care-of-the-quality-of-your-software-and-do-not-fail-in-the-attempt-4eed</link>
      <guid>https://dev.to/jeffaristi92/take-care-of-the-quality-of-your-software-and-do-not-fail-in-the-attempt-4eed</guid>
      <description>&lt;p&gt;Today you listen, you read, you see many talking about this, they give you hundreds of tips, recommendations of what you should and should not do, but do you really know how to evaluate if your code is of quality or not? I am going to tell you what are the criteria that you must take into account, regardless of what language or tool you are using, since these are part of an international standard. Software, like any product, has quality attributes that can be objectively measured to determine whether it is a good product or not. There are six quality attributes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;functionality&lt;/li&gt;
&lt;li&gt;Reliability&lt;/li&gt;
&lt;li&gt;Usability&lt;/li&gt;
&lt;li&gt;Efficiency&lt;/li&gt;
&lt;li&gt;Maintainability&lt;/li&gt;
&lt;li&gt;Portability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this post I'm going to talk to you about the first three, all so you don't get bored (Yes, I know, I'm the best) and in the next post I'll talk about the remaining three.&lt;/p&gt;

&lt;p&gt;The first three quality attributes are related and very end-user oriented. The functionality attribute is very simple, this attribute refers to the ability of the software to do the tasks for which it was created, nothing more, nothing less, something that seems trivial, but that many times developers because they are "too creative" not We comply, maybe the user wanted a calculator that would add two numbers but we make a calculator that obtains the square root, divides, makes derivatives but does not add or does not do it well, believe me, the user first needs you to do what he wanted you do, the rest is addition. That can generate value if you first comply with the fundamentals.&lt;/p&gt;

&lt;p&gt;Reliability is the ability of the software to maintain its operation under normal conditions, that is, that the software works continuously and controls common errors, such as validating that only numerical data types are entered when you try to do a sum in the calculator or avoid doing divisions by zero, or at least show an error message when something unexpected happens, the important thing is that the user understands that something happened and has the possibility to continue using the software if possible or notify the error, write it in a log file and make a secure close&lt;/p&gt;

&lt;p&gt;Finally, usability is the ability of the software to make the user invest the least possible effort in its use, for example, that the user does not require many clicks to be able to navigate to an application option, that the application is intuitive and easy to understand the purpose of a functionality. This may seem a bit subjective to you, but there are certain rules that give you guidelines to comply with this, but the most important thing is to do tests with your users, to be able to receive feedback from them, because each group has its peculiarities and culture has an important influence&lt;/p&gt;

&lt;p&gt;As you can see, validating the quality of your software is not something from the other world, it is something that you can measure and evaluate and taking it into account will have a positive impact on the end user, which you can make very happy and you can even make your user enjoy product.&lt;/p&gt;

&lt;p&gt;You can read the second part &lt;a href="https://dev.to/jeffaristi92/take-care-of-the-quality-of-your-software-and-do-not-fail-in-the-attempt-part-2-1b5f"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>software</category>
      <category>developer</category>
      <category>goodpractices</category>
    </item>
    <item>
      <title>Something you should know if you want to be a better developer</title>
      <dc:creator>Yeferson Guarin</dc:creator>
      <pubDate>Tue, 01 Dec 2020 00:23:37 +0000</pubDate>
      <link>https://dev.to/jeffaristi92/something-you-should-know-if-you-want-to-be-a-better-developer-3kmo</link>
      <guid>https://dev.to/jeffaristi92/something-you-should-know-if-you-want-to-be-a-better-developer-3kmo</guid>
      <description>&lt;p&gt;Hello friend, I hope everything is going well for you. Today I want to talk to you about a very important topic that you may have overlooked because the day-to-day eagerness did not give you the space to pause and reflect on it, but don't worry, it is something that almost all developers have past, but you learn from mistakes and I can help you to make them as little as possible. What I'm talking about is the SOLID principles, 5 principles that every good developer should know and apply in their day-to-day work. I will quickly explain what they consist of. The SOLID principles are a set of principles that guide us to apply good practices in the developments we make, seeking that our products have a very high quality (I will tell you about these quality criteria later)&lt;/p&gt;

&lt;p&gt;Each of the initials of these principles has a meaning. The 'S' refers to "Single Responsibility Principle", that is, to make our developments in a modular way, where each module, function, library, component, as you want to call it, should only have one responsibility since with this we could understand more quickly makes our code and modify it without generating side effects, or replace it with another more efficient implementation.&lt;/p&gt;

&lt;p&gt;The second principle, the 'O', refers to Open / Closed, this principle tells us that when we make a component of our development, it should be open to be extended, but closed to be modified (speaking of its inputs and outputs) , since with this we will guarantee that in the future our code continues to be compatible.&lt;/p&gt;

&lt;p&gt;The third principle, the 'L' refers to the 'Liskov Substitution Principle', this may scare you or sound very bombastic, but this principle simply tells us that classes that inherit from other classes should be able to be replaced by their base classes without alter the correct operation of the software, this allows us to create different implementations of a functionality and to test them without having to modify the code.&lt;/p&gt;

&lt;p&gt;The fourth principle, the 'I' refers to 'Interface Segregation Principle' another name that may scare us a bit, but in practice it is easy to understand, this principle tells us that we should make small and concrete interfaces, this In order not to force our components to implement functionalities that have nothing to do with their nature, it would be preferable that our class implements several small interfaces.&lt;/p&gt;

&lt;p&gt;Finally, the fifth principle, the 'D' refers to 'Dependency Inversion Principle', once again, a name that may scare many, but when you understand its philosophy and its power, you will evolve as a developer. This principle tells us that our components should not depend on implementations (classes that implement interfaces or abstract classes), but on their abstractions, this in order to minimize the dependency between components and therefore have a low coupling, which will allow us make our software more extensible, maintainable, bearable among many other benefits.&lt;/p&gt;

&lt;p&gt;As once, these principles are very important in the development world and are widely considered (although there is no shortage of criticism), so much so that it is almost a requirement that every experienced developer handle them and have the criteria of how and when to apply them, as well. I invite you to continue delving into this topic, which is sure to hook you.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>bestpractices</category>
      <category>developer</category>
      <category>solid</category>
    </item>
  </channel>
</rss>
