Hi,<p>so far, I've only worked as a coder in teams and on (very) small projects of my own. In the (near) future I want to (need to) design and manage a larger software project of my own (a fairly complex Django + x project).<p>Since I want to avoid 'stupid' mistakes, adhere to best-practices, and respect (and utilize) the hard work and research that has gone into software design, I'm looking for some good resources (books, classes, ...) to learn the basics of software design and how to plan (larger) software projects.<p>A little bit about myself: I'm a fairly confident coder/'engineer', but my degree is not in CS. Nevertheless, I'm not appalled by 'hard' stuff and I really want to learn.<p>Thank you so much!
This may not be a good introductory overview but will contain a bunch of interesting ideas: <a href="http://aosabook.org/en/index.html" rel="nofollow">http://aosabook.org/en/index.html</a><p>Old but good: <a href="http://sunnyday.mit.edu/16.355/parnas-criteria.html" rel="nofollow">http://sunnyday.mit.edu/16.355/parnas-criteria.html</a><p>More ideas:<p><a href="https://www.infoq.com/presentations/Simple-Made-Easy" rel="nofollow">https://www.infoq.com/presentations/Simple-Made-Easy</a><p><a href="http://misko.hevery.com/2008/07/30/top-10-things-which-make-your-code-hard-to-test/" rel="nofollow">http://misko.hevery.com/2008/07/30/top-10-things-which-make-...</a>
I'd highly recommend Design It!: From Programmer to Software Architect by Michael Keeling. Plenty of practical examples (including a scenario enterprise application thay unfolds during the book), up to date in terms of technologies and approaches such as microservices architectures, cloud etc and just generally very readable. A good grounding to enterprise-class design. It also by nature educates you on leading teams through the design process.