<?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: superkacper4</title>
    <description>The latest articles on DEV Community by superkacper4 (@superkacper4).</description>
    <link>https://dev.to/superkacper4</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%2F3686129%2F84e55f84-e06f-4c54-9fcd-d6755c91cce5.png</url>
      <title>DEV Community: superkacper4</title>
      <link>https://dev.to/superkacper4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/superkacper4"/>
    <language>en</language>
    <item>
      <title>How we created more tech debt in 6 months than in a 10-year-old system</title>
      <dc:creator>superkacper4</dc:creator>
      <pubDate>Wed, 28 Jan 2026 19:28:32 +0000</pubDate>
      <link>https://dev.to/superkacper4/how-we-created-more-tech-debt-in-6-months-than-in-a-10-year-old-system-25l4</link>
      <guid>https://dev.to/superkacper4/how-we-created-more-tech-debt-in-6-months-than-in-a-10-year-old-system-25l4</guid>
      <description>&lt;p&gt;&lt;a href="https://superkacper4.github.io/portfolio-2023/blog/technical-debt-everyday" rel="noopener noreferrer"&gt;The original post&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table of contents&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;The bad table&lt;/li&gt;
&lt;li&gt;A little bit of context&lt;/li&gt;
&lt;li&gt;Contrast&lt;/li&gt;
&lt;li&gt;Summary&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Six months ago, we made a small, reasonable decision: we decided not to create a new database table.&lt;/p&gt;

&lt;p&gt;Two entities in our system “looked similar enough”, so we put them into the same one.&lt;/p&gt;

&lt;p&gt;Today, this single decision has created more technical debt than the 10-year-old system I work with every day.&lt;/p&gt;

&lt;p&gt;This is the story of how that happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bad table
&lt;/h2&gt;

&lt;p&gt;Initially, our app had a simple concept of adding opinions to it. The schema looked more or less like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;model Opinion {
  id         String    @id @default(cuid())
  building   Building? @relation(fields: [buildingId], references: [id])
  buildingId String?
  pricePerSquareMeter Int
  rating  Int?
  message String?
  area    Float
  opinionDate DateTime @default(now())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, there are already properties that are clearly meant to be shared between apartments and opinions, like &lt;code&gt;area&lt;/code&gt;, &lt;code&gt;buildingId&lt;/code&gt;, or &lt;code&gt;pricePerSquareMeter&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;All was fine until we realized we lacked a few properties that are essential for the apartment entity. Since opinions and apartments could now also be added by registered users, we added a new relation for it. It was still great — we still had full coverage.&lt;/p&gt;

&lt;p&gt;So we kept going. After a while, we realized that we lacked such a basic field as &lt;code&gt;numberOfRooms&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So we added that. Then we added &lt;code&gt;floor&lt;/code&gt;. Then &lt;code&gt;height&lt;/code&gt;. It's not like they can't exist in the opinion entity. It's just something that wouldn't make any sense from the business perspective.&lt;/p&gt;

&lt;p&gt;After a while, we ended up with many &lt;code&gt;?.&lt;/code&gt; across the whole app, as half of our table had optional properties.&lt;/p&gt;

&lt;p&gt;From the data perspective, it was such a mess that we ended up with an &lt;code&gt;isApartment&lt;/code&gt; flag inside the &lt;code&gt;Opinion&lt;/code&gt; table. 🙃&lt;/p&gt;

&lt;p&gt;What was also very bad, from the code perspective, was that it was not that clear when an &lt;code&gt;Opinion&lt;/code&gt; was actually an apartment and when it was just an opinion.&lt;/p&gt;

&lt;p&gt;This created huge tech debt, but the sad part is that for a very long time it seemed like this decision was reasonable. But as time passed, it became more and more clear that this was a bad decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  A little bit of context
&lt;/h2&gt;

&lt;p&gt;The app I am referring to is a Next.js monolith app. It's only around 6 months old, but it's a ready product, with even external integrations with payments. It's not a super complex app, but it's definitely not a trivial one either.&lt;/p&gt;

&lt;p&gt;The idea was to create a place for people to exchange their opinions and prices related to the real estate market, so it would help with decision-making. Something like Glassdoor, but for real estate. That's why we already had the Opinion table when we decided to add the ads part.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contrast
&lt;/h2&gt;

&lt;p&gt;Recently, we were working on a new feature in a 10-year-old app - vouchers. We started, as usual, with the monolith app, so everything was packed into the app's database.&lt;/p&gt;

&lt;p&gt;But then we realized that sooner or later this would require external integrations handled by our Marketplace (a set of microservices). So instead of continuing, we stopped. We took a step back and moved the whole logic to a dedicated service.&lt;/p&gt;

&lt;p&gt;It was more work. It delayed us. But now we have a single source of truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  What was learnt
&lt;/h2&gt;

&lt;p&gt;I realized that tech debt is not something that just appears out of nowhere. It's something that we create every single day.&lt;/p&gt;

&lt;p&gt;It's not about being lazy, not having time to refactor, or choosing some exotic stack. It's about making decisions that seem reasonable, but then snowball into something much worse.&lt;/p&gt;

&lt;p&gt;Every single &lt;code&gt;TODO: Will refactor it later.&lt;/code&gt;, or "These two look similar enough, let's make them share logic" (and you end up with &lt;em&gt;many&lt;/em&gt; ifs).&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;I just want to encourage you to think more about technical debt and realize that it's something you (and I) bring into the project every single day.&lt;/p&gt;

&lt;p&gt;It's not just something left behind by people who no longer work there. It's on me. It's on you.&lt;/p&gt;

&lt;p&gt;One day, you may find that the 💩 code you are trying to debug was written by you.&lt;/p&gt;

&lt;p&gt;Stay strong and be positive! 💪&lt;/p&gt;

&lt;p&gt;&lt;em&gt;To comment, you can use the &lt;a href="https://github.com/superkacper4/portfolio-2023/issues" rel="noopener noreferrer"&gt;Issues tab&lt;/a&gt; on my project, or comment in the thread (if this post was posted on Reddit, X, or anywhere).&lt;/em&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>codequality</category>
      <category>database</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Developers VS Product Sense</title>
      <dc:creator>superkacper4</dc:creator>
      <pubDate>Tue, 30 Dec 2025 13:29:37 +0000</pubDate>
      <link>https://dev.to/superkacper4/developers-vs-product-sense-8ph</link>
      <guid>https://dev.to/superkacper4/developers-vs-product-sense-8ph</guid>
      <description>&lt;p&gt;&lt;a href="https://superkacper4.github.io/portfolio-2023/blog/developer-vs-product-mindset" rel="noopener noreferrer"&gt;&lt;em&gt;(The original post)&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Table of content&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Intro&lt;/li&gt;
&lt;li&gt;What is product sense interview about?&lt;/li&gt;
&lt;li&gt;Why they struggle there?&lt;/li&gt;
&lt;li&gt;Is it even an actual issue?&lt;/li&gt;
&lt;li&gt;How to start your "workout"?&lt;/li&gt;
&lt;li&gt;Summary&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;We are a small product company in the process of hiring developers. The idea was not only to hire people who can code but also those who can bring a deeper look at the product, not just the &lt;em&gt;"It was like that on Figma"&lt;/em&gt; approach.&lt;/p&gt;

&lt;p&gt;So we are trying to hire some devs. Many of them are really strong when it comes to technical stuff. Some of them are so good, I feel dumb 😐&lt;/p&gt;

&lt;p&gt;But from what I’ve noticed, many devs have a problem with the last interview — the product sense interview.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before we go further&lt;/strong&gt;, I don’t think every single dev should have this skill — it’s about what we need and what I noticed across a few hiring processes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is product sense interview about?
&lt;/h2&gt;

&lt;p&gt;Mostly, it focuses on how you see web apps and websites around you. It’s really not that complicated, as we are not forcing you to create some product strategy from scratch. It’s more about naming what you like in your favourite app, what you dislike, and how you would improve it. Doesn’t sound that bad, right?&lt;/p&gt;

&lt;p&gt;Turns out differently, though. Many devs fail in the last stretch, and here I’d love to dive deeper into that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why they struggle there?
&lt;/h2&gt;

&lt;p&gt;I guess there isn’t any easy answer for that. But from what I’ve noticed, many devs are really focused on the technical side of things. They love coding, and they love solving problems with code. But when it comes to thinking about the product as a whole, they often struggle to see the bigger picture.&lt;/p&gt;

&lt;p&gt;Obviously, in bigger tech companies, it doesn’t have to be a problem. They are really good at what they do, and there are plenty of other people taking care of designing, planning, etc. In our case, it’s a little bit more complicated, as we are a small team and everyone needs to wear multiple hats.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Even in my example, as a Fullstack dev, I have to take care of Jira tickets, GitHub CI, or sometimes even participate in customer interviews.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Is it even an actual issue?
&lt;/h2&gt;

&lt;p&gt;It depends 😜 Obviously, I wouldn’t be surprised if you’ve already been working for &lt;em&gt;X&lt;/em&gt; years and have never bumped into this problem. Definitely, there is — and for quite some time there will be — a place for coders (we can argue about what AI will do here, but I don’t like to play magician, so 🤷‍♀️).&lt;/p&gt;

&lt;p&gt;But if you would ever consider moving into management roles, you should start thinking more about the product. That doesn’t mean you have to think less about code.&lt;/p&gt;

&lt;p&gt;Even if you don’t care about management and just want to write code, I think it may still help you to start training this muscle — it won’t hurt you.&lt;/p&gt;

&lt;p&gt;And here I’ll try to quickly convince you why:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bigger input to your team&lt;/strong&gt; — If you can think about the product, you can bring more value to your team. You can suggest improvements, help with prioritization, or even just throw ideas. This will make you a more valuable team member and may open up new opportunities for you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Growing inside your team&lt;/strong&gt; — It obviously connects with the first point. The more you do beyond coding, the more valuable you become to your company — and the better your chances for a raise or avoiding layoffs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better ideas and execution of your side projects&lt;/strong&gt; — To be honest, this is the most important one for me. I love working on my side projects, and I guess we all do. If you can think about the product, you can create something that people actually want to use and execute it better.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to start your "workout"?
&lt;/h2&gt;

&lt;p&gt;Just take a look around you. You certainly use many apps every single day. Look at them, think about what you like in them, and what annoys you. So right after saying &lt;em&gt;“I hate this app”&lt;/em&gt;, add one more step and think why. Is it slow? Or maybe the UI is trash (what exactly in the UI pisses you off)?&lt;/p&gt;

&lt;p&gt;I wouldn’t say it’s much, is it? And maybe it will even inspire you to create a &lt;strong&gt;great&lt;/strong&gt; new side project — just because you noticed how bad the current one you use is.&lt;/p&gt;

&lt;p&gt;Think about it as just a different set of problems to solve, with different tools. Now you’re not solving an algorithmic problem with code. Instead you’re trying to figure out how to make the UX better, within the technical limitations you have. It’s still the good old problem-solving we all love, just with different tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;I want to add a final thought here. I highly recommend starting the "workout," as it’s really &lt;em&gt;for free&lt;/em&gt;. Now, when the whole AI thing is happening, it won’t hurt. It may even help you gain a new advantage on the market or open up new possibilities for you.&lt;/p&gt;

&lt;p&gt;Stay strong and be positive! 💪&lt;/p&gt;

&lt;p&gt;&lt;em&gt;To comment, you can use the &lt;a href="https://github.com/superkacper4/portfolio-2023/issues" rel="noopener noreferrer"&gt;Issues tab&lt;/a&gt; on my project, or comment in the thread (if this post was posted on Reddit, X, or anywhere).&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>developers</category>
      <category>software</category>
    </item>
  </channel>
</rss>
