<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Vasilios Syrakis - rust</title>
    <subtitle>A simple blog made with Zola and Duckquill</subtitle>
    <link rel="self" type="application/atom+xml" href="https://vsyrakis.dev/tags/rust/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://vsyrakis.dev"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-07-31T00:00:00+00:00</updated>
    <id>https://vsyrakis.dev/tags/rust/atom.xml</id>
    <entry xml:lang="en">
        <title></title>
        <published>2026-07-31T00:00:00+00:00</published>
        <updated>2026-07-31T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Vasilios Syrakis
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://vsyrakis.dev/blog/learning-rust-on-the-job/"/>
        <id>https://vsyrakis.dev/blog/learning-rust-on-the-job/</id>
        
        <content type="html" xml:base="https://vsyrakis.dev/blog/learning-rust-on-the-job/">&lt;h1 id=&quot;rust-didn-t-click-for-me-until-after-i-worked-on-a-professional-project-with-it&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#rust-didn-t-click-for-me-until-after-i-worked-on-a-professional-project-with-it&quot; aria-label=&quot;Anchor link for: rust-didn-t-click-for-me-until-after-i-worked-on-a-professional-project-with-it&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
Rust Didn’t Click For Me Until AFTER I Worked On A Professional Project With It&lt;&#x2F;h1&gt;
&lt;p&gt;If you’ve ever tried to learn Rust, you probably know the standard playbook.
You read “The Book” (the official Rust Programming Language book). You work
through a bunch of code katas. You fight the borrow checker on toy problems,
eventually forcing your code to compile, and you think, &lt;em&gt;“Okay, I get it now.”&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;That was my story, too. I knew the syntax. I understood the theoretical
difference between &lt;code&gt;String&lt;&#x2F;code&gt; and &lt;code&gt;&amp;amp;str&lt;&#x2F;code&gt;. But if I’m being completely honest,
Rust hadn’t actually &lt;em&gt;clicked&lt;&#x2F;em&gt;. It felt like I was solving academic puzzles
rather than wielding a tool.&lt;&#x2F;p&gt;
&lt;p&gt;It wasn’t until I had to maintain a professional, production-facing Rust
project that the language truly made sense to me.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-crossroads-python-vs-rust&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-crossroads-python-vs-rust&quot; aria-label=&quot;Anchor link for: the-crossroads-python-vs-rust&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
The Crossroads: Python vs. Rust&lt;&#x2F;h2&gt;
&lt;p&gt;The turning point came thanks to a well-scoped problem we encountered at work.
A colleague of mine, who was also exploring Rust, decided to do a little
experiment. They built a solution to this problem in Python—our team’s usual
workhorse—and built an identical version in Rust.&lt;&#x2F;p&gt;
&lt;p&gt;When the time came to hand the project over, they presented me with a choice:
&lt;em&gt;“Here are the two versions. You get to choose which one you want to
maintain.”&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The benchmarks made the decision almost obvious. The Rust version was blazing
fast and consumed a fraction of the memory. Combine those performance metrics
with my lingering, unresolved curiosity about the language, and my mind was
made up. I chose to inherit the Rust codebase.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;trial-by-maintenance&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#trial-by-maintenance&quot; aria-label=&quot;Anchor link for: trial-by-maintenance&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
Trial by Maintenance&lt;&#x2F;h2&gt;
&lt;p&gt;Taking ownership of that project changed everything. I wasn’t just writing
greenfield code from scratch or solving isolated katas anymore. I was suddenly
responsible for &lt;em&gt;maintaining&lt;&#x2F;em&gt; it.&lt;&#x2F;p&gt;
&lt;p&gt;When you maintain a project, your priorities shift. My day-to-day involved:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Performance Tuning:&lt;&#x2F;strong&gt; Trying to squeeze even more speed out of the
application, which forced me to deeply understand memory allocation and
profiling in Rust.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Readability:&lt;&#x2F;strong&gt; This was the big one. I had to make the code readable not
just for me, but for the rest of my team. Refactoring complex, nested logic
into clean, idiomatic Rust forced me to stop just trying to “make it
compile” and start writing code that communicated its intent clearly.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Through this process, the borrow checker stopped being an adversary and started
feeling like a very pedantic pair programmer. The rigid compiler rules, which
previously felt restrictive in katas, suddenly revealed their value when I was
trying to confidently refactor a critical piece of infrastructure without
breaking it.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-blueprint-effect&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-blueprint-effect&quot; aria-label=&quot;Anchor link for: the-blueprint-effect&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
The Blueprint Effect&lt;&#x2F;h2&gt;
&lt;p&gt;Months later, a requirement came up for a similar project. Rather than starting
from zero, I used the first Rust project as a blueprint.&lt;&#x2F;p&gt;
&lt;p&gt;Because I had spent so much time refining and maintaining that original
codebase, I had a solid foundation. But this new project eventually grew larger
and more complex than the first. As the scope expanded, I had to reach for more
advanced Rust features. I was forced to design architectures that scaled, deal
with more complex trait bounds, and manage concurrency in ways the first
project didn’t require.&lt;&#x2F;p&gt;
&lt;p&gt;Because I had that initial, well-scoped professional project under my belt,
these new concepts weren’t overwhelming. They felt like natural extensions of
what I already knew.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;why-the-professional-context-matters&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#why-the-professional-context-matters&quot; aria-label=&quot;Anchor link for: why-the-professional-context-matters&quot;&gt;&lt;i class=&quot;icon&quot;&gt;&lt;&#x2F;i&gt;&lt;&#x2F;a&gt;
Why the Professional Context Matters&lt;&#x2F;h2&gt;
&lt;p&gt;Looking back, books and katas are fantastic for syntax and foundational
concepts. But they lack the friction of the real world.&lt;&#x2F;p&gt;
&lt;p&gt;In a professional project, you can’t just slap a &lt;code&gt;.clone()&lt;&#x2F;code&gt; on everything to
make the compiler shut up—eventually, a performance review or a team member
will call you out on it. You have to write code that other people can read. You
have to maintain it when requirements change.&lt;&#x2F;p&gt;
&lt;p&gt;That constraint—the necessity of building something robust, performant, and
legible for a team—was the crucible that finally made Rust click for me. It’s
why I’m comfortable with the language today. If you’re stuck in the “kata
phase” of learning Rust, my advice is to find a real, well-scoped problem at
work and just build it. You might be surprised by how quickly the pieces fall
into place.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
