└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # BACKEND ROADMAP WITH DETAIL RESOURCES FOR SELF-LEARNING 2 | 3 | This repository contains some resources that I have learn / read through my journey to become a Backend Developer. Because I work mainly with Golang, so many of resources are related to this language. 4 | 5 | ## Fundamental 6 | 7 | ### Programming fundamental 8 | 9 | - Courses: 10 | - [CS50: Introduction to Computer Science](https://online-learning.harvard.edu/course/cs50-introduction-computer-science) 11 | - [Ngôn Ngữ Lập Trình C](https://www.youtube.com/playlist?list=PLyiioioEJSxHr5X8RNY3QXUGcjzeZeI7l) 12 | 13 | ### Data Structure & Algorithms 14 | 15 | ## Programming Languages 16 | 17 | ### Go 18 | 19 | - Documents 20 | - [A Tour of Go](https://tour.golang.org) 21 | - [Effective Go](https://golang.org/doc/effective_go.html) 22 | - [Go Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments) 23 | - [Modules](https://github.com/golang/go/wiki/Modules) 24 | - [Frequently Asked Questions (FAQ)](https://go.dev/doc/faq) 25 | 26 | - Books: 27 | - [The Go Programming Language - Alan A. A. Donovan, Brian W. Kernighan](https://www.goodreads.com/book/show/25080953-the-go-programming-language) 28 | - [Go in Action - William Kennedy](https://www.goodreads.com/book/show/22727352-go-in-action) 29 | - [Go Programming Blueprints](https://www.amazon.com/Programming-Blueprints-real-world-production-ready-cutting-edge-ebook/dp/B01GQCQ8OW) 30 | - [Learn Go with Tests](https://quii.gitbook.io/learn-go-with-tests/) 31 | - [Build Web Application with Golang](https://github.com/astaxie/build-web-application-with-golang) 32 | 33 | - Websites: 34 | - [The Go Blog](https://blog.golang.org) 35 | - [Dave Cheney](https://dave.cheney.net) 36 | - [Go by Example](https://gobyexample.com) 37 | 38 | - Communities: 39 | - [Reddit - The Go Programming Language](https://www.reddit.com/r/golang/) 40 | 41 | - Others: 42 | - [The Zen of Go - Dave Cheney](https://dave.cheney.net/2020/02/23/the-zen-of-go) 43 | - [SOLID Go Desgin - Dave Cheney](https://dave.cheney.net/2016/08/20/solid-go-design) 44 | - [Practical Go - Dave Cheney](https://dave.cheney.net/practical-go) 45 | - [Awesome Go](https://github.com/avelino/awesome-go) 46 | - [When in Go, do as Gophers do - Fumitoshi Ukai](https://talks.golang.org/2014/readability.slide) 47 | - [Twelve Go Best Practices - Francesc Campoy Flores](https://talks.golang.org/2013/bestpractices.slide) 48 | - [Uber Go Style Guide](https://github.com/uber-go/guide/blob/master/style.md) 49 | - [Go Modules by Example](https://github.com/go-modules-by-example/index) 50 | - [Standard Package Layout - Ben Johnson](https://medium.com/@benbjohnson/standard-package-layout-7cdbc8391fc1) 51 | - [GopherCon 2018: Kat Zien - How Do You Structure Your Go Apps](https://www.youtube.com/watch?v=oL6JBUk6tj0) 52 | - Slide: [github.com/katzien/talks/how-do-you-structure-your-apps](https://github.com/katzien/talks/tree/master/how-do-you-structure-your-apps) 53 | 54 | ### Java 55 | 56 | - Books: 57 | - [Effective Java - Joshua Bloch](https://www.amazon.com/Effective-Java-Joshua-Bloch/dp/0134685997) 58 | 59 | - Others: 60 | - [Hackerrank - Java](https://www.hackerrank.com/domains/java) 61 | 62 | ### C / C++ 63 | 64 | - Books: 65 | - [The C Programming Language - Brian W. Kernighan, Dennis M. Ritchie](https://www.goodreads.com/book/show/515601.The_C_Programming_Language) 66 | 67 | ## Operating System 68 | 69 | ## Database 70 | 71 | ### General 72 | 73 | - Books: 74 | - [Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems - Martin Kleppmann](https://www.goodreads.com/book/show/23463279-designing-data-intensive-applications) 75 | 76 | ### SQL Database 77 | 78 | #### PostgreSQL 79 | 80 | - Others: 81 | - [Postgres Wiki - Don't Do This](https://wiki.postgresql.org/wiki/Don't_Do_This) 82 | 83 | ### NoSQL Database 84 | 85 | - Others: 86 | - [GOTO Conference - Introduction to NoSQL - Martin Fowler](https://www.youtube.com/watch?v=qI_g07C_Q5I&t=1110s) 87 | 88 | ## Software Design and Development 89 | 90 | ### General 91 | 92 | - Books: 93 | - [Software Engineering at Google: Lessons Learned from Programming Over Time](https://www.goodreads.com/en/book/show/48816586-software-engineering-at-google) 94 | 95 | ### Design Principles 96 | 97 | ### Design Patterns 98 | 99 | - Books: 100 | - [Head First Design Patterns: A Brain-Friendly Guide](https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124) 101 | - [Design Patterns: Elements of Reusable Object-Oriented Software - Erich Gamma, Ralph Johnson, John Vlissides, Richard Helm](https://www.goodreads.com/book/show/85009.Design_Patterns) 102 | 103 | ### Architectures 104 | 105 | - Books: 106 | - [Clean Architecture - Robert C. Martin](https://www.goodreads.com/book/show/18043011-clean-architecture) 107 | - [Patterns of Enterprise Application Architecture - Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford ](https://www.goodreads.com/book/show/70156.Patterns_of_Enterprise_Application_Architecture) 108 | - [Domain-Driven Design: Tackling Complexity in the Heart of Software - Eric Evans](https://www.goodreads.com/book/show/179133.Domain_Driven_Design) 109 | - [Domain-Driven Design Quickly - Floyd Marinescu](https://www.goodreads.com/book/show/2558105.Domain_Driven_Design_Quickly) 110 | 111 | - Courses: 112 | - [Udacity - Software Architecture & Design](https://classroom.udacity.com/courses/ud821) 113 | 114 | - Others: 115 | - [Hackernoon - How to Design a Web Application: Software Architecture 101 - Fahim ul Haq](https://hackernoon.com/how-to-design-a-web-application-software-architecture-101-eecy36o5) 116 | - [Github - The System Design Primer](https://github.com/donnemartin/system-design-primer) 117 | - [Github - Awesome Scalability](https://github.com/binhnguyennus/awesome-scalability) 118 | - [Microsoft - Architecture styles](https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/) 119 | - [GOTO Conference - The Many Meanings of Event-Driven Architecture - Martin Fowler](https://www.youtube.com/watch?v=STKCRSUsyP0&t) 120 | - [GOTO Conference - 3 Common Pitfalls in Microservice Integration & How to Avoid Them - Bernd Rücker](https://www.youtube.com/watch?v=7uvK4WInq6k) 121 | - [GOTO Conference - Five Things Every Developer Should Know about Software Architecture - Simon Brown](https://www.youtube.com/watch?v=9Az0q2XHtH8) 122 | - [GOTO Conference - Event-based Architecture and Implementations with Kafka and Atom - Eberhard Wolff](https://www.youtube.com/watch?v=Ecg7lvvm8aU) 123 | - [GOTO Conference - Modular Monoliths - Simon Brown](https://www.youtube.com/watch?v=5OjqD-ow8GE) 124 | - [GOTO Conference - Not Just Events: Developing Asynchronous Microservices - Chris Richardson](https://www.youtube.com/watch?v=kyNL7yCvQQc) 125 | - [InfoQ - Mastering Chaos - A Netflix Guide to Microservices - Josh Evans](https://www.youtube.com/watch?v=CZ3wIuvmHeM) 126 | - [InfoQ - Design Microservice Architectures the Right Way - Michael Bryzek](https://www.youtube.com/watch?v=j6ow-UemzBc) 127 | 128 | ### Software Development 129 | 130 | - Books: 131 | - [Clean Code: A Handbook of Agile Software Craftsmanship - Robert C. Martin](https://www.goodreads.com/book/show/3735293-clean-code) 132 | - [Code Complete - Steve McConnell](https://www.goodreads.com/book/show/4845.Code_Complete) 133 | - [Working Effectively with Legacy Code - Michael C. Feathers](https://www.goodreads.com/book/show/44919.Working_Effectively_with_Legacy_Code) 134 | 135 | - Courses: 136 | - [Udacity - Software Development Process](https://classroom.udacity.com/courses/ud805) 137 | 138 | - Websites: 139 | - [The Twelve-Factor App](https://12factor.net) 140 | 141 | - Others: 142 | - [12 Fractured Apps - Kelsey Hightower](https://medium.com/@kelseyhightower/12-fractured-apps-1080c73d481c) 143 | 144 | ### Refactoring 145 | 146 | - Books: 147 | - [Refactoring: Improving the Design of Existing Code](https://www.goodreads.com/book/show/44936.Refactoring) 148 | 149 | ### Testing 150 | 151 | - Books: 152 | - [The Art of Unit Testing - Roy Osherove](https://www.goodreads.com/book/show/6487349-the-art-of-unit-testing) 153 | - [Test Driven Development: By Example - Kent Beck](https://www.goodreads.com/book/show/387190.Test_Driven_Development) 154 | - [Growing Object-Oriented Software, Guided by Tests - Steve Freeman, Nat Pryce](https://www.goodreads.com/book/show/4268826-growing-object-oriented-software-guided-by-tests) 155 | 156 | - Others: 157 | - [Eradicating Non-Determinism in Tests - Martin Fowler](https://martinfowler.com/articles/nonDeterminism.html) 158 | - [GOTO Conference - Millisecond Full Stack Acceptance Tests - Aslak Hellesøy](https://www.youtube.com/watch?v=sUclXYMDI94) 159 | 160 | ### Monitoring 161 | 162 | - Others: 163 | - [The Zen of Prometheus](https://the-zen-of-prometheus.netlify.app) 164 | - [Google - Monitoring Distributed Systems](https://sre.google/sre-book/monitoring-distributed-systems/) 165 | - [GOTO Conference - Live Kubernetes Debugging with the Elastic Stack - Philipp Krenn](https://www.youtube.com/watch?v=LvhIMkr0rXg) 166 | - [GOTO Conference - Observability, Distributed Tracing & the Complex World - Dave McAllister](https://www.youtube.com/watch?v=2nTJSsBngao) 167 | - [Grafana Best practices](https://grafana.com/docs/grafana/latest/best-practices/) 168 | - [Worth a Look: Public Grafana Dashboards](https://grafana.com/blog/2019/05/16/worth-a-look-public-grafana-dashboards/) 169 | 170 | ### CI/CD 171 | 172 | - Books: 173 | - [Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation - Jez Humble, David Farley](https://www.goodreads.com/book/show/8686650-continuous-delivery) 174 | 175 | - Courses: 176 | - [Udacity - Intro to DevOps](https://classroom.udacity.com/courses/ud611) 177 | 178 | - Others: 179 | - [GOTO Conference - Modern Continuous Delivery - Ken Mugrage](https://www.youtube.com/watch?v=lBi85lNmKFw) 180 | - [CALMS Framework - Ian Buchanan](https://www.atlassian.com/devops/frameworks/calms-framework) 181 | - [GitOps](https://www.gitops.tech) 182 | 183 | ### Container 184 | 185 | - Courses: 186 | - [Udacity - Scalable Microservices with Kubernetes](https://classroom.udacity.com/courses/ud615) 187 | 188 | ### Search Engine 189 | 190 | ### Message Broker 191 | 192 | - Others: 193 | - [Should You Put Several Event Types in the Same Kafka Topic? - Martin Kleppmann](https://www.confluent.io/blog/put-several-event-types-kafka-topic/) 194 | - [Top 5 Things Every Apache Kafka Developer Should Know - Bill Bejeck](https://www.confluent.io/blog/5-things-every-kafka-developer-should-know/) 195 | 196 | ### Caching 197 | 198 | ## Web Development 199 | 200 | ### Internet 201 | 202 | ### HTTP/HTTPS 203 | 204 | - Courses: 205 | - [Udacity - Client-Server Communication](https://classroom.udacity.com/courses/ud897) 206 | 207 | - Others: 208 | - [GOTO Conference - HTTP/3 Is Next Generation HTTP. Is It QUIC Enough? - Daniel Stenberg](https://www.youtube.com/watch?v=pUxyukqoXR4) 209 | 210 | ### Web Sockets 211 | 212 | ### Web Servers 213 | 214 | - Courses 215 | - [Udacity - Configuring Linux Web Servers](https://classroom.udacity.com/courses/ud299) 216 | 217 | ### Web APIs 218 | 219 | #### General 220 | 221 | - Books 222 | - [Web API Design: The Missing Link](https://cloud.google.com/files/apigee/apigee-web-api-design-the-missing-link-ebook.pdf) 223 | 224 | - Others: 225 | - [Google API Design Guide](https://cloud.google.com/apis/design) 226 | - [InfoQ - How to Design a Good API & Why it Matters - Joshua Bloch](https://www.infoq.com/presentations/effective-api-design/) 227 | - [Joshua Bloch: Bumper-Sticker API Design](https://www.infoq.com/articles/API-Design-Joshua-Bloch/) 228 | 229 | #### REST 230 | 231 | - Others: 232 | - [Stripe API Reference](https://stripe.com/docs/api) 233 | - [GitHub API Reference](https://docs.github.com/en/rest/reference) 234 | 235 | #### GraphQL 236 | 237 | - Document: 238 | - [GraphQL](https://graphql.org) 239 | 240 | #### gRPC 241 | 242 | - Document: 243 | - [gRPC](https://grpc.io) 244 | 245 | ### Web Security 246 | 247 | - Courses: 248 | - [Authentication & Authorization: OAuth](https://classroom.udacity.com/courses/ud330) 249 | 250 | - Others: 251 | - [JSON Web Tokens](https://auth0.com/docs/tokens/concepts/jwts) 252 | - [The HTTPS-Only Standard](https://https.cio.gov) 253 | 254 | ## Developer Tools 255 | 256 | ### Git 257 | 258 | - Courses: 259 | - [Udacity - Version Control With Git](https://www.udacity.com/course/version-control-with-git--ud123) 260 | 261 | - Others: 262 | - [The Workflow of Version Control](https://www.git-tower.com/learn/cheat-sheets/vcs-workflow) 263 | - [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) 264 | 265 | ### Bash & Terminal 266 | 267 | - Course: 268 | - [Linux Command Line Basics](https://classroom.udacity.com/courses/ud595) 269 | 270 | ### SSH 271 | 272 | ## Others 273 | 274 | ### Licenses 275 | 276 | ### Semactic Versioning 277 | 278 | - Document: 279 | - [Semantic Versioning](https://semver.org) 280 | 281 | ### Character Encodings --------------------------------------------------------------------------------