<?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: Felipe Saraiva</title>
    <description>The latest articles on DEV Community by Felipe Saraiva (@saraivas).</description>
    <link>https://dev.to/saraivas</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%2F4092902%2F39130f23-44f7-488c-97b9-5b3c43554ae0.jpg</url>
      <title>DEV Community: Felipe Saraiva</title>
      <link>https://dev.to/saraivas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saraivas"/>
    <language>en</language>
    <item>
      <title>Title: My CI Caught a Bug My Local Environment Never Would</title>
      <dc:creator>Felipe Saraiva</dc:creator>
      <pubDate>Tue, 01 Sep 2026 20:54:52 +0000</pubDate>
      <link>https://dev.to/saraivas/title-my-ci-caught-a-bug-my-local-environment-never-would-55hp</link>
      <guid>https://dev.to/saraivas/title-my-ci-caught-a-bug-my-local-environment-never-would-55hp</guid>
      <description>&lt;p&gt;Spent the past week wiring up CI and tightening a few decisions on a backend project. Nothing dramatic happened, but a few things stood out enough to write down.&lt;/p&gt;

&lt;p&gt;CI is worth setting up early, even on a solo project. First run caught a dependency that worked locally but was never actually declared in &lt;code&gt;requirements.txt&lt;/code&gt;. Classic "works on my machine" gap. CI doesn't care what your machine has installed, only what the project actually declares, and that mismatch is exactly the kind of thing that's invisible until something forces the comparison.&lt;/p&gt;

&lt;p&gt;Pinned dependencies drift more easily than people expect. I had a specific package version pinned for a known compatibility issue, and a later, unrelated install silently bumped it past that pin. Caught it by chance during a review, not because anything alerted me. Worth adding an explicit check for that instead of relying on remembering.&lt;/p&gt;

&lt;p&gt;404 over 403 for resources that belong to another user is a small choice with real weight. 403 confirms something exists and you're just not allowed to see it. 404 gives nothing away. Costs a bit of clarity for legitimate callers debugging their own mistakes, but that's a fair trade for not leaking what exists in the system.&lt;/p&gt;

&lt;p&gt;None of this is complicated. All of it is easy to miss quietly, and only shows up if something is actually checking. That's most of what good backend hygiene turns out to be.&lt;/p&gt;

</description>
      <category>back</category>
      <category>testing</category>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <title>From "I Just Make It Work" to Backend Engineer: Starting to Document the Process</title>
      <dc:creator>Felipe Saraiva</dc:creator>
      <pubDate>Mon, 24 Aug 2026 19:55:02 +0000</pubDate>
      <link>https://dev.to/saraivas/from-i-just-make-it-work-to-backend-engineer-starting-to-document-the-process-3975</link>
      <guid>https://dev.to/saraivas/from-i-just-make-it-work-to-backend-engineer-starting-to-document-the-process-3975</guid>
      <description>&lt;p&gt;Hi, I'm Felipe. I'm a full-stack developer from Brazil, currently working as a software engineer at an enterprise environmental risk and compliance SaaS platform. I build multi-tenant architecture, auth systems, and AI-powered document processing pipelines for industrial clients.&lt;/p&gt;

&lt;p&gt;I've been doing this for about 3 years now, and here's an honest confession. I'm good at solving problems. Multi-tenant isolation, cache invalidation, entity resolution pipelines, that kind of thing. But I often can't name what I did with the formal, textbook vocabulary that system design interviews expect. I learned by doing, in production, under pressure. Not by reading Designing Data-Intensive Applications cover to cover.&lt;/p&gt;

&lt;p&gt;That gap is what I'm closing now. My goal is to move into backend and data&lt;br&gt;
engineering roles at international companies. To do that well, I need to go from "I can solve it" to "I can explain, defend, and teach it."&lt;/p&gt;

&lt;p&gt;If you're on a similar path, self-taught in production and now catching up on the formal side of things, I hope some of this is useful. And if you spot something wrong in what I write, please tell me. That's kind of the point.&lt;/p&gt;

&lt;p&gt;Next post: the first project. A REST API with proper auth, and everything I got wrong building it "the fast way" before.&lt;br&gt;
something wrong in what I write, please tell me. That's kind of the point.&lt;/p&gt;

&lt;p&gt;Next post: the first project. A REST API with proper auth, and everything I&lt;br&gt;
got wrong building it "the fast way" before.&lt;/p&gt;

</description>
      <category>career</category>
      <category>backend</category>
      <category>learninginpublic</category>
      <category>systemdesign</category>
    </item>
  </channel>
</rss>
