<?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: Rufat Khaslarov</title>
    <description>The latest articles on DEV Community by Rufat Khaslarov (@rkhaslarov).</description>
    <link>https://dev.to/rkhaslarov</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%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg</url>
      <title>DEV Community: Rufat Khaslarov</title>
      <link>https://dev.to/rkhaslarov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rkhaslarov"/>
    <language>en</language>
    <item>
      <title>Learn How To Run Meetings as a Professional</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Sun, 06 Jul 2025 10:55:19 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/learn-how-to-run-meetings-as-a-professional-4g4d</link>
      <guid>https://dev.to/rkhaslarov/learn-how-to-run-meetings-as-a-professional-4g4d</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rkhaslarov/run-meetings-efficiently-with-the-grow-model-lfp" class="crayons-story__hidden-navigation-link"&gt;Run Meetings Efficiently with the GROW model&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rkhaslarov" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rkhaslarov" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Rufat Khaslarov
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Rufat Khaslarov
                
              
              &lt;div id="story-author-preview-content-2660581" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rkhaslarov" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Rufat Khaslarov&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rkhaslarov/run-meetings-efficiently-with-the-grow-model-lfp" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 6 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rkhaslarov/run-meetings-efficiently-with-the-grow-model-lfp" id="article-link-2660581"&gt;
          Run Meetings Efficiently with the GROW model
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/management"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;management&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/leadership"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;leadership&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/community"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;community&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/rkhaslarov/run-meetings-efficiently-with-the-grow-model-lfp#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>management</category>
      <category>leadership</category>
      <category>productivity</category>
      <category>community</category>
    </item>
    <item>
      <title>Run Meetings Efficiently with the GROW model</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Sun, 06 Jul 2025 10:54:53 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/run-meetings-efficiently-with-the-grow-model-lfp</link>
      <guid>https://dev.to/rkhaslarov/run-meetings-efficiently-with-the-grow-model-lfp</guid>
      <description>&lt;p&gt;Typically, as engineering managers, we spend at least a half of a day on various meetings. It might be one-to-one meetings, project status, escalation or meetings with stakeholders. Therefore, better off being well-prepared, since without the specified structure, any meeting is worthless.&lt;/p&gt;

&lt;p&gt;I don’t intend to describe the lifehacks, tips for efficient meetings, like setting up an agenda, sending out invites, and things like that. I want you to understand the structure of meetings, including the questions to be addressed and the expected outcomes.&lt;/p&gt;

&lt;p&gt;The GROW model is widely spread in the business world because it is unquestionably not rocket science; it’s straightforward, based on logical principles that managers apply on a daily basis.&lt;/p&gt;

&lt;p&gt;Let’s roll and see how GROW principles work in a 1–1 meeting with your teammates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Goal.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;There’s nothing better than achieving your goals, whatever they might be.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At the beginning, all attendees should define meeting goals. There’s a fine line here: ALL attendees should be proactive at this point, since if each of them (at least, some of them) suggests goals, they will take responsibility for realization. Moreover, being on the same page from the start will save your time from unnecessary conflicts/resistance later on.&lt;/p&gt;

&lt;p&gt;Getting back to our case. Usually, in 1–1 meetings, people do not know where to start. The meeting is merely scheduled in the calendar, and OMG, you have to cope with it.&lt;/p&gt;

&lt;p&gt;First off, try to find common ground with your teammate; set up what your team member wants to carry out at the beginning of a meeting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What problems do they have?&lt;/li&gt;
&lt;li&gt;What are their plans for the next quarter?&lt;/li&gt;
&lt;li&gt;What questions do they have in mind?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gather as much information as possible, and then put it all together and define goals. For instance, an employee asked to be compensated for their professional education. So, now the goal is found.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reality.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Reality is frequently inaccurate.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To figure out where to go, you should know where you are. Again, all attendees should clearly understand the current state, resources, limitations, useful contacts, and anything that might help to achieve goals faster than ever.&lt;/p&gt;

&lt;p&gt;As a manager, you should listen carefully to each teammate and stop unnecessary discussions.&lt;/p&gt;

&lt;p&gt;In our scenario, you should definitely explain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How does the compensation process work?&lt;/li&gt;
&lt;li&gt;What financial/time limitation does it have?&lt;/li&gt;
&lt;li&gt;What artifacts do you need from the teammate's side?&lt;/li&gt;
&lt;li&gt;Who is in charge of it?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Options.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;I may be running out of options, but running out isn’t an option.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At this moment, we collectively know what to solve and what the current state is. So, we’re really craving for the ways HOW to deal with it (aka “options”).&lt;/p&gt;

&lt;p&gt;That’s the brainstorming phase, when attendees try to generate as many options as possible to achieve goals. A manager moderates the focus of discussions without unhealthy criticism.&lt;/p&gt;

&lt;p&gt;After you explain the compensation details, you should generate options together with a teammate. For instance, since there's a financial limitation, you could suggest paying off half of a course price or explain how internal education in a company works; probably, they’d have a course inside.&lt;/p&gt;

&lt;h2&gt;
  
  
  Will.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Your will shall decide your destiny.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s time to decide and act. At this stage, attendees choose options that are suitable for the current goals. Options that would help to achieve them with minimal effort and maximum efficiency.&lt;/p&gt;

&lt;p&gt;Each attendee takes responsibility for a concrete action item. At the same time, you as a host should give priorities, deadlines, and other details.&lt;/p&gt;

&lt;p&gt;Next actions for our scenario. A teammate has to give you the invoice from a course that is the proof for the accounting department. After that, you have to send an official email with the attached invoice and confirmation from your side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion.
&lt;/h2&gt;

&lt;p&gt;There’s nothing better than structure and conscious attention. We’ve just looked at GROW principles, the instrument that should be in your tool belt of an amazing engineering manager.&lt;/p&gt;

&lt;p&gt;And never forget, the principles make sure that nothing prevents a team from reaching its goals, and you, as a manager, should lead them in that way.&lt;/p&gt;

&lt;p&gt;Thanks for reading, and good luck!&lt;/p&gt;

</description>
      <category>management</category>
      <category>leadership</category>
      <category>productivity</category>
      <category>community</category>
    </item>
    <item>
      <title>If you missed it, use-case of using Knip.</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Fri, 04 Jul 2025 09:35:26 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/if-you-missed-it-use-case-of-using-knip-3iag</link>
      <guid>https://dev.to/rkhaslarov/if-you-missed-it-use-case-of-using-knip-3iag</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-story__hidden-navigation-link"&gt;How I Cleaned Up Our Codebase With Knip, And Why You Should Too&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rkhaslarov" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rkhaslarov" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Rufat Khaslarov
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Rufat Khaslarov
                
              
              &lt;div id="story-author-preview-content-2635652" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rkhaslarov" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Rufat Khaslarov&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 29 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" id="article-link-2635652"&gt;
          How I Cleaned Up Our Codebase With Knip, And Why You Should Too
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;9&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              4&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>Utilizing Knip to remove unnecessary dead code</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Sun, 29 Jun 2025 12:13:18 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/-5dbl</link>
      <guid>https://dev.to/rkhaslarov/-5dbl</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-story__hidden-navigation-link"&gt;How I Cleaned Up Our Codebase With Knip, And Why You Should Too&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rkhaslarov" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rkhaslarov" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Rufat Khaslarov
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Rufat Khaslarov
                
              
              &lt;div id="story-author-preview-content-2635652" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rkhaslarov" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Rufat Khaslarov&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 29 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" id="article-link-2635652"&gt;
          How I Cleaned Up Our Codebase With Knip, And Why You Should Too
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;9&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              4&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>Say goodbye to dead code with Knip! My journey...</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Sun, 29 Jun 2025 11:14:10 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/say-goodbye-to-dead-code-with-knip-my-journey-4e1f</link>
      <guid>https://dev.to/rkhaslarov/say-goodbye-to-dead-code-with-knip-my-journey-4e1f</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-story__hidden-navigation-link"&gt;How I Cleaned Up Our Codebase With Knip, And Why You Should Too&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rkhaslarov" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rkhaslarov" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Rufat Khaslarov
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Rufat Khaslarov
                
              
              &lt;div id="story-author-preview-content-2635652" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rkhaslarov" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Rufat Khaslarov&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 29 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" id="article-link-2635652"&gt;
          How I Cleaned Up Our Codebase With Knip, And Why You Should Too
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;9&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              4&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>How I Cleaned Up Our Codebase With Knip, And Why You Should Too</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Sun, 29 Jun 2025 11:12:47 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg</link>
      <guid>https://dev.to/rkhaslarov/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-41mg</guid>
      <description>&lt;p&gt;At some point, every fast-growing codebase becomes messy.&lt;/p&gt;

&lt;p&gt;In our case, things changed quickly. Features were evolving, old logic was being refactored or replaced, and more than 30 engineers were pushing new code daily. It didn’t take long before we realized: &lt;strong&gt;we were sitting on a mountain of dead code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For sure, during the refactoring we cleaned up a bunch of code, but not every line can be found by a human. In outcome, I decided to clean it up automatically.&lt;/p&gt;

&lt;p&gt;Step One: The Easy Wins&lt;br&gt;
My first instinct was to start with the low-hanging fruit aka unused files. A couple of years back, I integrated unimported, a sweet little tool that analyzes your project and tells you what files aren’t being imported anywhere.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"entry"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"./src/index.ts"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rootDir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./src"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"aliases"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"atoms/*"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"./atoms/*"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ignorePatterns"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"**/node_modules/**"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ignoreUnimported"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"src/file-to-be-ignored.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"ignoreUnused"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"npm-package-to-ignore"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s fast, customizable, and worked like a spell.&lt;/p&gt;

&lt;p&gt;Additionally, we heavily used WebStorm; its dead code highlighting is honestly the best I’ve ever seen in an IDE. But then came the Cursor era.&lt;/p&gt;

&lt;p&gt;We started migrating to Cursor (based on VS Code), and suddenly our best tool in the war against unused code was gone. As much as I love VS Code’s extensibility, its native dead code detection just did not work out for us.&lt;/p&gt;

&lt;p&gt;Also, turning on the eslint rules ahead of time turned out to be helpful. @typescript-eslint/no-unused-vars and no-unreachable saved us from keeping disorder that would otherwise go unnoticed. &lt;strong&gt;Static analysis is our first line of defense against dead code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, I went hunting for options.&lt;/p&gt;

&lt;h2&gt;
  
  
  When ts-prune Wasn’t Enough
&lt;/h2&gt;

&lt;p&gt;I revisited ts-prune, an old favorite that identifies unused exports and code in TS projects. While it still works well, it’s officially in maintenance mode and I’m not a fan of building tooling workflows around deprecated packages.&lt;/p&gt;

&lt;p&gt;That’s when I fell on something better: Knip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet Knip: The Dead Code Terminator
&lt;/h2&gt;

&lt;p&gt;Knip didn’t just impress me, it blew me away.&lt;/p&gt;

&lt;p&gt;It’s more than a dead code detector. Knip is a comprehensive code hygiene tool with support for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unused files and exports;&lt;/li&gt;
&lt;li&gt;Unnecessary dependencies;&lt;/li&gt;
&lt;li&gt;Missing dependencies;&lt;/li&gt;
&lt;li&gt;Monorepos and workspaces support;&lt;/li&gt;
&lt;li&gt;Unused class members, enum members, duplicate exports and so on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What truly makes Knip powerful is its plugin-based architecture. It understands a wide variety of frameworks, libraries, test runners, and build tools out of the box. So instead of spending hours writing a config file, you can usually just run it and get instant insights.&lt;/p&gt;

&lt;p&gt;Here’s the configuration sample:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"$schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://unpkg.com/knip@5/schema.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"project"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"src/**/*.{js,cjs,mjs,jsx,ts,cts,mts,tsx}!"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"entry"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"src/index.ts"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;TS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;plugin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;enabled&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ignore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"src/file-to-be-ignored.js"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"exports"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"files"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"unlisted"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"warn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"off"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"types"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"binaries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"off"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"enumMembers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"warn"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tags"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-knipignore"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After integrating Knip and hitting zero dead code (removed around 3.5k lines of code at once), I immediately added it to our CI pipeline. I was really impressed by how fast it is. Even with our huge code base, it only takes a few seconds to run through all the rules and checks with Knip.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why You Should Care
&lt;/h2&gt;

&lt;p&gt;If you’re wondering why any of this matters, here’s the TL;DR:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dead code slows you down.&lt;/strong&gt; Every unused file, dependency, or export increases your build time, and makes onboarding harder.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dead dependencies are a liability.&lt;/strong&gt; If you’re importing code from a dependency of a dependency, and you’re not declaring it directly, your code might break without warning when transitive dependencies change.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cleaner code means fewer bugs.&lt;/strong&gt; And fewer bugs mean happier developers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Psyhological satisfaction.&lt;/strong&gt; Deleting code is just so amazing! 😋&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Now Knip runs with every pull request and protects our codebase from regressing into spaghetti.&lt;/p&gt;

&lt;p&gt;If your project is more than a few months old, you’ve probably got a few things hanging around that you just don’t need anymore, right?&lt;/p&gt;

&lt;p&gt;Knip won’t just help you clean it up, it’ll keep it that way, it’s a process already.&lt;/p&gt;

&lt;p&gt;Give it a shot. Thanks for reading.&lt;/p&gt;

&lt;p&gt;Support Original Article: &lt;a href="https://medium.com/javascript-in-plain-english/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-1aa9d5152659" rel="noopener noreferrer"&gt;https://medium.com/javascript-in-plain-english/how-i-cleaned-up-our-codebase-with-knip-and-why-you-should-too-1aa9d5152659&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>Quality often becomes the last thing on our minds, both for individuals and companies, even though we swear to value it. And here it is why?</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Sun, 11 May 2025 17:35:28 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/quality-often-becomes-the-last-thing-on-our-minds-both-for-individuals-and-companies-even-though-5fo4</link>
      <guid>https://dev.to/rkhaslarov/quality-often-becomes-the-last-thing-on-our-minds-both-for-individuals-and-companies-even-though-5fo4</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-story__hidden-navigation-link"&gt;Next time you think quality is optional — STOP, and read this before it’s too late!&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rkhaslarov" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rkhaslarov" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Rufat Khaslarov
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Rufat Khaslarov
                
              
              &lt;div id="story-author-preview-content-2471574" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rkhaslarov" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Rufat Khaslarov&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 9 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" id="article-link-2471574"&gt;
          Next time you think quality is optional — STOP, and read this before it’s too late!
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/startup"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;startup&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/testing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;testing&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>programming</category>
      <category>startup</category>
      <category>architecture</category>
      <category>testing</category>
    </item>
    <item>
      <title>Quality often becomes the last thing on our minds, both for individuals and companies, even though we swear to value it. Why?</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Sat, 10 May 2025 13:42:46 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/quality-often-becomes-the-last-thing-on-our-minds-both-for-individuals-and-companies-even-though-4f9</link>
      <guid>https://dev.to/rkhaslarov/quality-often-becomes-the-last-thing-on-our-minds-both-for-individuals-and-companies-even-though-4f9</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-story__hidden-navigation-link"&gt;Next time you think quality is optional — STOP, and read this before it’s too late!&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rkhaslarov" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rkhaslarov" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Rufat Khaslarov
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Rufat Khaslarov
                
              
              &lt;div id="story-author-preview-content-2471574" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rkhaslarov" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Rufat Khaslarov&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 9 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" id="article-link-2471574"&gt;
          Next time you think quality is optional — STOP, and read this before it’s too late!
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/startup"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;startup&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/testing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;testing&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>programming</category>
      <category>startup</category>
      <category>architecture</category>
      <category>testing</category>
    </item>
    <item>
      <title>Quality often becomes the last thing on our minds, both for individuals and companies, even though we swear to value it. Why? Let's explore it together!</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Fri, 09 May 2025 13:55:54 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/quality-often-becomes-the-last-thing-on-our-minds-both-for-individuals-and-companies-even-though-2m4b</link>
      <guid>https://dev.to/rkhaslarov/quality-often-becomes-the-last-thing-on-our-minds-both-for-individuals-and-companies-even-though-2m4b</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-story__hidden-navigation-link"&gt;Next time you think quality is optional — STOP, and read this before it’s too late!&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rkhaslarov" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rkhaslarov" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Rufat Khaslarov
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Rufat Khaslarov
                
              
              &lt;div id="story-author-preview-content-2471574" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rkhaslarov" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Rufat Khaslarov&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 9 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" id="article-link-2471574"&gt;
          Next time you think quality is optional — STOP, and read this before it’s too late!
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/startup"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;startup&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/architecture"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;architecture&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/testing"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;testing&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>discuss</category>
      <category>productivity</category>
      <category>career</category>
      <category>codequality</category>
    </item>
    <item>
      <title>Next time you think quality is optional — STOP, and read this before it’s too late!</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Fri, 09 May 2025 13:55:26 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51</link>
      <guid>https://dev.to/rkhaslarov/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-2i51</guid>
      <description>&lt;p&gt;Quality often becomes the last thing on our minds, both for individuals and companies, even though we swear to value it. Why? Because quality can feel dull, complex, and time-consuming.&lt;/p&gt;

&lt;p&gt;As software engineers, we really enjoy building new features and cleaning up our code, but honestly, not many of us can get happy about writing tests or dealing with bugs. And even having powerful AI tools in our toolbelt, we still tend to skip the tiresome parts.&lt;/p&gt;

&lt;p&gt;Over and over again, I’ve seen engineers rejecting bugs because they seemed “non-critical” or because the original reporter went off, so the issue obviously “fixed itself,” right? We ignore coverage metrics and carry on, hoping nobody notices. And often, it takes someone from the top or an external powerful enforcer to set up standards and make us do the right thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Does “Quality” Really Mean?
&lt;/h2&gt;

&lt;p&gt;But what exactly is “quality,” and why do we struggle to agree on it? The truth is that each of us sees quality through our own lens, and in many contexts, we can all be “right.”&lt;/p&gt;

&lt;p&gt;Let’s take a look at some historical examples to see just how different things can be!&lt;/p&gt;

&lt;h3&gt;
  
  
  RAF Aerial Bomb Quality Control.
&lt;/h3&gt;

&lt;p&gt;When WWII is started, Britain’s bombs were pretty unreliable, with about 40% of them failing to go off. It was mainly because of some faulty fuses and issues with how they were made.&lt;/p&gt;

&lt;p&gt;By 1943, they used some pretty clever tools for putting together fuses, like precision jigs, and they got smart with testing too, using statistical sampling and test drops.&lt;/p&gt;

&lt;p&gt;They also had these go/no-go gauges and did daily checks on the production line. All this helped cut down the fail rates to under 10%, which really improved the reliability of the bombs.&lt;/p&gt;

&lt;h3&gt;
  
  
  NASA and FMEA.
&lt;/h3&gt;

&lt;p&gt;On January 27, 1967, a fire in the Apollo 1 cabin during a ground test tragically took the lives of all three astronauts. After looking into what went wrong, investigators found a ton of potential issues with the electrical wiring, materials, and procedures.&lt;/p&gt;

&lt;p&gt;NASA implemented Failure Mode and Effects Analysis (FMEA) and increased inspections of their suppliers for all components, including life-support hoses and circuit breakers. They listed potential failures, rated their severity and likelihood, and then adjusted the designs or procedures to address the issues. Does it look like bug tracking?&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%2Frv2l64gjtjrudutnzkdu.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%2Frv2l64gjtjrudutnzkdu.png" alt="Image With The Person Who Ignores Issues" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Quality as a Mindset
&lt;/h2&gt;

&lt;p&gt;From these stories, it’s clear that quality isn’t just bug fixes, writing tests, or doing code reviews. Quality measures how well our product meets and exceeds, our customers’ expectations. But how can a single engineer in a development team truly understand those expectations?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“If I were given one hour to save the planet, I would spend 59 minutes defining the problem…” — Albert Einstein&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Imagine a small healthcare startup whose mission is to automate life-saving prescriptions for heart-attack patients. In their rush to deploy new features, a bug sneaks into production. Suddenly, dozens of patients receive incorrect prescriptions, severely affecting their health and safety. Isn’t that as catastrophic as a bomb explosion on the factory line?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Quality isn’t simple — it’s a mindset. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s all about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Getting to know our users and what they really need;&lt;/li&gt;
&lt;li&gt;Taking responsibility for the real-world impact of our software.&lt;/li&gt;
&lt;li&gt;When we move from “just ship it” to “ship it right,” we make quality a priority instead of an afterthought.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Everyone’s Responsibility
&lt;/h2&gt;

&lt;p&gt;By shifting quality left, we move all quality-related activities into the earliest stages of the software delivery lifecycle. As a mantra, we should do everything necessary to meet the customer expectations that truly matter. From the very first idea to the moment code reaches production, multiple teams and individuals share responsibility here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product managers ensure if we’re solving the right problem.&lt;/li&gt;
&lt;li&gt;UX designers make the solution intuitive and accessible.&lt;/li&gt;
&lt;li&gt;Engineers implement changes thoughtfully, write tests, raise concerns, and avoid blindly following orders.&lt;/li&gt;
&lt;li&gt;Support teams step in whenever a defect slips through, helping our users and restoring their confidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s a long journey from concept to deployment, and every role plays a critical part — because quality is everyone’s business. This approach can be summed up as prevention over detection.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Last Shout-out!
&lt;/h2&gt;

&lt;p&gt;Finally, a shout-out to your QA engineers — they’re not there just to slow down your delivery 😉. They should focus on solving problems every day rather than going throigh the morning task list.&lt;/p&gt;

&lt;p&gt;True quality engineers design and implement quality controls, conduct audits, measures the costs tied to quality (both the wins and the risks), capture the data needed for smart decisions.&lt;/p&gt;

&lt;p&gt;Give them the freedom, they will give your product the future.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;Original post: &lt;a href="https://rufat-khaslarov.medium.com/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-cca7beed8bc7" rel="noopener noreferrer"&gt;https://rufat-khaslarov.medium.com/next-time-you-think-quality-is-optional-stop-and-read-this-before-its-too-late-cca7beed8bc7&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;
  ❤️ If you enjoyed this post, you can buy me a coffee: 
  &lt;a href="https://buymeacoffee.com/rkhaslarov" rel="noopener noreferrer"&gt;☕️ Buy me a coffee&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>programming</category>
      <category>startup</category>
      <category>architecture</category>
      <category>testing</category>
    </item>
    <item>
      <title>I've been thinking a bit about my dream team, and I’d love to hear your thoughts too! What makes team successful?</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Sun, 04 May 2025 04:51:30 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/ive-been-thinking-a-bit-about-my-dream-team-and-id-love-to-hear-your-thoughts-too-what-makes-ogp</link>
      <guid>https://dev.to/rkhaslarov/ive-been-thinking-a-bit-about-my-dream-team-and-id-love-to-hear-your-thoughts-too-what-makes-ogp</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/rkhaslarov/the-four-pillars-of-a-dream-team-1f5h" class="crayons-story__hidden-navigation-link"&gt;The Four Pillars of a Dream Team&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/rkhaslarov" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/rkhaslarov" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Rufat Khaslarov
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Rufat Khaslarov
                
              
              &lt;div id="story-author-preview-content-2438222" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/rkhaslarov" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Rufat Khaslarov&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/rkhaslarov/the-four-pillars-of-a-dream-team-1f5h" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 27 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/rkhaslarov/the-four-pillars-of-a-dream-team-1f5h" id="article-link-2438222"&gt;
          The Four Pillars of a Dream Team
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/leadership"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;leadership&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/hiring"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;hiring&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/career"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;career&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/rkhaslarov/the-four-pillars-of-a-dream-team-1f5h" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;8&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/rkhaslarov/the-four-pillars-of-a-dream-team-1f5h#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>programming</category>
      <category>leadership</category>
      <category>hiring</category>
      <category>career</category>
    </item>
    <item>
      <title>Dear community! Updated the article to include the latest report.</title>
      <dc:creator>Rufat Khaslarov</dc:creator>
      <pubDate>Wed, 30 Apr 2025 07:57:05 +0000</pubDate>
      <link>https://dev.to/rkhaslarov/dear-community-updated-the-article-to-include-the-latest-report-4jk7</link>
      <guid>https://dev.to/rkhaslarov/dear-community-updated-the-article-to-include-the-latest-report-4jk7</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/rkhaslarov" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&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%2Fuser%2Fprofile_image%2F248779%2F2fbd3369-8a83-44d9-99b8-b597305fcd7e.jpeg" alt="rkhaslarov"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/rkhaslarov/remote-vs-hybrid-vs-in-office-how-to-decide-4mb0" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Remote vs. Hybrid vs. In-Office: How to Decide?&lt;/h2&gt;
      &lt;h3&gt;Rufat Khaslarov ・ Apr 29&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#leadership&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#management&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#hiring&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>leadership</category>
      <category>management</category>
      <category>hiring</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
