|
| 1 | +# Software Development Best Practices |
| 2 | + |
| 3 | +this is a comprehensive collection of essential software engineering practices and |
| 4 | +recommendations. |
| 5 | + |
| 6 | +- [Philosophies and Common Practices](#philosophies-and-common-practices) |
| 7 | +- [System Design](#system-design) |
| 8 | +- [API](#api) |
| 9 | +- [Security](#security) |
| 10 | +- [Languages](#languages) |
| 11 | + - [Go](#go) |
| 12 | + - [JavaScript](#javascript) |
| 13 | + - [PHP](#php) |
| 14 | + - [Python](#python) |
| 15 | + - [Shell Script](#shell-script) |
| 16 | + - [TypeScript](#typescript) |
| 17 | +- [Tools](#tools) |
| 18 | + - [Containerization](#containerization) |
| 19 | + - [Kafka](#kafka) |
| 20 | + - [NoSQL](#nosql) |
| 21 | + - [SQL](#sql) |
| 22 | + - [Testing](#testing) |
| 23 | + |
| 24 | +--- |
| 25 | + |
| 26 | +## Philosophies and Common Practices |
| 27 | + |
| 28 | +- [List of software development philosophies](https://en.wikipedia.org/wiki/List_of_software_development_philosophies) |
| 29 | +- [Programming Principles](https://github.com/webpro/programming-principles) |
| 30 | +- [Google Engineering Practices Documentation](https://google.github.io/eng-practices/) |
| 31 | +- [Professional Programming](https://github.com/charlax/professional-programming) |
| 32 | +- [Hacker Laws](https://github.com/dwmkerr/hacker-laws) |
| 33 | +- [Project Based Learning](https://github.com/tuvtran/project-based-learning) |
| 34 | +- [The Twelve-Factor App](https://12factor.net/) |
| 35 | +- [3factor App](https://3factor.app/) |
| 36 | +- [Conventional Commits](https://conventionalcommits.org/) |
| 37 | + |
| 38 | +## System Design |
| 39 | + |
| 40 | +- [The System Design Primer](https://github.com/donnemartin/system-design-primer) |
| 41 | +- [Architecture Styles](https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/) |
| 42 | +- [Modern Web Apps Architectural Principles](https://docs.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/architectural-principles) |
| 43 | +- [Software Design](https://en.wikipedia.org/wiki/Category:Software_design) |
| 44 | +- [System Design Cheatsheet](https://gist.github.com/vasanthk/485d1c25737e8e72759f) |
| 45 | +- [Building Microservices](https://docs.microsoft.com/en-us/azure/architecture/microservices/) |
| 46 | +- [Patterns of Service-Oriented Architecture](https://multithreaded.stitchfix.com/blog/2017/05/09/patterns-of-service-oriented-architecture/) |
| 47 | +- [Cloud Design Patterns](https://docs.microsoft.com/en-us/azure/architecture/patterns/) |
| 48 | + |
| 49 | +## API |
| 50 | + |
| 51 | +- [Microsoft API Guidelines](https://github.com/microsoft/api-guidelines/blob/vNext/Guidelines.md) |
| 52 | +- [Azure API Design](https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design) |
| 53 | +- [Google API Design Guide](https://cloud.google.com/apis/design/) |
| 54 | +- [Heroku Platform HTTP API Design Guide](https://geemus.gitbooks.io/http-api-design/content/en/index.html) |
| 55 | +- [Google Web API Design: The Missing Link](https://cloud.google.com/files/apigee/apigee-web-api-design-the-missing-link-ebook.pdf) |
| 56 | +- [Zalando RESTful API and Event Scheme Guidelines](https://opensource.zalando.com/restful-api-guidelines/) |
| 57 | +- [HTTP API Design Guide](https://geemus.gitbooks.io/http-api-design/content/en/) |
| 58 | +- [OWASP API Security Project](https://owasp.org/www-project-api-security/) |
| 59 | +- [API Security Best Practices](https://github.com/GitGuardian/APISecurityBestPractices) |
| 60 | +- [API Security Checklist](https://github.com/shieldfy/API-Security-Checklist) |
| 61 | + |
| 62 | +## Security |
| 63 | + |
| 64 | +- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/) |
| 65 | +- [Security Principles](https://infosec.mozilla.org/fundamentals/security_principles.html) |
| 66 | +- [Web Security Guidelines](https://infosec.mozilla.org/guidelines/web_security) |
| 67 | +- [WebAppSec/Secure Coding Guidelines](https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines) |
| 68 | +- [API Security Checklist](https://github.com/shieldfy/API-Security-Checklist) |
| 69 | +- [OWASP API Security Project](https://owasp.org/www-project-api-security/) |
| 70 | +- [API Security Best Practices](https://github.com/GitGuardian/APISecurityBestPractices) |
| 71 | +- [Web Developer Security Checklist](https://github.com/virajkulkarni14/WebDeveloperSecurityChecklist) |
| 72 | + |
| 73 | +## Languages |
| 74 | + |
| 75 | +### Go |
| 76 | + |
| 77 | +- [Google's Go Style Guide](https://google.github.io/styleguide/go/index) |
| 78 | +- [Uber Go Style Guide](https://github.com/uber-go/guide/blob/master/style.md) |
| 79 | +- [Thanos Coding Style Guide](https://github.com/thanos-io/thanos/blob/main/docs/contributing/coding-style-guide.md) |
| 80 | +- [Effective Go](https://go.dev/doc/effective_go) |
| 81 | +- [Go Proverbs by Rob Pike](https://go-proverbs.github.io/) |
| 82 | +- [Go Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments#go-code-review-comments) |
| 83 | +- [The Zen of Go](https://the-zen-of-go.netlify.app/) |
| 84 | +- [Go best practices, six years in](https://peter.bourgon.org/go-best-practices-2016/) |
| 85 | +- [Knowledge Base for Go Programming](https://go101.org/) |
| 86 | +- [Clean Go Code](https://github.com/Pungyeon/clean-go-article) |
| 87 | +- [Practical Go: Real world advice for writing maintainable Go programs](https://dave.cheney.net/practical-go/presentations/qcon-china.html) |
| 88 | +- [Twelve Go Best Practices from a gopher at Google](https://talks.golang.org/2013/bestpractices.slide) |
| 89 | +- [Modern Business Software in Go](https://threedots.tech/series/modern-business-software-in-go/) |
| 90 | +- [Darker Corners of Go](https://rytisbiel.com/2021/03/06/darker-corners-of-go/) |
| 91 | +- [Wild Workouts DDD](https://github.com/ThreeDotsLabs/wild-workouts-go-ddd-example) |
| 92 | +- [How I write HTTP services after eight years](https://pace.dev/blog/2018/05/09/how-I-write-http-services-after-eight-years.html) |
| 93 | +- [Design Patterns in Go](https://github.com/RefactoringGuru/design-patterns-go) |
| 94 | +- [Designing Go Libraries: The Talk: The Article](https://abhinavg.net/2022/12/06/designing-go-libraries/) |
| 95 | +- [Data Race Patterns in Go](https://www.uber.com/en-US/blog/data-race-patterns-in-go/) |
| 96 | +- [4 practical principles of high-quality database integration tests in Go](https://threedots.tech/post/database-integration-testing/) |
| 97 | +- [What can be summarized from 100 Go Mistakes?](https://www.sobyte.net/post/2023-05/summarized-from-100-go-mistakes/) |
| 98 | +- [Go memory ballast: How I learnt to stop worrying and love the heap](https://blog.twitch.tv/en/2019/04/10/go-memory-ballast-how-i-learnt-to-stop-worrying-and-love-the-heap/) |
| 99 | +- [Profiling in Go: A Practical Guide](https://nyadgar.com/posts/go-profiling-like-a-pro/) |
| 100 | +- [Mastering SOLID Principles with Go Examples](https://packagemain.tech/p/mastering-solid-principles-with-go) |
| 101 | +- [gRPC: Anti-Patterns of Client creation](https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md) |
| 102 | + |
| 103 | +### JavaScript |
| 104 | + |
| 105 | +- [JS the Right Way](https://github.com/braziljs/js-the-right-way) |
| 106 | +- [Principles of Writing Consistent, Idiomatic JavaScript](https://github.com/rwaldron/idiomatic.js) |
| 107 | +- [Project Guidelines](https://github.com/elsewhencode/project-guidelines) |
| 108 | +- [Clean Code](https://github.com/ryanmcdermott/clean-code-javascript) |
| 109 | +- [JavaScript Design Patterns for Humans](https://github.com/sohamkamani/javascript-design-patterns-for-humans) |
| 110 | +- [Patterns For Large-Scale JavaScript Application Architecture](https://addyosmani.com/largescalejavascript/) |
| 111 | +- [Spellbook of Modern webdev](https://github.com/dexteryy/spellbook-of-modern-webdev) |
| 112 | +- [Node.js Best Practices](https://github.com/goldbergyoni/nodebestpractices) |
| 113 | +- [10 best practices to containerize Node.js web applications with Docker](https://snyk.io/blog/10-best-practices-to-containerize-nodejs-web-applications-with-docker/) |
| 114 | + |
| 115 | +### PHP |
| 116 | + |
| 117 | +- [PHP: The Right Way](https://phptherightway.com/) |
| 118 | +- [Best Practices for Modern PHP Development](https://www.airpair.com/php/posts/best-practices-for-modern-php-development) |
| 119 | +- [PHP Standards Recommendations](https://www.php-fig.org/psr/) |
| 120 | +- [Clean Code PHP](https://github.com/jupeter/clean-code-php) |
| 121 | +- [Modern PHP Without a Framework](https://kevinsmith.io/modern-php-without-a-framework) |
| 122 | +- [Laravel & PHP Guidelines](https://spatie.be/guidelines/laravel-php) |
| 123 | +- [Refactoring PHP](https://christoph-rumpel.com/2020/8/refactoring-php) |
| 124 | +- [Modern PHP Security](https://labs.detectify.com/2020/08/13/modern-php-security-part-1-bug-classes/) |
| 125 | +- [A decoupled PHP architecture inspired by the Clean Architecture](https://medium.com/engenharia-arquivei/a-decoupled-php-architecture-inspired-by-the-clean-architecture-788b30ab52c2) |
| 126 | +- [The Symfony Framework Best Practices](https://symfony.com/doc/current/best_practices.html) |
| 127 | +- [PHP Internals Book](https://www.phpinternalsbook.com/) |
| 128 | +- **Design Patterns** |
| 129 | + - [DesignPatternsPHP](https://designpatternsphp.readthedocs.io/en/latest/) |
| 130 | + - [Design Patterns for Humans](https://github.com/kamranahmedse/design-patterns-for-humans) |
| 131 | + - [Design Patterns in PHP](https://github.com/RefactoringGuru/design-patterns-php/) |
| 132 | +- **DDD** |
| 133 | + - [Practical CQRS, DDD, ADR, hexagonal architecture](https://github.com/ferrius/ddd-cqrs-example) |
| 134 | + - [Domain-Driven Design in a PHP project using Symfony](https://github.com/jorge07/ddd-playground/) |
| 135 | + - [Domain-driven design e-shop cart demonstration](https://github.com/simara-svatopluk/cart) |
| 136 | +- **Unit Testing** |
| 137 | + - [Unit testing tips by examples in PHP](https://github.com/sarven/unit-testing-tips) |
| 138 | + |
| 139 | +### Python |
| 140 | + |
| 141 | +- [Python Best Practices Guidebook](https://github.com/realpython/python-guide) |
| 142 | +- [Python Patterns](https://github.com/faif/python-patterns) |
| 143 | +- [The Zen of Python (PEP 20)](https://www.python.org/dev/peps/pep-0020/) |
| 144 | +- [Design Patterns in Python](https://github.com/RefactoringGuru/design-patterns-python) |
| 145 | +- [Google Python Style Guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) |
| 146 | + |
| 147 | +### Shell Script |
| 148 | + |
| 149 | +- [Shell Script Best Practices](https://sharats.me/posts/shell-script-best-practices/) |
| 150 | + |
| 151 | +### TypeScript |
| 152 | + |
| 153 | +- [Design Patterns in TypeScript](https://github.com/RefactoringGuru/design-patterns-typescript) |
| 154 | + |
| 155 | +## Tools |
| 156 | + |
| 157 | +### Containerization |
| 158 | + |
| 159 | +- [Best practices for building containers](https://cloud.google.com/architecture/best-practices-for-building-containers) |
| 160 | +- [Docker development best practices](https://docs.docker.com/develop/dev-best-practices/) |
| 161 | +- [Kubernetes production best practices](https://learnk8s.io/production-best-practices/) |
| 162 | +- [Docker Best Practices: Choosing Between RUN, CMD, and ENTRYPOINT](https://www.docker.com/blog/docker-best-practices-choosing-between-run-cmd-and-entrypoint/) |
| 163 | + |
| 164 | +### Kafka |
| 165 | + |
| 166 | +- [The Top 10 Takeaways from Nearly 200 Kafka Experts](https://www.confluent.io/blog/top-10-kafka-use-cases-lessons-guides-from-200-experts/) |
| 167 | +- [Top 5 Things Every Apache Kafka Developer Should Know](https://www.confluent.io/blog/5-things-every-kafka-developer-should-know/) |
| 168 | + |
| 169 | +### NoSQL |
| 170 | + |
| 171 | +- [Redis Best Practices: Expert Tips for High Performance](https://www.dragonflydb.io/guides/redis-best-practices/) |
| 172 | + |
| 173 | +### SQL |
| 174 | + |
| 175 | +- [SQL Style Guide](https://www.sqlstyle.guide/) |
| 176 | +- [Use The Index, Luke](https://use-the-index-luke.com) |
| 177 | +- [Best practices for writing SQL queries](https://www.metabase.com/learn/building-analytics/sql-templates/sql-best-practices) |
| 178 | +- [The Querynomicon: An Introduction to SQL for Weary Data Scientists](https://gvwilson.github.io/sql-tutorial/) |
| 179 | + |
| 180 | +#### PostgreSQL |
| 181 | + |
| 182 | +- [PostgreSQL: Don't Do This](https://wiki.postgresql.org/wiki/Don%27t_Do_This) |
| 183 | +- [Making a Postgres query 1,000 times faster](https://mattermost.com/blog/making-a-postgres-query-1000-times-faster/) |
| 184 | +- [Setting Up PostgreSQL Failover and Failback, the Right Way!](https://www.highgo.ca/2023/04/10/setting-up-postgresql-failover-and-failback-the-right-way/) |
| 185 | +- [PostgreSQL Stories: From slow query to fast](https://render.com/blog/postgresql-slow-query-to-fast-via-stats) |
| 186 | +- [13 Tips to Improve PostgreSQL Insert Performance](https://www.timescale.com/blog/13-tips-to-improve-postgresql-insert-performance/) |
| 187 | + |
| 188 | +#### MySQL |
| 189 | + |
| 190 | +- [Configuring MariaDB for Optimal Performance](https://mariadb.com/kb/en/configuring-mariadb-for-optimal-performance/) |
| 191 | + |
| 192 | +### Testing |
| 193 | + |
| 194 | +- [Unit testing best practices with .NET Core and .NET Standard](https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-best-practices) |
| 195 | +- [Unit Testing Best Practices: How to Get the Most Out of Your Test Automation](https://dzone.com/articles/unit-testing-best-practices-how-to-get-the-most-ou) |
| 196 | +- [Arrange Act Assert](http://wiki.c2.com/?ArrangeActAssert) |
0 commit comments