{"id":57719,"url":"https://github.com/rafaels88/software-development-resources","name":"software-development-resources","description":"Curated list of Software Development resources","projects_count":34,"last_synced_at":"2026-06-10T17:00:22.563Z","repository":{"id":139933276,"uuid":"94629915","full_name":"rafaels88/software-development-resources","owner":"rafaels88","description":"Curated list of Software Development resources","archived":false,"fork":false,"pushed_at":"2017-08-19T17:30:41.000Z","size":28,"stargazers_count":91,"open_issues_count":0,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-05-25T02:02:43.437Z","etag":null,"topics":["awesome-list","resources","software-architecture","software-development","software-engineering","study"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rafaels88.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-06-17T14:48:13.000Z","updated_at":"2025-12-09T13:20:56.000Z","dependencies_parsed_at":"2024-04-08T00:40:38.824Z","dependency_job_id":"a1bd8e39-b3b1-40eb-b158-70428e7a534d","html_url":"https://github.com/rafaels88/software-development-resources","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rafaels88/software-development-resources","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaels88%2Fsoftware-development-resources","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaels88%2Fsoftware-development-resources/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaels88%2Fsoftware-development-resources/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaels88%2Fsoftware-development-resources/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rafaels88","download_url":"https://codeload.github.com/rafaels88/software-development-resources/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rafaels88%2Fsoftware-development-resources/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34161284,"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-10T02:00:07.152Z","response_time":89,"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-04-08T00:00:23.757Z","updated_at":"2026-06-10T17:00:22.564Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Online Resources"],"sub_categories":["Service-Oriented Architecture","Others","Revision Control","Architectural Patterns","Refactoring","Object-Oriented Design","Logging","Database"],"readme":"# Contents\n  - [Summary](#summary)\n  - [Online Resources](#online-resources)\n    - [Architectural Patterns](#architectural-patterns)\n    - [Database](#database)\n    - [Logging](#logging)\n    - [Object-Oriented Design](#object-oriented-design)\n    - [Refactoring](#refactoring)\n    - [Revision Control](#revision-control)\n    - [Service-Oriented Architecture](#service-oriented-architecture)\n    - [Others](#others)\n\n## Summary\n\nThis is a curated list of the most didactic and/or deeply detailed must-read resources about software development.\n\n## Online Resources\n\n  ### Architectural Patterns\n\n  _Is a general, reusable solution to a commonly occurring problem in software\n  architecture within a given context. Architectural patterns are similar to software\n  design pattern but have a broader scope._\n\n  - Articles / Papers\n    - [Command Query Responsibility Segregation (CQRS) by Martin Fowler](https://martinfowler.com/bliki/CQRS.html)\n    - [Event Sourcing](https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing)\n    - [Getting Started With DDD When Surrounded By Legacy Systems by Eric Evans](\n    http://domainlanguage.com/wp-content/uploads/2016/04/GettingStartedWithDDDWhenSurroundedByLegacySystemsV1.pdf)\n    - [Hexagonal Architecture by Alistair Cockburn](http://alistair.cockburn.us/Hexagonal+architecture)\n    - [The Clean Architecture by Robert C. Martin](\n      https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html)\n    - [The Onion Architecture by Jeffrey Palermo](http://jeffreypalermo.com/blog/the-onion-architecture-part-1/)\n\n  - Books\n    - [Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans](\n    https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215)\n\n  - Videos\n    - [Architecture the Lost Years by Robert C. Martin](https://www.youtube.com/watch?v=WpkDN78P884) _(The Clean Architecture)_\n    - [DDD \u0026 Microservices: At Last, Some Boundaries! by Eric Evans](https://www.youtube.com/watch?v=yPvef9R3k-M)\n    - [What is programming MVC? by J. Alexander Curtis](https://www.youtube.com/watch?v=1IsL6g2ixak)\n\n  ### Database\n\n  _A database is an organized collection of data. It is the collection of schemas, tables,\n  queries, reports, views, and other objects._\n\n  - Books\n    - [SQL Indexing and Tuning by Markus Winand](http://use-the-index-luke.com/) (**_Free web-edition_**)\n\n  ### Logging\n\n  _In computing, a logfile is a file that records either events that occur in an operating system\n  or other software runs, or messages between different users of a communication software.\n  Logging is the act of keeping a log._\n\n  - Articles / Papers\n    - [Logging levels: the wrong abstraction, by Daniel Lebrero](https://labs.ig.com/logging-level-wrong-abstraction)\n    - [Tracing Request IDs by Brandur](https://brandur.org/request-ids)\n    - [The Log: What every software engineer should know about real-time data's unifying abstraction by Jay Kreps](\n    https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying)\n\n  ### Object-Oriented Design\n\n  _Object-Oriented Design is the process of planning a system of interacting\n  objects for the purpose of solving a software problem._\n\n  - Articles / Papers\n    - [Applying Design by Contract, by Bertrand Meyer](http://se.ethz.ch/~meyer/publications/computer/contract.pdf)\n    - [Command Query Separation (CQS) by Firat Atagun](http://www.firatatagun.com/blog/2016/05/28/command-query-seperation-cqs/)\n    - [Dealing with Properties by Martin Fowler](https://martinfowler.com/apsupp/properties.pdf)\n    - [GRASP](https://en.wikipedia.org/wiki/GRASP_(object-oriented_design%29 )\n    - [Keep It DRY, Shy, and Tell the Other Guy by Andy Hunt and Dave Thomas](http://media.pragprog.com/articles/may_04_oo1.pdf)\n    - [Tell, Don't Ask](https://pragprog.com/articles/tell-dont-ask) ([Examples](https://robots.thoughtbot.com/tell-dont-ask))\n    - [The Law of Demeter Is Not A Dot Counting Exercise by Phil Haack](http://haacked.com/archive/2009/07/14/law-of-demeter-dot-counting.aspx/)\n    - [SRP: The Single Responsibility Principle](\n    https://drive.google.com/file/d/0ByOwmqah_nuGNHEtcU5OekdDMkk/view)\n    - [The Open-Closed Principle](\n    https://drive.google.com/file/d/0BwhCYaYDn8EgN2M5MTkwM2EtNWFkZC00ZTI3LWFjZTUtNTFhZGZiYmUzODc1/view)\n    - [The Liskov Substitution Principle](\n    https://drive.google.com/file/d/0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh/view)\n    - [The Interface Segregation Principle](\n    https://drive.google.com/file/d/0BwhCYaYDn8EgOTViYjJhYzMtMzYxMC00MzFjLWJjMzYtOGJiMDc5N2JkYmJi/view)\n    - [The Dependency Inversion Principle](\n    https://drive.google.com/file/d/0BwhCYaYDn8EgMjdlMWIzNGUtZTQ0NC00ZjQ5LTkwYzQtZjRhMDRlNTQ3ZGMz/view)\n\n  - Books\n    - [Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development by Craig Larman](\n    https://www.amazon.com.br/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062)\n\n  - Videos\n    - [Nothing is Something by Sandi Metz](https://www.youtube.com/watch?v=9lv2lBq6x4A)\n    - [SOLID Object-Oriented Design by Sandi Metz](https://www.youtube.com/watch?v=v-2yFMzxqwU)\n\n  ### Refactoring\n\n  _Code refactoring is the process of restructuring existing computer code—changing the factoring—without\n  changing its external behavior. Refactoring improves nonfunctional attributes of the software._\n\n  - Articles / Papers\n    - [Code Smells by Jeff Atwood](https://blog.codinghorror.com/code-smells/)\n    - [Dont Repeat Yourself (DRY) by Andrew Hunt](http://wiki.c2.com/?DontRepeatYourself)\n    - [On the Criteria To Be Used in Decomposing Systems into Modules by David Parnas](\n    https://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf) _(Decomposing)_\n    - [Towards a Principle-based Classification of Structural Design Smells by Ganesh Samarthyam, Tushar Sharma and Girish Suryanarayana](\n    http://www.jot.fm/issues/issue_2013_06/article1.pdf) _(Design Smells)_\n\n  - Books\n    - [Refactoring for Software Design Smells: Managing Technical Debtby Ganesh Samarthyam, Tushar Sharma and Girish Suryanarayana](\n    https://www.amazon.com/gp/product/0128013974/ref=as_li_tl)\n    - [Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant, William Opdyke and Don Roberts](\n    https://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672)\n\n  - Videos\n    - [Get a Whiff of This by Sandi Metz](https://www.youtube.com/watch?v=PJjHfa5yxlU) _(Code Smells)_\n    - [All the Little Things by Sandi Metz](https://www.youtube.com/watch?v=8bZh5LMaSmE) _(Small Objects)_\n\n  ### Revision Control\n\n  _Revision control is any kind of practice that tracks and provides control over changes to source code._\n\n  - Articles / Papers\n    - [Gitflow - A successful Git branching model by Vincent Driessen](http://nvie.com/posts/a-successful-git-branching-model/)\n    - [GitLab Flow](https://docs.gitlab.com/ee/workflow/gitlab_flow.html)\n    - [GitHub Flow by Scott Chacon](http://scottchacon.com/2011/08/31/github-flow.html)\n    - [Git Style Guide by Agis Anastasopoulos](https://github.com/agis/git-style-guide)\n\n  - Books\n    - [Pro Git by Scott Chacon and Ben Straub](https://git-scm.com/book/en/v2)\n\n  ### Service-Oriented Architecture\n\n  _A service-oriented architecture (SOA) is a style of software design where services are provided\n  to the other components by application components, through a communication protocol over a network.\n  The basic principles of service-oriented architecture are independent of vendors, products and technologies._\n\n  - Articles / Papers\n    - [SEDA: An Architecture for Well-Conditioned, Scalable Internet Services by Matt Welsh, David Culler and Eric Brewer](\n    http://www.sosp.org/2001/papers/welsh.pdf)\n    - [Twelve-factor App Methodology by Adam Wiggins](https://12factor.net/)\n\n  ### Others\n\n  _Last but not least._\n\n  - Articles / Papers\n    - [Learn Regex by Zeeshan Ahmed](https://github.com/zeeshanu/learn-regex)\n    - [Semantic Versioning Specification (SemVer) by Tom Preston-Werner](http://semver.org/)\n    - [The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) by Joel Spolsky](\n      https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/)\n    - [Time by Emil Mikulic](https://unix4lyfe.org/time/)\n    - [The Infinite Hows (or, the Dangers Of The Five Whys) by John Allspaw](\n    https://www.kitchensoap.com/2014/11/14/the-infinite-hows-or-the-dangers-of-the-five-whys/) _(Post-hoc/Postmortems)_\n    - [What every web developer must know about URL encoding by Stéphane Épardaud](\n    https://www.talisman.org/~erlkonig/misc/lunatech%5Ewhat-every-webdev-must-know-about-url-encoding/)\n    - [What Every Programmer Should Know About Memory by Ulrich Drepper](https://www.akkadia.org/drepper/cpumemory.pdf)\n    - [What Every Programmer Should Know About SEO by Kate Matsudaira](http://katemats.com/what-every-programmer-should-know-about-seo/)\n    - [What's the Difference Between Continuous Integration, Continuous Deployment and Continuous Delivery? by Marko Anastasov](\n    https://semaphoreci.com/blog/2017/07/27/what-is-the-difference-between-continuous-integration-continuous-deployment-and-continuous-delivery.html)\n    - [What technical details should a programmer of a web application consider before making the site public?](\n    https://softwareengineering.stackexchange.com/questions/46716/what-technical-details-should-a-programmer-of-a-web-application-consider-before)\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/rafaels88%2Fsoftware-development-resources/projects"}