- Programming paradigms - Object oriented, Functional - Programming design patterns - [Gang of Four](https://en.wikipedia.org/wiki/Gang_of_Four_(band)) - Code organisation - Frameworks - Dependencies - Design principles - Components - [Functional](https://en.wikipedia.org/wiki/Functional_requirement) vs. [Non-functional requirements](https://en.wikipedia.org/wiki/Non-functional_requirement) - N-tier Layering - Microservices - Messaging - Caching - Load balancing - Performance - Relational and NoSQL databases - [Database design](https://en.wikipedia.org/wiki/Database_design) - [Data model design](https://en.wikipedia.org/wiki/Data_modeling) - API design - Polling and Sockets - User interface design - Networking and Proxies - Scaling! Both [horizontal and vertical](https://www.section.io/blog/scaling-horizontally-vs-vertically/#:~:text=Horizontal%20scaling%20means%20scaling%20by,as%20%E2%80%9Cscaling%20up%E2%80%9D) - Capacity and demand estimations - Storage - Fault tolerance - Maintainability - Extensibility - Accessibility - [WCAG 2.1](https://www.w3.org/TR/WCAG21/) - Security - [OWASP Top Ten](https://owasp.org/www-project-top-ten/#) - Analytics and Machine Learning - Communication - Authentication - [OIDC](https://en.wikipedia.org/wiki/OpenID), [WsFederation](https://en.wikipedia.org/wiki/WS-Federation), [JWT](https://jwt.io/) [[Big-O]] ## Sources [# Five ways to improve your system design and software architecture skills](https://www.shedloadofcode.com/blog/five-ways-to-improve-your-system-design-and-software-architecture-skills#know-the-core-concepts-of-system-design)