{"id":59951,"url":"https://github.com/raychongtk/awesome-software-engineer","name":"awesome-software-engineer","description":"something that your school doesn't teach you","projects_count":74,"last_synced_at":"2026-06-11T23:00:24.060Z","repository":{"id":155114114,"uuid":"604673444","full_name":"raychongtk/awesome-software-engineer","owner":"raychongtk","description":"something that your school doesn't teach you","archived":false,"fork":false,"pushed_at":"2023-10-17T12:23:38.000Z","size":39035,"stargazers_count":36,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-26T08:34:42.971Z","etag":null,"topics":["awesome-list","awesome-resources","backend","software-architecture","software-development","software-engineering"],"latest_commit_sha":null,"homepage":"https://awesomesoftwareengineer.com/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/raychongtk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-21T14:57:32.000Z","updated_at":"2025-12-07T21:01:22.000Z","dependencies_parsed_at":"2023-10-04T13:20:27.976Z","dependency_job_id":"d48a3ff8-533d-49d2-9feb-72d32ab1aca9","html_url":"https://github.com/raychongtk/awesome-software-engineer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/raychongtk/awesome-software-engineer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raychongtk%2Fawesome-software-engineer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raychongtk%2Fawesome-software-engineer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raychongtk%2Fawesome-software-engineer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raychongtk%2Fawesome-software-engineer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raychongtk","download_url":"https://codeload.github.com/raychongtk/awesome-software-engineer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raychongtk%2Fawesome-software-engineer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34221150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-05-08T00:00:22.463Z","updated_at":"2026-06-11T23:00:24.060Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Coding and Software Design","Microservices","Architecture","API Design","Security","General Software Engineering"],"sub_categories":[],"readme":"\u003cdiv align=\"center\" width=\"100%\"\u003e\n    \u003ch1\u003eAwesome Software Engineer\u003c/h1\u003e\n    \u003cimg width=\"33%\" src=\"./resources/awesome-software-engineer.png\"\u003e\n\u003c/div\u003e\nAwesome Software Engineer is a community to share software engineering topics and inspires software engineers. Check out my website: https://blog.awesomesoftwareengineer.com/\n\n## Microservices\n- [Microservices Documentation](https://blog.awesomesoftwareengineer.com/p/centralize-microservices-api-documentation)\n- [The Path to Microservices: Opening Chapter](https://blog.awesomesoftwareengineer.com/p/the-path-to-microservices-opening)\n- [The Path to Microservices: What are Microservices?](https://blog.awesomesoftwareengineer.com/p/what-are-microservices)\n- [The Path to Microservices: Do You Really Need Microservices Architecture?](https://blog.awesomesoftwareengineer.com/p/do-you-need-microservices-architecture)\n- [The Path to Microservices: CAP Theorem](https://blog.awesomesoftwareengineer.com/p/cap-theorem)\n- [The Path to Microservices: Service Discovery](https://blog.awesomesoftwareengineer.com/p/service-discovery)\n- [The Path to Microservices: CI/CD](https://blog.awesomesoftwareengineer.com/p/microservice-ci-cd)\n- [The Path to Microservices: API Gateway Aggregation Pattern](https://blog.awesomesoftwareengineer.com/p/api-gateway-aggregation-pattern)\n- [Microservices ecosystem](https://blog.awesomesoftwareengineer.com/p/microservices-ecosystem)\n- [The pains of microservices - Part 1](https://blog.awesomesoftwareengineer.com/p/the-pains-of-microservices-part-1)\n- [The pains of microservices - Part 2](https://blog.awesomesoftwareengineer.com/p/the-pains-of-microservices-part-2)\n- [Distributed tracing and distributed logging](https://blog.awesomesoftwareengineer.com/p/distributed-tracing-and-distributed)\n## Architecture\n- [Understand Observability](https://blog.awesomesoftwareengineer.com/p/understand-observability)\n- [Log Monitoring and Alerting](https://blog.awesomesoftwareengineer.com/p/log-monitoring-and-alerting)\n- [4 Popular Cache Patterns](https://blog.awesomesoftwareengineer.com/p/cache-strategies)\n- [Cache delete strategy of the cache-aside pattern](https://blog.awesomesoftwareengineer.com/p/cache-delete-strategy)\n- [Handling jobs efficiently](https://blog.awesomesoftwareengineer.com/p/scheduled-job-vs-delay-queue)\n- [API vs Webhook](https://blog.awesomesoftwareengineer.com/p/api-vs-webhook)\n- [Understanding the software complexity](https://blog.awesomesoftwareengineer.com/p/software-complexity)\n- [Why do we need Webhook?](https://blog.awesomesoftwareengineer.com/p/why-do-we-need-webhook)\n- [Understanding system bottleneck](https://blog.awesomesoftwareengineer.com/p/understanding-system-bottleneck)\n- [What is Event Driven Architecture?](https://blog.awesomesoftwareengineer.com/p/what-is-event-driven-architecture-26f)\n- [Event-Driven Payment Architecture](https://blog.awesomesoftwareengineer.com/p/event-driven-payment-architecture)\n- [Boost API read performance by 10x with cache](https://blog.awesomesoftwareengineer.com/p/boost-api-read-performance-by-10x)\n- [How does Lalamove scale its Communication Platform?](https://blog.awesomesoftwareengineer.com/p/how-does-lalamove-scale-its-communication)\n- [Redesign your development workflow with Mock Service](https://blog.awesomesoftwareengineer.com/p/redesign-development-workflow-with-mock-service)\n- [Architecting for Simplicity](https://blog.awesomesoftwareengineer.com/p/architecting-for-simplicity)\n- [Architecture Mystery](https://blog.awesomesoftwareengineer.com/p/architecture-mystery)\n- [Consistency and Availability](https://blog.awesomesoftwareengineer.com/p/consistency-and-availability)\n- [Pub/Sub Practical Guide: Use Case](https://blog.awesomesoftwareengineer.com/p/pubsub-practical-guide-use-case)\n- [Pub/Sub Practical Guide: Trade-off](https://blog.awesomesoftwareengineer.com/p/pubsub-practical-guide-trade-off)\n- [Why do we need architecture?](https://blog.awesomesoftwareengineer.com/p/why-do-we-need-architecture)\n- [Design for Adaptability](https://blog.awesomesoftwareengineer.com/p/design-for-adaptability)\n- [Exploring Architecture: What Does It Really Mean?](https://blog.awesomesoftwareengineer.com/p/exploring-architecture-what-does)\n## Coding and Software Design\n- [Duplication is better than Wrong Abstraction](https://blog.awesomesoftwareengineer.com/p/duplication-is-better-than-wrong-abstraction)\n- [Design Principles: Simple is the best](https://blog.awesomesoftwareengineer.com/p/simple-is-the-best)\n- [Code Review: Code Author Journey](https://blog.awesomesoftwareengineer.com/p/code-review-code-author-journey)\n- [Code Review: Reviewer Journey](https://blog.awesomesoftwareengineer.com/p/code-review-reviewer-journey)\n- [Choose the right way to create objects](https://blog.awesomesoftwareengineer.com/p/constructor-vs-static-factory-method)\n- [Build a complex object](https://blog.awesomesoftwareengineer.com/p/builder-pattern)\n- [Gracefully handle dynamic behaviors in the same category](https://blog.awesomesoftwareengineer.com/p/strategy-pattern)\n- [Avoid throwing exceptions as control flow](https://blog.awesomesoftwareengineer.com/p/throwing-exceptions-vs-control-flow)\n- [Backward Compatibility Thinking](https://blog.awesomesoftwareengineer.com/p/backward-compatibility-thinking)\n- [Backward compatibility trade-off](https://blog.awesomesoftwareengineer.com/p/backward-compatibility-trade-off)\n- [Design Space Optimization](https://blog.awesomesoftwareengineer.com/p/design-space-optimization)\n## API Design\n- [Everything about RESTful API](https://blog.awesomesoftwareengineer.com/p/everything-about-restful-api)\n- [Let UI drive API design](https://blog.awesomesoftwareengineer.com/p/let-ui-drives-api-deisgn)\n- [Designing API with the right granularity](https://blog.awesomesoftwareengineer.com/p/designing-api-with-the-right-granularity)\n- [How to handle API backward compatibility?](https://blog.awesomesoftwareengineer.com/p/how-to-handle-api-backward-compatibility)\n- [Improve performance when retrieving large dataset](https://blog.awesomesoftwareengineer.com/p/improve-performance-when-retrieving)\n- [Do you use pagination right?](https://blog.awesomesoftwareengineer.com/p/do-you-use-pagination-right)\n- [Enhancing API Performance Through Batch Requests](https://blog.awesomesoftwareengineer.com/p/enhancing-api-performance-through)\n## Security\n- [What is JWT?](https://blog.awesomesoftwareengineer.com/p/what-is-jwt)\n- [OAuth Explained](https://blog.awesomesoftwareengineer.com/p/oauth-explained)\n- [Never Trust Your Frontend When Developing API](https://blog.awesomesoftwareengineer.com/p/never-trust-your-frontend-when-developing)\n- [Designing Authentication for Your Public API Platform](https://blog.awesomesoftwareengineer.com/p/authentication-for-external-api-platform)\n- [How To Protect Your Code On The Client Side?](https://blog.awesomesoftwareengineer.com/p/how-to-protect-your-code-on-the-client)\n- [Security Practices: Blocklist vs Allowlist](https://blog.awesomesoftwareengineer.com/p/blocklist-vs-allowlist)\n- [Software Supply Chain Security](https://blog.awesomesoftwareengineer.com/p/software-supply-chain-security)\n- [Passwordless Authentication](https://blog.awesomesoftwareengineer.com/p/passwordless-authentication)\n- [Secure web application with CSP](https://blog.awesomesoftwareengineer.com/p/content-security-policy)\n- [What is two factors authentication?](https://blog.awesomesoftwareengineer.com/p/two-factors-authentication)\n- [How does an authenticator work?](https://blog.awesomesoftwareengineer.com/p/how-does-an-authenticator-work)\n- [Hashing vs Encryption vs Encoding](https://blog.awesomesoftwareengineer.com/p/hashing-vs-encryption-vs-encoding)\n- [SMS Pumping](https://blog.awesomesoftwareengineer.com/p/sms-pumping)\n## General Software Engineering\n- [Any problem in computer science can be solved by another layer of indirection](https://blog.awesomesoftwareengineer.com/p/solve-problem-by-adding-another-layer)\n- [Everything is a trade-off](https://blog.awesomesoftwareengineer.com/p/everything-is-a-trade-off)\n- [How do chatbots boost your productivity?](https://blog.awesomesoftwareengineer.com/p/chatbot-driven-development)\n- [3 non-technical books that influenced me](https://blog.awesomesoftwareengineer.com/p/3-non-technical-books-that-influenced)\n- [From chaos to clarity](https://blog.awesomesoftwareengineer.com/p/from-chaos-to-clarity)\n- [Tips for writing good documentation](https://blog.awesomesoftwareengineer.com/p/tips-for-writing-good-documentation)\n- [Navigating Complex Problem Spaces: Breakdown and Direction](https://blog.awesomesoftwareengineer.com/p/navigating-complex-problem-spaces)\n- [How do you delegate your tasks to others?](https://blog.awesomesoftwareengineer.com/p/how-do-you-delegate-your-tasks-to)\n- [Serialization vs Parallelization](https://blog.awesomesoftwareengineer.com/p/serialization-vs-parallelization)\n\n\u003cbr\u003e\n\u003ccenter\u003e\n\u003ca class=\"bmc-button\" target=\"_blank\" href=\"https://www.buymeacoffee.com/raychongtk\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/BMC-btn-logo.svg\" alt=\"Buy me a coffee\"\u003e\u003cspan style=\"margin-left:5px\"\u003eBuy me a coffee\u003c/span\u003e\u003c/a\u003e\n\u003c/center\u003e","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/raychongtk%2Fawesome-software-engineer/projects"}