How can I learn to better design software? Any book recommendations or general tips?
Just some general comments not knowing those answers, this is usually what a mentor or team lead is there to help you with, they guide you and show you why one solution might be better than another etc. Read architecture blogs, read about failures as much as successes, read postmortems from startups they are great learning. Seriously study well design open source software that most people agree is done well, as well as bad. Studying both will show you patterns you are using and shouldn't be or ones you aren't using and should be etc. That is honestly the best way, open source software makes studying larger systems so much better today then when I was learning.
I do suggest you study some of Fowlers teachings/books https://martinfowler.com/ as he IMO is well balanced and sees value in many different architecture styles based on the problem you are solving. There are others of course, but he is the first that comes to mind for building larger or more complex systems.
The goal of software design/architecture is to use the least complex solution you can to solve the problem, that makes the software the easiest to maintain and usually makes it performant. There are exceptions of course, but that is the general rule I follow. Also, minimize unnecessary external dependencies which will also keep your code easier to change and maintain, the more external dependencies the more chance a simple change turns into touching larger sections of code.
Last point, we all look back and problems we have solved later and are like geez, I was an idiot I could've done XYZ instead of ABC and it would have been a lot better. That's normal and is a sign to me that I am continuing to learn, which is good IMO. There are only a few things I look back on and say damn that was perfect and I wouldn't change a thing about it (very few).
Books are great, but nothing beats lessons learned by making mistakes.