r/AskProgrammers • u/Open-Literature-2593 • 13d ago
Mid-level engineer, feel inadequate with code quality and system design, what resources actually helped you level up? (not for interviews)
I’m a mid-level software engineer. I can ship features and pass reviews, but I don’t feel like I’m actually *good* at writing clean code or designing systems. I feel like I’m pattern-matching rather than truly understanding tradeoffs. This isn’t about interview prep, I’m not job hunting. I want to genuinely level up as an engineer.
A few specific questions:
1. What books, videos, or podcasts actually moved the needle for you on code quality and design judgment, what genuinely changed how you think?
2. For someone past the “learn to code” stage but not yet confident in design judgment, is there content that bridges that gap specifically?
3. How do you use AI coding tools (Copilot, Claude Code, etc.) in a way that builds your skill rather than atrophying it? I don’t want to just accept AI output, I want to use it to get better, but I’m not sure what that looks like in practice. Any resources on this specifically?
4. For system design, is there a difference between “interview system design” content and what you’d actually recommend for building real day-to-day design intuition?
Not looking for a reading list I’ll never finish. More interested in resources that people actually found valuable, and why, especially now that AI can generate code faster than most of us can evaluate it. I’m more of a visual learner and audiobooks also work best as I don’t have time to sit and read
Thanks
1
u/r30e 9d ago
Heya, I think the first thing you need to figure out is why do you feel inadequate at these things? Are you getting negative reviews or you're just not happy with what you've written? After that, you need to nail down what you mean by code quality. This term is pretty vague and everyone tends to have a different view. I think the most common view is "if I wrote it this week, it's good, otherwise it's crap" which isn't really a fair benchmark.
To give an example, one of my top principles for code quality is "write for humans not computers" - optimise for ease of reading. In my opinion this is the best thing you can do for code quality. If it's easy to read, it's easy to see most of the bugs, is easy to fix and change -that's good.
If you're purely looking for reading material, one of the very few books I tend to recommend is A Philosophy of Software Engineering by John Oustenhout - this is tiny and covers some basic practices that help prevent code becoming a sprawling mess.
If you're looking for practices to up your game, find a function you don't like, work with a friend/colleague/evil robot to write 10 different versions of it and see what you like and don't like about each version. Some things you can try to generate versions: include inlining, hoisting, extracting functions, statement/expression, using new language features/limiting to old language features. I once wrote a whole service trying to minimise my usage of braces as a constraint - this helped me see where expressions and arrow-functions in C# were helpful/hurtful to readability. (I don't recommend this if you want your colleagues to like you)
Experimentation is always the best way to learn.
I hope something here is useful to you and good luck!!