<?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: Kacper Góra</title>
    <description>The latest articles on DEV Community by Kacper Góra (@kacper_gra_918cd2db67968).</description>
    <link>https://dev.to/kacper_gra_918cd2db67968</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3960953%2Fc05d6754-8441-4fce-b52e-2d236d3828b0.png</url>
      <title>DEV Community: Kacper Góra</title>
      <link>https://dev.to/kacper_gra_918cd2db67968</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kacper_gra_918cd2db67968"/>
    <language>en</language>
    <item>
      <title>What I learned about the testing pyramid</title>
      <dc:creator>Kacper Góra</dc:creator>
      <pubDate>Tue, 02 Jun 2026 08:19:12 +0000</pubDate>
      <link>https://dev.to/kacper_gra_918cd2db67968/what-i-learned-about-the-testing-pyramid-nj0</link>
      <guid>https://dev.to/kacper_gra_918cd2db67968/what-i-learned-about-the-testing-pyramid-nj0</guid>
      <description>&lt;p&gt;I used to write tests mostly because: "you should write tests.", with poor mental model 'because the best practices say so', with truly not understanding potential benefits&lt;/p&gt;

&lt;p&gt;I understood the rule, but not the reason behind it.&lt;/p&gt;

&lt;p&gt;Then I did a refactor — and for the first time, tests actually saved me.&lt;/p&gt;

&lt;p&gt;Then i realized that, I was wrong, or at least not exactly right but I was missing the crucial point.&lt;br&gt;
The real value showed up when I started refactoring parts of my side project.&lt;br&gt;
Changing a service, restructuring a module, updating dependencies — without tests, the only way to verify nothing broke was manual testing.&lt;br&gt;
Click through the app, hope for the best, deploy and pray. A lot of pain.&lt;/p&gt;

&lt;p&gt;With tests in place, the feedback was immediate. That's when the testing pyramid clicked for me.&lt;/p&gt;

&lt;p&gt;Unit tests at the base — fast, cheap, and isolated. They tell you what broke and why. They also can serve as simple documentation for the business logic. The fundamental part of tests.&lt;/p&gt;

&lt;p&gt;Integration tests in the middle — they verify your modules work together.&lt;/p&gt;

&lt;p&gt;E2E at the top — slow and expensive, but they confirm the whole flow works. Best for critical paths - auth flow / payment flow etc.&lt;br&gt;
The pyramid isn't about writing more tests. It's about writing the right tests with good balance.&lt;/p&gt;

&lt;p&gt;In practice, tests rarely feel like a priority. They take time, they slow down early development, and when you're moving fast — they're easy to skip.&lt;br&gt;
But the cost shows up later. Not during the initial build, but during every change that comes after.&lt;/p&gt;

&lt;p&gt;Those changes usually come from a better understanding of the business domain, evolving client requirements, or new product ideas. The challenge is that every change must coexist with what already exists. Users still depend on the current system while expecting new features and improvements.&lt;/p&gt;

&lt;p&gt;E2E gives you confidence. Unit tests give you precision. You need both, but in the right proportions.&lt;br&gt;
My takeaway: tests don't slow you down during development. They speed you up during refactoring — which is most of the job.&lt;/p&gt;

&lt;h1&gt;
  
  
  systemdesign #softwaredevelopment #nestjs #learninpublic
&lt;/h1&gt;

</description>
      <category>beginners</category>
      <category>softwaredevelopment</category>
      <category>softwareengineering</category>
      <category>testing</category>
    </item>
    <item>
      <title>What DDIA taught me about reliability</title>
      <dc:creator>Kacper Góra</dc:creator>
      <pubDate>Sun, 31 May 2026 09:58:01 +0000</pubDate>
      <link>https://dev.to/kacper_gra_918cd2db67968/what-ddia-taught-me-about-reliability-59d8</link>
      <guid>https://dev.to/kacper_gra_918cd2db67968/what-ddia-taught-me-about-reliability-59d8</guid>
      <description>&lt;p&gt;I used to think a reliable system was simply one that doesn't crash.&lt;/p&gt;




&lt;p&gt;The book challenges that from the first pages.&lt;/p&gt;

&lt;p&gt;Failures are expected. Databases go down. Networks fail. Third-party APIs stop responding.&lt;br&gt;
What matters is not whether failures happen — it's how the system behaves when they do.&lt;/p&gt;




&lt;p&gt;This hit me immediately when I thought about a service instance I've been working with.&lt;/p&gt;

&lt;p&gt;If it suddenly became unavailable — what would happen?&lt;br&gt;
Would the app degrade gracefully, serving cached data or a fallback?&lt;br&gt;
Or would the entire request chain fail?&lt;/p&gt;

&lt;p&gt;The honest answer: I hadn't thought about it carefully enough.&lt;/p&gt;




&lt;p&gt;Key takeaway from chapter 1:&lt;/p&gt;

&lt;p&gt;Reliability is not about preventing every failure.&lt;br&gt;
It's about designing systems that continue operating despite them.&lt;/p&gt;

&lt;p&gt;Hardware faults, software errors, human mistakes — they're not edge cases.&lt;br&gt;
They're the default state you design around.&lt;/p&gt;




&lt;h1&gt;
  
  
  systemdesign #softwaredevelopment #ddia #learninpublic
&lt;/h1&gt;

</description>
      <category>architecture</category>
      <category>distributedsystems</category>
      <category>sre</category>
      <category>systemdesign</category>
    </item>
  </channel>
</rss>
