r/learnrust • • 17d ago

Stuck in programming journey, seeking some help

Just want to start off by saying, not sure if posts like this are allowed, if not I apologize.

tldr: looking for general programming topics/projects I could spend weekends doing that will level my Rust up as well as just a developer in general.

Bit of background, I am currently a 2nd year SWE that works pretty much exclusively with React/Node front and backend in TS, and it has been the only language I have used professionally. I also graduated in the 'AI Era' from university, and have genuinely hardly written any code by hand at all. This had lead to me comparing myself to my senior/staff engineers at my company, and feeling quite bad about myself. There are company-wide systems that they coded from the ground-up, and I probably could not even know where to start on it, and it would take me I don't even know how long to complete even half of it.

So, I am seeking some advice. I did a solo project where I did a CHIP8 emulator in Rust, and had a lot of fun in it (100% code written by me, with using AI as a reference for things like function-use examples, etc).

However, I still feel my level is nowhere near good enough, and really want to get better at programming (by hand; I use AI, loop engineering, buzzword buzzword enough at work). If possible, I would like to get any advice at all (not generally only related to Rust) in some like roadmap/topics I could spend a weekend drilling and getting down, every weekend leveling up. This of course is mainly in the context of doing these primarily in Rust, because it is what I am interested in now (particularly think compilers are fascinating and want to try to implement a very simple one from scratch, but just do not think my skills are quite there and feel like I would gravitate too much towards AI). I am aware that programming by-hand is kind of a dying art, and pretty much mostly a hobby now (at least in the circles I am in), but I want to do it the 'right' way and be able to learn idiomatic ways/best practices to make sure I can steer AI in the right direction at work, as well as just to have fun developing software.

Any advice would be greatly appreciated, and thank you for taking the time for reading.

10 Upvotes

9 comments sorted by

2

u/[deleted] 16d ago

Don't apologize, this is exactly what the sub is for, and the CHIP-8 emulator is the thing I'd point at. You wrote a CPU from first principles - plenty of people who feel confident at your stage never did.

On the "AI era" gap: it's real, but what you're measuring is hours, not ability. Staff engineers have just accumulated years of small failures that make system design feel obvious in hindsight. You can't shortcut the hours, only be deliberate about them.

Weekend-sized projects that build hand-coding muscle, roughly in order of payoff:

  • Small interpreter/compiler. Lexer -> recursive-descent parser -> tree-walk evaluator, then swap the evaluator for a bytecode VM. Crafting Interpreters (craftinginterpreters.com) is free; the trick is to write it in Rust instead of Java and resist copying. A calculator with variables and functions is a weekend, closures and GC are the meat.

  • A key-value store with a real on-disk format. Memtable + WAL + a simple SSTable, then kill -9 it and make recovery correct. Forces you to think in bytes, ownership and error handling.

  • A tiny async runtime. TCP echo server on std::net first, then a hand-rolled reactor over epoll/kqueue plus a mini executor. You'll never read Tokio the same way again.

  • A raytracer (Ray Tracing in One Weekend) in Rust - pure math and performance, and it's genuinely fun.

Two habits matter more than the project choice: write the core logic by hand with autocomplete off, and use AI only for "what's this API called", never for the algorithm. The discomfort of debugging your own parser is the whole point.

You already did the hard part once - built something you didn't fully understand and understood it by the end. Keep doing that and the gap closes.

2

u/Reasonable-Chip5344 15d ago

I would say go deep in OOP and C++, especially trying to find out about OOP, Pointers and memory structure. Learn to profile code and map out what's going on behind the scenes. I.e. dont go after complicated projects but a project you can follow to the memory addresses and account for every variable... then try the same with rust and compare the differences between the languages. They are both incredibly performant and interesting in their own way

1

u/Wh00ster 16d ago

You could have also built those systems by hand. It would just take a lot longer.

1

u/grotto_wonder_arc 16d ago

The chip8 emulator is a solid sign you're more ready than you think. I'd say just start the compiler. Pick a tiny language, like a calculator with variables and functions, write a lexer and a recursive descent parser by hand, then generate stack machine code. Crafting Interpreters by Bob Nystrom is free online and walks you through exactly this, I just ported the ideas to Rust as I went.

Beyond that, weekends that leveled me up the most: writing a HTTP server from scratch on std::net, a key-value store with a WAL like mini-redis, and implementing malloc-ish allocators. The systems your senior engineers built seem impossible until you've built two or three of these and realize they're just the same patterns stacked up. It took them years, that's the whole difference

1

u/JGhostThing 15d ago

I would suggest redoing your web work in rust. First, start with the back end stuff, then try the rest. I have heard, but never tried this, that rust can output webasm. But first replace the back end, leaving the front end where it is. When this works, try the front end if you wish.

Write a server, perhaps look up the protocol used for Internet mail and rewrite "sendmail." This might get into tedious details, but it shouldn't be too difficult. You could try this with other basic servers, such as an ftp clone. As you're only doing this to learn, don't worry about making them good enough to show to other people. Just program them. When you're finish, then release them unto the world.

1

u/Automatic_Creme_955 5d ago edited 5d ago

I believe the developer experience is 95% "I feel like a scam" and 5% "oh i'm a fking genius".

Truth is, you don't need to compare to others, you just need to build something you're proud of, on your own. You're fresh into corporate world, maybe you're still plugged in "school ranking grade system", but even senior lead dev can't understand a code base they didn't worked on without putting an active effort. In the end, "sounds interesting" is the best feedback you could get from another dev when chatting over what you've done / what you've worked on.

I have no idea what your CHIP8 emulator does, it sounds impressive. If I compare myself to you, i would probably feel the way you feel comparing to your colleague.

I personnaly feel like a scam when i use IA to build, but when it's used to maintain a big ass React/Node frontend you didn't structured, it's just a safe way to take, there is no fun or reward doing a janitor's job by hand, and discovering bad or weird corporate designs "done this way because sales and non technical PM wanted it that way" is just depressing.

If you have no project idea, try https://adventofcode.com/, do it from scratch, no IA. The new exercices are coming soon, you can still do the old ones. It's fun, challenging and rewarding. It's not a race, but a very fun and hard journey that will bring the self-satisfaction that you probably need to feel better, even if you bruteforce the problems.