# Day 2 - Reality Check & Readjustments

By [etcetera](https://paragraph.com/@etcetera) · 2025-09-03

---

I started digging into rollups by reading Vitalik’s [An Incomplete Guide to Rollups](https://vitalik.eth.limo/general/2021/01/05/rollup.html) article. At a high level, the picture makes sense:

*   **On-chain smart contract:** minimal, responsible for deposits, withdrawals, and proof verification.
    
*   **Off-chain computation:** where the heavy lifting happens.
    

That gave me a solid mental model.

I also joined the zkSync Discord, shared what I was doing, and got pointed to their core/prover docs and community discussions. It felt like a signal that I’m in the right place. At the same time, it also made me realize just how deep this rabbit hole is.

After sharing my goals and plan with a close friend who’s more experienced in systems/Rust we had a long chat and he told me that jumping straight into building a sequencer (even a toy one) might be biting off more than I can chew right now.

His advice was to first **deepen my Rust fundamentals** through smaller, quicker feedback loop projects before tackling something as ambitious as rollup infra.

Instead of burning out on a huge project early, building up intuition and confidence layer by layer with quick wins seemed like solid advice to me.

So, I made some adjustments to my original plan and I feel a lot more confident with this new path, with much clearer, concrete and achievable steps now.

### My updated plan

#### **Step 1: Rust foundations**

We start with solidifying the fundamentals.

*   [The Rust Book](https://doc.rust-lang.org/book/) → I'm at chapter 15.5 right now and taking it slow to understand things well
    
*   [Too Many Linked Lists](https://rust-unofficial.github.io/too-many-lists/) → next in line for learning low-level development, unsafe, memory management
    

To practice what I learn, I am thinking of following a pattern of small exercises + a medium sized project alongside the theory. Right now it is like so:

**Exercises:** [Exercism rust track](https://exercism.org/tracks/rust)

**Project:** [Codecrafters Build Your Own Git](https://app.codecrafters.io/courses/git/introduction?track=rust)

#### **Step 2: Digging deeper for performance**

*   [The Rustonomicon](https://doc.rust-lang.org/nomicon/) → invariants, unsafe patterns
    
*   [Rust Atomics and Locks](https://marabos.nl/atomics/) → concurrency + CPU-level considerations
    

**Project:** [Codecrafters Build Your Own Bittorrent](https://app.codecrafters.io/courses/bittorrent/overview)

#### **Step 3: Algorithms**

It is worth getting a hang of some common programming patterns, for interviews and potentially when fiddling with low-level system programs.

*   LeetCode (1 problem/day)
    

#### **Step 4: Systems wizardry** (optional)

*   [Computer Enhance](https://www.computerenhance.com/p/table-of-contents) → assembly, instruction-level parallelism, and what it really means for code to be “fast”
    

This way I can keep making progress, but with a more realistic foundation that won’t collapse under its own weight.

Once I’ve leveled up through these, I think I'll have a solid enough foundation to both apply for jobs and start making meaningful contributions to some of the infra level client and SDK repos.

One thing I do want to point out is that while I've laid this stuff out linearly, I probably would be jumping back and forth between some of these resources to keep myself engaged, nevertheless I feel like it is a good general guideline that I'll more or less adhere to.

Thanks for reading this! If you wanna follow my journey, you can subscribe below or [follow me on twitter](https://x.com/HubertEtcetera).

[Subscribe](null)

---

*Originally published on [etcetera](https://paragraph.com/@etcetera/day-2-reality-check-readjustments)*
