<?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>Forem: kim</title>
    <description>The latest articles on Forem by kim (@amantekim).</description>
    <link>https://forem.com/amantekim</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%2F440717%2F77fff575-2669-431a-88ca-377284e03b08.jpeg</url>
      <title>Forem: kim</title>
      <link>https://forem.com/amantekim</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/amantekim"/>
    <language>en</language>
    <item>
      <title>Clean Code vs Shipping Fast: What Actually Matters?</title>
      <dc:creator>kim</dc:creator>
      <pubDate>Tue, 31 Mar 2026 02:44:33 +0000</pubDate>
      <link>https://forem.com/amantekim/clean-code-vs-shipping-fast-what-actually-matters-3jo1</link>
      <guid>https://forem.com/amantekim/clean-code-vs-shipping-fast-what-actually-matters-3jo1</guid>
      <description>&lt;p&gt;Every developer has faced this at some point.&lt;/p&gt;

&lt;p&gt;Do you take time to write this properly...&lt;br&gt;
or do you just ship it?&lt;/p&gt;

&lt;p&gt;On one side, you have clean code, best practices, nice structure.&lt;br&gt;
On the other, deadlines, pressure, and getting things out the door.&lt;/p&gt;

&lt;p&gt;So what actually matters?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Honest Answer
&lt;/h2&gt;

&lt;p&gt;Both matter.&lt;/p&gt;

&lt;p&gt;But not equally all the time.&lt;/p&gt;

&lt;p&gt;The real skill is knowing when to prioritize clean code and when to just ship.&lt;/p&gt;

&lt;h2&gt;
  
  
  When Shipping Fast Matters More
&lt;/h2&gt;

&lt;p&gt;There are times when speed is the right call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Early-stage features&lt;/li&gt;
&lt;li&gt;MVPs&lt;/li&gt;
&lt;li&gt;Tight deadlines&lt;/li&gt;
&lt;li&gt;Experiments that might get scrapped anyway&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In these cases, over-engineering is a waste.&lt;/p&gt;

&lt;p&gt;Spending hours making something perfect that might be deleted next week is not good engineering.&lt;br&gt;
It is just slow.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the code will not live long, it does not need to be perfect.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  When Clean Code Matters More
&lt;/h2&gt;

&lt;p&gt;Some parts of your system will stick around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Core business logic&lt;/li&gt;
&lt;li&gt;Shared components&lt;/li&gt;
&lt;li&gt;Code other developers will touch often&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where clean code pays off.&lt;/p&gt;

&lt;p&gt;Because messy code here does not just slow you down today.&lt;br&gt;
It slows everyone down tomorrow.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The longer code lives, the cleaner it needs to be.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  This Is Not About Being a "Good" or "Bad" Developer
&lt;/h2&gt;

&lt;p&gt;Choosing speed over cleanliness sometimes does not mean you are careless.&lt;br&gt;
Choosing clean code does not mean you are slow.&lt;/p&gt;

&lt;p&gt;The real issue is not skill.&lt;/p&gt;

&lt;p&gt;It is judgment.&lt;/p&gt;

&lt;p&gt;Even experienced developers get this wrong when they either over-engineer everything or rush everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Better Way to Decide
&lt;/h2&gt;

&lt;p&gt;Instead of asking:&lt;/p&gt;

&lt;p&gt;Should this be clean or fast?&lt;/p&gt;

&lt;p&gt;Ask this instead:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How long will this code live, and who will touch it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That one question will guide most of your decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Rules I Follow
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If I need to explain it in a call, the code is too complex&lt;/li&gt;
&lt;li&gt;If I copy-paste something twice, it is time to refactor&lt;/li&gt;
&lt;li&gt;If it is an experiment, I ship fast and clean later&lt;/li&gt;
&lt;li&gt;If multiple people will touch it, I slow down and make it clear&lt;/li&gt;
&lt;li&gt;If it touches core logic, I do it properly the first time&lt;/li&gt;
&lt;li&gt;I avoid abstractions until I actually feel the pain&lt;/li&gt;
&lt;li&gt;I keep things modular so it is easy to find and update&lt;/li&gt;
&lt;li&gt;If I cannot find something in under 30 seconds, the structure is wrong&lt;/li&gt;
&lt;li&gt;I optimize only when there is a real problem, not a guess&lt;/li&gt;
&lt;li&gt;I write code assuming someone else will debug it at 2AM&lt;/li&gt;
&lt;li&gt;I leave the code slightly better than I found it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You do not need perfect code.&lt;/p&gt;

&lt;p&gt;You need code that fits its purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Middle Ground
&lt;/h2&gt;

&lt;p&gt;Clean code and shipping fast are not enemies.&lt;/p&gt;

&lt;p&gt;Good developers know how to balance both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Move fast when it is safe&lt;/li&gt;
&lt;li&gt;Slow down when it matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is what real-world engineering looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Shipping fast gives you progress.&lt;br&gt;
Clean code keeps that progress from collapsing later.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The goal is not to choose one.&lt;br&gt;
It is to know when each one matters.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Readable Code: Because Your Future Self Hates You</title>
      <dc:creator>kim</dc:creator>
      <pubDate>Sun, 29 Mar 2026 20:43:48 +0000</pubDate>
      <link>https://forem.com/amantekim/readable-code-because-your-future-self-hates-you-4hmg</link>
      <guid>https://forem.com/amantekim/readable-code-because-your-future-self-hates-you-4hmg</guid>
      <description>&lt;p&gt;I used to think “clever code” made me a better developer.&lt;/p&gt;

&lt;p&gt;You know the type: 5 layers of abstraction, every design pattern imaginable, optimizations sprinkled everywhere.&lt;/p&gt;

&lt;p&gt;It looked impressive. Until a new teammate joined and spent half a day just figuring out how to make a tiny change.&lt;/p&gt;

&lt;p&gt;That’s when it hit me:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Readability is the real standard of good code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Real Test of a Codebase&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Forget patterns, frameworks, or architecture debates for a second. Here’s my rule:&lt;/p&gt;

&lt;p&gt;If anyone on your team, new or experienced, can read, understand, and adapt your code within a day, your code is solid.&lt;/p&gt;

&lt;p&gt;Everything else, optimization, abstraction, architectural elegance, still matters. But it should support readability, not replace it. Think of readability as the foundation and the fancy stuff sits on top.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;This Isn’t About New Developers&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A lot of people hear “readable code” and assume it’s a criticism of junior devs. It’s not.&lt;/p&gt;

&lt;p&gt;Even the most skilled developer can waste hours untangling overly abstracted or over-engineered code. Readable code is about writing code that communicates intent clearly, so everyone can move fast and safely.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Think of it as writing a story. The plot, your logic, should be clear. The style, patterns and architecture, can be fancy, but no one should need a decoder ring to figure out what’s happening.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Readability Works&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Readable code makes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Onboarding fast&lt;/li&gt;
&lt;li&gt;Collaboration smoother&lt;/li&gt;
&lt;li&gt;Bug tracking easier&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also doesn’t mean sacrificing good engineering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Optimizations are still important, but they shouldn’t make the code unreadable.&lt;/li&gt;
&lt;li&gt;Abstraction is fine, but if nobody understands why it exists, it’s too abstract.&lt;/li&gt;
&lt;li&gt;Architecture should guide, not confuse.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Readable first, clever second. Layer sophistication where it genuinely adds value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quick Wins for Readable Code&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Names matter.&lt;/strong&gt; calculateTotal() beats calcT() any day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Organize files logically.&lt;/strong&gt; Don’t make someone guess where a component lives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep it simple.&lt;/strong&gt; Don’t over-engineer just to show off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Comments = context, not code.&lt;/strong&gt; Explain why, not what.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Readable commits.&lt;/strong&gt; Your history should tell the story of the project, not confuse it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;My Personal Rule&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Whenever I onboard someone new, I give them a small task.&lt;/p&gt;

&lt;p&gt;If they can complete it without me explaining every step, the code passes my readability test.&lt;/p&gt;

&lt;p&gt;If not, it’s a signal it’s time to rethink clarity.&lt;/p&gt;

&lt;p&gt;Readable code doesn’t mean dumb code.&lt;/p&gt;

&lt;p&gt;It means code that anyone can understand, adapt, and maintain, while still being optimized, abstracted, and architecturally elegant.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Software isn’t about showing off cleverness. It’s about solving problems together.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>programming</category>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>cleancode</category>
    </item>
  </channel>
</rss>
