<?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: Saleh Rezaei</title>
    <description>The latest articles on Forem by Saleh Rezaei (@sully8665).</description>
    <link>https://forem.com/sully8665</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%2F129284%2F591bcae3-b5bb-48c6-bbb2-674e9bb105f7.jpeg</url>
      <title>Forem: Saleh Rezaei</title>
      <link>https://forem.com/sully8665</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sully8665"/>
    <language>en</language>
    <item>
      <title>The Power of Saying No in Software Development</title>
      <dc:creator>Saleh Rezaei</dc:creator>
      <pubDate>Fri, 17 Oct 2025 12:31:08 +0000</pubDate>
      <link>https://forem.com/sully8665/the-power-of-saying-no-in-software-development-207l</link>
      <guid>https://forem.com/sully8665/the-power-of-saying-no-in-software-development-207l</guid>
      <description>&lt;p&gt;Most developers learn early on that technical skill matters — but as you grow, you realize something even more powerful:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The real skill is knowing when to say &lt;strong&gt;no&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Saying &lt;em&gt;no&lt;/em&gt; is not negativity. It’s protection.&lt;br&gt;&lt;br&gt;
It protects your focus, your codebase, and your sanity.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚧 Why We Say Yes Too Often
&lt;/h2&gt;

&lt;p&gt;Developers love solving problems — it’s in our nature.&lt;br&gt;&lt;br&gt;
But that instinct often leads to unnecessary complexity when we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add features no one really asked for, “just in case.”
&lt;/li&gt;
&lt;li&gt;Agree to unrealistic deadlines.
&lt;/li&gt;
&lt;li&gt;Over-engineer solutions to impress others.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each “yes” sounds small in isolation, but together they create &lt;strong&gt;technical debt and burnout.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 Saying No Is a Strategic Decision
&lt;/h2&gt;

&lt;p&gt;When you say “no,” you’re not rejecting the idea — you’re defending clarity and purpose.&lt;/p&gt;

&lt;p&gt;Good engineers think about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Long-term cost&lt;/strong&gt;, not short-term gain.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User value&lt;/strong&gt;, not internal politics.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sustainability&lt;/strong&gt;, not speed.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Every time you say “yes,” you’re also saying “no” to something else — usually time, quality, or focus.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  💬 How to Say No (Without Sounding Difficult)
&lt;/h2&gt;

&lt;p&gt;Saying no gracefully is an art. Here are some ways that work in real teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;“That’s a great idea — but let’s validate it with real user feedback first.”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;“If we add this now, it might delay fixing X. Which is higher priority?”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;“This sounds useful, but could we start smaller and iterate later?”&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’re not rejecting — you’re &lt;em&gt;redirecting&lt;/em&gt; the conversation toward impact and trade-offs.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Senior Developers Know Their Limits
&lt;/h2&gt;

&lt;p&gt;Junior developers think productivity means &lt;strong&gt;doing more.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Senior developers know productivity means &lt;strong&gt;doing the right things.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you start saying no to the wrong work, you unlock time for the right one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refactoring that messy module.
&lt;/li&gt;
&lt;li&gt;Writing better tests.
&lt;/li&gt;
&lt;li&gt;Improving performance.
&lt;/li&gt;
&lt;li&gt;Mentoring teammates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s how real impact happens.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏁 Closing Thought
&lt;/h2&gt;

&lt;p&gt;Saying “no” isn’t an act of rebellion.&lt;br&gt;&lt;br&gt;
It’s a sign that you understand the cost of complexity, and you care enough to protect your craft.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Great software isn’t built by those who do everything —&lt;br&gt;&lt;br&gt;
it’s built by those who do the &lt;em&gt;right&lt;/em&gt; things, at the &lt;em&gt;right&lt;/em&gt; time.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;If you liked this post, check out my previous one: &lt;a href="https://dev.to/sully8665/why-simplicity-wins-in-software-design-129p"&gt;Why Simplicity Wins in Software Design&lt;/a&gt;&lt;/em&gt;  &lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>mindset</category>
      <category>seniordeveloper</category>
    </item>
    <item>
      <title>Why Simplicity Wins in Software Design</title>
      <dc:creator>Saleh Rezaei</dc:creator>
      <pubDate>Tue, 07 Oct 2025 14:30:12 +0000</pubDate>
      <link>https://forem.com/sully8665/why-simplicity-wins-in-software-design-129p</link>
      <guid>https://forem.com/sully8665/why-simplicity-wins-in-software-design-129p</guid>
      <description>&lt;p&gt;Every developer, at some point, has been proud of writing a “clever” solution — the one that fits everything neatly into one elegant pattern.&lt;br&gt;&lt;br&gt;
And every senior developer, later on, has regretted it.&lt;/p&gt;

&lt;p&gt;Over time, you realize that &lt;strong&gt;the simpler a system is, the longer it survives.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Simplicity is not about doing less work; it’s about doing &lt;em&gt;just enough&lt;/em&gt; to make things clear, predictable, and easy to change.&lt;/p&gt;

&lt;p&gt;In this post, I’ll share a few lessons I’ve learned about why simplicity always wins in the long run — and how to recognize when your design is getting too complicated.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 Complexity Always Starts with Good Intentions
&lt;/h2&gt;

&lt;p&gt;No one &lt;em&gt;plans&lt;/em&gt; to make a system complicated.&lt;br&gt;&lt;br&gt;
Complexity creeps in when we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Try to “future-proof” everything before it exists.
&lt;/li&gt;
&lt;li&gt;Overuse design patterns just because they sound professional.
&lt;/li&gt;
&lt;li&gt;Build abstractions around things that don’t need it yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;“Every abstraction adds a layer of indirection. Each layer makes debugging slower.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A simpler design focuses on &lt;strong&gt;current clarity&lt;/strong&gt;, not future hypotheticals.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚙️ Simplicity Scales — Complexity Breaks
&lt;/h2&gt;

&lt;p&gt;When your project grows, &lt;strong&gt;simple systems bend; complex systems break.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Simplicity means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A new developer can understand it in one afternoon.
&lt;/li&gt;
&lt;li&gt;You can trace a bug without jumping through five service layers.
&lt;/li&gt;
&lt;li&gt;You don’t need a PhD in your own codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not that complex systems can’t scale — it’s that simple systems scale &lt;em&gt;predictably.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🧩 The Illusion of “Reusable” Code
&lt;/h2&gt;

&lt;p&gt;One of the biggest traps is over-abstracting things in the name of reusability.&lt;/p&gt;

&lt;p&gt;You think you’re writing a “generic” helper that will be reused everywhere — but in reality, you just made future maintenance harder.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt; Don’t abstract until you’ve copied it at least twice.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Focus on &lt;strong&gt;readability over reusability.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
It’s easier to merge two simple pieces of code than to untangle one generic monster.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧰 Practical Ways to Keep Things Simple
&lt;/h2&gt;

&lt;p&gt;Here are small habits that help keep software clean and manageable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Name things as if you’ll explain them tomorrow.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If the name needs a comment, it’s not clear enough.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limit layers.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If you have to click through more than three files to find logic, it’s too abstract.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prefer data over logic.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Use configuration and constants before adding “smart” code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Delete bravely.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Removing 100 lines of code is often a bigger achievement than adding 1000.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Make the happy path obvious.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Anyone reading your code should immediately see how it flows in the common case.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Simplicity Is a Leadership Skill
&lt;/h2&gt;

&lt;p&gt;Simplicity isn’t a lack of skill — it’s a &lt;em&gt;sign of maturity.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Junior developers show skill by adding layers.&lt;br&gt;&lt;br&gt;
Senior developers show mastery by removing unnecessary ones.&lt;/p&gt;

&lt;p&gt;When you lead a team, your job isn’t to impress — it’s to &lt;strong&gt;make everyone else’s job easier.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
That’s what simplicity really means.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏁 Conclusion
&lt;/h2&gt;

&lt;p&gt;In the long run, simple systems outlive their creators.&lt;br&gt;&lt;br&gt;
They’re easier to hand off, easier to test, and easier to evolve.&lt;/p&gt;

&lt;p&gt;The next time you design something, ask yourself:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Will someone thank me for how easy this is to understand — or curse me for how clever it was?”&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;If you enjoyed this post, follow me for more thoughts on clean architecture, engineering mindset, and practical simplicity in software design.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>architecture</category>
      <category>cleancode</category>
      <category>seniordeveloper</category>
    </item>
  </channel>
</rss>
