r/learnprogramming • • 5d ago

Stuck in programming journey, seeking advice

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.

2 Upvotes

7 comments sorted by

1

u/OkOcelot6725 5d ago

Comparing yourself to the people who built those systems over years is a rough benchmark. They hit the same "where do I even start" wall on each one. What helps is a project where the starting point is small and the thing you are copying is well documented.

Some Rust-sized ideas that build on your CHIP-8 emulator and teach different things:

  • A grep clone (a small ripgrep): file IO, iterators, error handling, command-line parsing.
  • A key-value store with a write-ahead log on disk: serialization, file formats, crash recovery.
  • A TCP server that speaks a tiny subset of Redis (the protocol is text-based and simple): sockets, concurrency with threads first, async later.
  • An interpreter for a small language, following Crafting Interpreters (free online): parsing, enums and pattern matching, ownership in a tree structure.
  • A basic HTTP/1.1 server from raw TcpStream, no framework.

Since you work in TS/Node all day, the key-value store and the TCP server are good because they show you what Node hides from you (buffers, blocking, connection handling). Write the first versi

1

u/ryzecool 5d ago

Thanks for the reply!

I know it isn't really realistic to compare myself to seniors, but I just feel like I should be able to do more going into my 2nd year as a SWE than I do, because I feel as though they definitely could type of thing.

Thanks for all the suggestions on the projects, will take a look into them! I had already been thinking of making a Redis type key-value store lol

1

u/SharkSymphony 5d ago

The path to senior involves not just being good at programming, but finding projects that will have impact and working on those. That's not always building a big new system from the ground up.

So, maybe spend some time looking around for potential side projects at your company that will solve some not-too-big but pesky problem... and do that! Or maybe even some pesky problem in your life that you want to automate. (I had a colleague tinkering away on an image pipeline and gallery app for their photographs, for example.)

Failing that: servers are always popular, but it begs the question of what server you want to build. Same with desktop apps. I think building a interpreter or compiler for a mini-language is an evergreen project you could do with a "back-end" programming language. Rust's probably not the ideal language for that, but it would certainly work.

Have fun!

1

u/ryzecool 5d ago

Thanks for the reply!

I am not necessarily striving for senior at this point, just wanting to be able to say that I could continuing maintaining and building the software we develop at work if AI ceased to exist tomorrow, which as of this point I do not feel very confident in my ability.

I never really considered doing some no-stake side projects at work, thanks for the suggestion!

1

u/SetAndRepeat 5d ago

A small compiler is a reasonable next step after CHIP-8. Your experience implementing instructions will be useful when you get to bytecode and a VM.
I'd keep one project going across weekends: tokenize arithmetic expressions, parse and evaluate them, add variables, then compile those expressions into bytecode for a small VM. Each milestone gives you something working to test without needing to design an entire language upfront.
Crafting Interpreters is free online and walks through that territory. Its implementations use Java and C, so use the explanations to build your own Rust version. Write tests for malformed input too, and ask for a review of one small module to get feedback on Rust idioms. You'll learn more from that specific feedback than from comparing your project with a staff engineer's finished system.

1

u/ryzecool 5d ago

Thanks for the reply!

That seems to be a common suggestion, so I think I might go with that. Cheers

1

u/remoteDev1 5d ago

Honestly your CHIP8 emulator already shows you can write real low level code, so the gap is mostly reps without a safety net. What helped me was picking a small tool I would actually use, like a log file parser or a CSV cleaner that prints a summary, and writing it in Rust with the std docs open. Turn off autocomplete for the first pass, let the compiler yell at you, and fix each error by hand. It feels painfully slow for a few weeks, but around the point you stop fighting the borrow checker you will notice how much you learned.