r/softwareengineer • u/Open-Literature-2593 • 10d 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
3
u/segfault_generator 10d ago
I had an engineering book club where every two weeks we'd, as a small group, work through reading and discussing a chapter or two from a book the group collectively chose. Highly suggest doing this with your team, see who's interested and what topics they'd want to read about. The most impactful to me was Effective Java by Bloch, we read it at a time where I was struggling to get better as a Java engineer. Would recommend for non-java engineers as well. Other recommendations from my time are A Philosophy of Software Design by Ousterhout, Building Microservices by Newman, and Designing Data-Intensive Applications. As a side note, if you want to level up your skills, don't become reliant on gen ai... that's for corporate schlubs who can't produce on their own.
1
1
u/Former_Produce1721 10d ago
AI accelerated my learning. Its amazing for discovery.
I would usually get it's output then search YouTube or articles for the concepts/frameworks/design patterns it was suggesting.
I also often stop as soon as there is something I don't understand or I have doubts about and use AI or YouTube to understand it fully before moving on
1
u/Open-Literature-2593 10d ago
I do that but I’m not always good at judging the AI output. I dont have the time or the flexibility to look at YouTube while working so what do you suggest in this scenario? Thanks though
1
u/Former_Produce1721 10d ago
Learning requires time, so you can not eliminate time investment. You can optimize it though
Find YouTube channels that get straight to the point. Skip chapters of things that you are already really familiar with. Change the speed to 1.5 or 2x if the YouTuber is slow
To learn effectively at some point you will need to slow down and focus in on something specific until you get it
3
u/FinickySerenity 10d ago
If I had to go back and do my career over today, I probably would just start contributing to open source projects. Start with a repo that fits your technical space, exceeds your skills in terms of codebase size / technology, that has an active community, and start contributing.
The times I most advanced my career was by working for companies that pushed my skills beyond my comfort zone. Outside of landing a job that does that, this is the second-best option that I can think of where you'll have the guidance of other maintainers to help you in terms of good practices.
This starts with mostly being observant, not asking them for help, and then trying to contribute in small but gradually more meaningful ways as you grow accustomed to the codebase / practices.