Hello! I'd say I'm a fairly intermediate programmer and use TDD and refactoring by uncle bob (opinions vary)..
I still have problems defining a clear Software architecture beforehand and during the engineering period. Design patterns are nice but I somtimes find it hard to implement them at the beginning or think later on of them, that they might have worked in szenario x. I want to prevent spaghetti code, especially in always growing code repositories.
Do you have any tips to that topic or recommend any books I can ready and study?