Список литературы для самообучения разработчика программного обеспечения¶
Автор раздела: Ivan Zakrevsky
Один из частых вопросов, который я наблюдаю регулярно, - это "посоветуйте список литературы в области разработки программного обеспечения". В этой статье я изложу свое видение самообучения и приведу список тематической литературы, с учетом моего личного опыта.
Предисловие¶
Классическая ошибка новичков - жажда к знаниям, нетерпеливость. Обычно это приводит к тому, что, в погоне за количеством, они надрываются (объем знаний, который предстоит освоить, действительно, огромный), осознают невыполнимость желаемого, впадают в депрессию, а затем и в состояние психологической защиты (мол, "академичность" неуместна на практике), и прекращают развиваться. Решается эта проблема очень просто - жажда должна быть не к знаниям, а к дисциплине. А уж дисциплина обязательно приведет к обретению знаний. Дисциплина - это, своего рода, производная знаний. Она поддерживает постоянную скорость на пути освоения знаний. Сперва нужно выработать привычку, а затем привычка будет работать на вас. Как говорится, сохраняйте порядок, и порядок сохранит вас.
📝 "I'm not a great programmer; I'm just a good programmer with great habits."
—Kent Beck at "Refactoring: Improving the Design of Existing Code" 1st edition by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
Достаточно читать по 5 страниц в день. Тут главное - стабильность. Пусть будет по чуть-чуть, но постоянно. Дисциплина - мать победы, говорил А.В. Суворов. Гнаться за количеством не нужно.
📝 "A little reading goes a long way toward professional advancement. If you read even one good programming book every two months, roughly 35 pages a week, you'll soon have a firm grasp on the industry and distinguish yourself from nearly everyone around you."
—"Code Complete" by Steve McConnell
📝 "We become authorities and experts in the practical and scientific spheres by so many separate acts and hours of work. If a person keeps faithfully busy each hour of the working day, he can count on waking up some morning to find himself one of the competent ones of his generation."
—William James, cited by Steve McConnell in "Code Complete"
И, желательно, чтобы читаемая книга совпадала с тематикой текущего проекта, чтобы через практику хорошо легла в память. Я по этой причине часто изменял свой график чтения. Обычно я читал в параллели 2-3 книги. Одну - планово, другие - по потребностям проекта.
Еще одной ошибкой является неудачный выбор литературы. Сегодня штампуется много литературы, но далеко не каждая книга достойна внимания. Закон Парето работает и здесь.
Хорошей вещью для систематизации собственных знаний является написание статей и участие в профессиональных дискуссиях. Ничто так не систематизирует собственные знания, как попытка объяснить что-то другому человеку. Вы, конечно, будете периодически ошибаться, но для кристализации знаний это лучше, чем ничего не делать. К тому же, это хорошо развивает сдержанность в аргументации, что немаловажно.
На первых порах критически важно участвовать в Open Source проектах. Можно завести свои собственные Open Source проекты. Можно принимать участие в каких-то существующих проектах с авторитетными комьюнити, которые будут помогать избавляться от ошибок. В любом случае, не надейтесь на то, что профессиональные проекты предоставят вам достаточную практику для закрепления знаний. А Open Source проекты - очень даже предоставят. Я даже считаю, что практика должна предшествовать теории, потому что трудно запомнить какое-то решение, если вам на практике не знакома решаемая проблема.
📝 "Если лечиться по справочнику, то рискуешь умереть от опечатки."
—Марк Твен
Потребность в теории должна назреть. Когда я приступал к теории, то у меня был накоплен уже солидный багаж проблем, решение которых я искал. Когда я впервые прочитал о мотивации паттерна Bridge, у меня в голове промелькнуло: "так вот, оказывается, как решается та самая проблема". Когда я читал каталог Code Smells, я частенько вспоминал свой код. В результате, решения навечно запечатлелись в памяти.
Очень правильно сказал Сергей Тепляков: "Полноценное обучение – это не теория vs. практика. Это комбинация этих вещей, при этом процент одного и другого зависит от человека и изучаемой темы."
Ну и, главное, не впадать в фанатизм. Засасывает. Нужно себя уравновешивать другими интересами, семья, спорт, физкультура, шашлыки, друзья, путешествия... Непредвзятый и свободный взгляд намного важнее изобилия знаний. Путешествие должно быть на легке, как говорил Кент Бек. По сути, знания нужны только для того, чтобы избавиться от всего лишнего. Архитектура - это, на самом деле, наука об ограничениях (т.е. о том, как не надо делать).
Кандидатский минимум¶
Учимся обучению¶
Это может показаться немного удивительным, но первая книга будет посвящена не техническим знаниям, а вопросам самоорганизации, управления временем, психологии, методикам работы под стрессом, оцеванию задач по разработке программного обеспечения, вопросам коммуникации и поведению в конфликтных ситуациях, и, самое главное, - науке быть правдивым. Именно правдивость является важнейшим отличительным признаком настоящего профессионала. И это не так просто, как может показаться на первый взгляд. Есть разница между кодером и профессионалом. И эта книга о том, как стать профессионалом. Без знаний, изложенных в этой книге, вы просто не сможете изыскать время на самообучение, и список остальных книг вам может просто не понадобиться:
"The Clean Coder" by Robert C. Martin
Изучаем основную используемую технологию¶
Следующая книга должна быть посвящена основной используемой технологии, т.е. синтаксическим возможностям языка программирования. Для Python-разработчиков хорошим выбором была бы книга:
"Learning Python" 5th edition by Mark Lutz
Для Golang интересно выглядят книги:
"Hands-On Software Architecture with Golang. Design and architect highly scalable and robust applications using Go" by Jyotiswarup Raiturkar
"The Go Programming Language" by Alan A.A. Donovan Google Inc., Brian W. Kernighan Princeton University
Для Erlang:
"Programming Erlang: Software for a Concurrent World (Pragmatic Programmers)" 2nd edition by Joe Armstrong
Для frontend-разработчиков, работающих с Angular, имеет смысл обратить внимание на книгу:
"ng-book2. The Complete Book on Angular 6" by Nate Murray, Felipe Coury, Ari Lerner, and Carlos Taborda
Азбука программирования¶
Подразумевается что вы уже хорошо знаете синтаксис основного языка программирования. Но, знание букв еще не делает вас поэтом. Следующие книги являются азбукой программирования. Я привожу их в таком порядке, в каком я рекомендую их прочтение:
"Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
"Patterns of Enterprise Application Architecture" by Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford
"Refactoring: Improving the Design of Existing Code" 1st edition by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
"Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin
"Code Complete" 2nd edition by Steve McConnell
"UML Distilled. A Brief Guide to the Standard Object Modeling Language" 3d edition by Martin Fowler
Учимся быть эффективным¶
Знаний предыдущих пяти книг достаточно для того, чтобы вы стали работать в разы эффективней. Но нужно не только знать, а еще и уметь быть эффективным на практике. Никто не раскрывает этот вопрос лучше, чем Kent Beck:
"Test-Driven Development By Example" by Kent Beck
Учимся делать команду эффективной¶
Следующий барьер - умение сделать команду эффективной. Вы не сможете быть эффективным в изоляции, поскольку ваша эффективность определяется качеством кодовой базы, а она разрабатывается всей командой. Или вы сделаете команду эффективной, или ваша эффективность так и останется мечтательством. Опять же, лучший наставник в этих вопросах - Kent Beck:
"Extreme Programming Explained" 1st edition by Kent Beck
На данном этапе, этой книги достаточно. Обратите внимание, я советую именно первое издание, так как оно лучше раскрывает смысл и назначение Agile разработки.
Изучаем операционную систему¶
Вот по операционным системам я мало что могу посоветовать, так как низкоуровневым программированием я практически не занимался. Но вам обязательно нужно получить представление о том, как работают регистры процессора, память, и как управлять операционной системой.
Я в свое время читал эти книги (к сожалению, сегодня они устарели):
"The Linux® Kernel Primer: A Top-Down Approach for x86 and PowerPC Architectures" by Claudia Salzberg Rodriguez, Gordon Fischer, Steven Smolski
"Digital computers and microprocessors" by Aliyev / "Цифровая вычислительная техника и микропроцессоры" М.М.Алиев
А вот этот справочник у меня всегда под рукой:
"Unix and Linux System Administration Handbook" 5th edition by Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley, Dan Mackin
Изучаем основы алгоритмов и структур данных¶
Алгоритмы хоть и используются редко в прикладной разработке (если вы только не пишете поисковые системы, системные утилиты, языки программирования и операционные системы, системы маршрутизации, биржевые анализаторы и т.п.), но знать хотя бы базовые основы необходимо. Существует книга, которая за двести с небольшим страниц может дать эти базовые основы в легкой и популярной форме:
"Algorithms Unlocked" 3d edition by Thomas H. Cormen
Данная книга не акцентируется на математике, что, с одной стороны, облегчает освоение материала, но, с другой стороны, оставляет невосполненным важный аспект профессиональных знаний. К счастью, существует книга, которая обеспечивает легкий вход в алгоритмы, включая их математический анализ:
"Introduction to the Design and Analysis of Algorithms" 3d edition by A.Levitin
При чтении этой книги могут возникать вопросы справочного характера по математике, ответы на которые можно найти в приложении этой книги (Appendix A: Useful Formulas for the Analysis of Algorithms, Appendix B: Short Tutorial on Recurrence Relations), в математических справочниках (например, М.Я. Выгодского, А.А. Гусака) или в справочном разделе по математике "VIII Appendix: Mathematical Background" книги "Introduction to Algorithms" 3d edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein.
В качестве минималистичного ликбеза по теоретическим основам может неплохо подойти книга:
"Computer Science Distilled" by Wladston Ferreira Filho
Она содержит минималистичные основы математики (логика, комбинаторика, вероятность), алгоритмы и структуры данных, основы Баз Данных (RDBMS, NoSQL), описание Парадигм Программирования и основы архитектуры железа.
Изучаем математику¶
Существует монументальная книга, которую стоит упомянуть отдельно (обратите внимание на фамилии авторов, которые в представлении не нуждаются). Чтобы не тормозить общий процесс обучения, ее лучше читать в параллельно-фоновом режиме. К тому же математические знания следует всегда поддерживать в актуальном состоянии, и регулярно освежать их в голове в фоновом режиме.
"Concrete Mathematics: A Foundation for Computer Science" 2nd edition by Ronald L. Graham, Donald E. Knuth, Oren Patashnik
Эта книга дает прекрасную математическую базу для функционального программирования. И хорошо заходит в сочетании с "The Art Of Computer Programming" Volume 1 3d edition by Donald Knuth, поскольку у них многие темы пересекаются и раскрываются с разных точек зрения, что дает полноту понимания. Справочник математических нотаций в конце книги нередко оказывается полезным.
Книги по математике и алгоритмам - сложные книги, и я хотел бы поделиться одним советом, который я услышал еще в студенчестве. Если что-то непонятно - прочитай три раза:
Первый раз просто прочитай, оставив попытки что-то понять, - нужно просто получить обзорность материала.
Второй раз прочитай уже пытаясь слегка вникать.
И третий раз прочитай уже вникая полностью.
Учимся архитектуре¶
Теперь можно приступить и к архитектуре:
"Clean Architecture: A Craftsman's Guide to Software Structure and Design" by Robert C. Martin
Изучаем распределенные системы¶
"NoSQL Distilled. A Brief Guide to the Emerging World of Polyglot Persistence." by Pramod J. Sadalage, Martin Fowler
"Building Microservices. Designing Fine-Grained Systems" 2nd edition by Sam Newman
"A plain english introduction to CAP Theorem" (Russian) by Kaushik Sathupadi
"Map Reduce: A really simple introduction" by Kaushik Sathupadi
"Eventually Consistent - Revisited" by Werner Vogels
"Distributed systems: for fun and profit" (2013). An introduction to distributed systems. (source code)
"Lecture notes (PDF) (including exercises)" by Martin Kleppmann (download, source code, video)
"Literature references for "Designing Data-Intensive Applications"" by Martin Kleppmann
"Resources and community around CRDT technology - papers, blog posts, code and more." by Martin Kleppmann (source code)
Изучаем распределенные системы. Углубляем навыки.¶
Книг по этой теме предстоит прочитать слишком много. Вряд-ли ваша работа будет ждать, пока вы прочитаете их все. К счастью, сообщество .NET разработчиков подготовило краткий справочник, который заменит вам прочтение десятка книг:
".NET Microservices: Architecture for Containerized .NET Applications" edition v2.2.1 (mirror) by Cesar de la Torre, Bill Wagner, Mike Rousos
К этой книге существует эталонное приложение, которое наглядно демонстрирует практическое применение изложенной в книге информации:
https://github.com/dotnet-architecture/eShopOnContainers (CQRS, DDD, Microservices)
Еще одно хорошее краткое руководство от Microsoft:
И можно сюда включить еще и книгу:
"CQRS Journey" by Dominic Betts, Julián Domínguez, Grigori Melnik, Fernando Simonazzi, Mani Subramanian
К ней также существует демонстрационное приложение:
https://github.com/microsoftarchive/cqrs-journey (Event Sourcing, SAGA transactions)
Оригинальная статья "SAGAS" by Garcia-Molina, Kenneth Salem (копия).
Изучаем DDD¶
Начинать я рекомендовал бы с прекрасного краткого руководства:
"What Is Domain-Driven Design?" by Vladik Khononov
Или с более новой книги этого же автора:
"Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy" 1st Edition by Vlad Khononov
Затем приступить к классике:
"Domain-Driven Design: Tackling Complexity in the Heart of Software" by Eric Evans
"Implementing Domain-Driven Design" by Vaughn Vernon
Существуют краткие изложения этих двух книг по DDD.
Краткие изложения "Domain-Driven Design" by Eric Evans:
"Domain-Driven Design Reference" by Eric Evans
Краткое изложение "Implementing Domain-Driven Design" by Vaughn Vernon:
"Domain-Driven Design Distilled" by V.Vernon
Статьи на частые вопросы по DDD¶
Patterns related to Domain Driven Design by Martin Fowler
Aggregate & Domain Modeling¶
"What is domain logic?" by Vladimir Khorikov
"Domain services vs Application services" by Vladimir Khorikov
"Domain model isolation" by Vladimir Khorikov
"Email uniqueness as an aggregate invariant" by Vladimir Khorikov
"How to know if your Domain model is properly isolated?" by Vladimir Khorikov
"Domain model purity vs. domain model completeness" by Vladimir Khorikov
"Domain model purity and lazy loading" by Vladimir Khorikov
"Domain model purity and the current time" by Vladimir Khorikov
"Immutable architecture" by Vladimir Khorikov
"Link to an aggregate: reference or Id?" by Vladimir Khorikov
"How to create fully encapsulated Domain Models" by Udi Dahan
"Effective Aggregate Design" by Vaughn Vernon
"Designing a Domain Model to enforce No Duplicate Names by Steve Smith
CQRS & Event Sourcing¶
"Overselling Event Sourcing" by Alexey Zimarev
"Event Sourcing and Microservices" by Alexey Zimarev
"Projections in Event Sourcing" by Alexey Zimarev
"Event Sourcing and CQRS" by Alexey Zimarev
"Entities as event streams" by Alexey Zimarev
"Event Sourcing basics" by Alexey Zimarev
"What is Event Sourcing?" by Alexey Zimarev
"Event Sourcing and CQRS" by Alexey Zimarev
"Event immutability and dealing with change" by Savvas Kleanthous
"10 problems that Event Sourcing can help solve for you" by Dennis Doomen
"CQRS, Task Based UIs, Event Sourcing agh!" by Greg Young
"CQRS Documents" by Greg Young
"Versioning in an Event Sourced System" by Greg Young ("читать online", "конспект книги")
"The Dark Side of Event Sourcing: Managing Data Conversion" by Michiel Overeem, Marten Spoor, Slinger Jansen
"Clarified CQRS" by Udi Dahan
"Busting some CQRS myths" by Jimmy Bogard
Bounded Context and Microservices¶
"Bounded Contexts are NOT Microservices" by Vladik Khononov
"Tackling Complexity in Microservices" by Vladik Khononov
"DDDDD: Bounded Contexts, Microservices, and Everything In Between" by Vladik Khononov
"Reactive Microservices" by Vaughn Vernon
"Microservices and [Micro]services" by Vaughn Vernon
"About Bounded Contexts and Microservices" by Alberto Brandolini
"Domain, Subdomain, Bounded Context, Problem/Solution Space in DDD: Clearly Defined" by Nick Tune
"Monolith -> Services: Theory & Practice" by Kent Beck
"tl;dr Coupling (& later Cohesion)" by Kent Beck
"How to break a Monolith into Microservices :: Go Macro First, then Micro" by Zhamak Dehghani
Tools:
См. Context Map средствами Archi на диаграмме "Views : Tactical Architecture : Program Level : Context Map" of Model used for presentation "Enterprise Architecture Modelling with ArchiMate in an Agile at Scale Programme"
"Context Mapping" by Nick Tune and DDD-Crew
"Context Map Cheat Sheet" by Nick Tune and DDD-Crew
"Context Map Cheat Sheet (Miro template)" by Nick Tune and DDD-Crew
"Context Mapping Quiz" by Nick Tune and DDD-Crew
"Context Mapping Quiz (Miro template)" by Nick Tune and DDD-Crew
"ContextMapper - a Modeling Framework for Strategic Domain-driven Design"
"DomoRoboto - strategic, rapid, learning for teams using Domain-Driven Design and Architecture modeling" (EventStorming, Bounded Contexts, Context Mapping, Topo Architecture) by Vaughn Vernon
"Visualizing sociotechnical architectures with Context Maps"
Domain Events¶
API-Design¶
"Apigee. Web API Design: The Missing Link. Best Practices for Crafting Interfaces that Developers Love." by Google Cloud
"Good Practices for Capability URLs", W3C Draft
"Why, after 6 years, I’m over GraphQL" by Matt Bessey
"5 reasons you shouldn't be using GraphQL" (перевод на Русский)
"OpenAPIs"
"AsyncAPI"
"JSON:API"
"JSONPath specification - XPath for JSON", "Introduction to JsonPath"
"Falcor"
"Cheat Sheet a.k.a. API Design Heuristics" - шпаргалка по "Microservices API Patterns"
"REST API Design - Resource Modeling" by Prakash Subramaniam, WhoughtWorks
"CQRS and REST: the perfect match" by Jimmy Bogard
"Entities aren't resources, resources aren't representations" by Jimmy Bogard
"CRUD, only when you can afford it (Revisited)" by Maarten Mullender
"The API" by Sergey Konstantinov (Source Code, English)
"OpenAPI Governance Templates" by Postman Open Technologies
Event Storming¶
By Alberto Brandolini (twitter):
"Domain-Driven Design: The First 15 Years", chapter "Discovering Bounded Contexts with EventStorming" by Alberto Brandolini
"Introducing Event Storming" by Alberto Brandolini
"Remote EventStorming" by Alberto Brandolini
"EventStorming in COVID-19 times" by Alberto Brandolini
"Leanpub: Introducing EventStorming" by Alberto Brandolini
Others:
"Domain-Driven Design Distilled" by Vaughn Vernon, chapter "Chapter 7 Acceleration and Management Tools :: Event Storming"
"What is Domain-Driven Design?" by Vladik Khononov, chapter "Chapter 8: Event Storming"
"EventStorming Glossary & Cheat sheet" by Nick Tune
"Open Agile Architecture", chapter "19. Event Storming"
"Event Storming на практических кейсах", Сергей Баранов (видео)
"Reactive in practice, Unit 1: Event storming the stock trader domain" by Kevin Webber, Dana Harrington
"Event storming & domain-driven design: Reactive in practice — Event storming the stock trader domain — IBM Developer" by Kevin Webber, Dana Harrington
"Container Shipment Analysis" by IBM
"refarch-kc - Implementation solution for container shipment using Event-Driven Architecture" by IBM
Tools:
"DomoRoboto - strategic, rapid, learning for teams using Domain-Driven Design and Architecture modeling" (EventStorming, Bounded Contexts, Context Mapping, Topo Architecture) by Vaughn Vernon
Modelling¶
"Getting started with DDD. Definitions of DDD and fundamental concepts to reduce the learning curve and confusion." by Nick Tune & DDD-Crew
"Domain-Driven Design Starter Modelling Process. If you're new to DDD and not sure where to start, this process will guide you step-by-step." by Nick Tune & DDD-Crew
"Legacy Architecture Modernisation With Strategic Domain-Driven Design" by Nick Tune
Собственно, этих знаний достаточно для того, чтобы стать зрелым специалистом. Своего рода - кандидатский минимум. Далее - порядок чтения может быть произвольным. Читать весь список необязательно.
Дополнительная литература (на выбор)¶
SDLC¶
Single-Team Agile¶
"Extreme Programming Explained" 2nd edition by Kent Beck
"Planning Extreme Programming" by Kent Beck, Martin Fowler
"More Effective Agile: A Roadmap for Software Leaders" by Steve McConnell
"Clean Agile: Back to Basics" by Robert C. Martin
"Agile! The Good, the Hype and the Ugly" by Bertrand Meyer
"Scrum and XP from the Trenches: How We Do Scrum" 2nd edition by Henrik Kniberg
"Essential Scrum: A Practical Guide to the Most Popular Agile Process" by Kenneth Rubin
"Succeeding with Agile: Software Development Using Scrum" by Mike Cohn
"User Stories Applied: For Agile Software Development" by Mike Cohn
"Jeff Sutherland's Scrum Handbook" by Jeff Sutherland
Scaled Agile¶
"Scaling Software Agility: Best Practices for Large Enterprises" by Dean Leffingwell
"Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise" by Dean Leffingwell
"SAFe® 5.0: The World's Leading Framework for Business Agility" by Richard Knaster, Dean Leffingwell
"Large-Scale Scrum: More with LeSS" by Craig Larman, Bas Vodde
"Agile Practice Guide" by Project Management Institute
Стандарты¶
"ISO/IEC/IEEE 12207:2017 Systems and software engineering — Software life cycle processes"
"ISO/IEC/IEEE 15288:2015 Systems and software engineering — System life cycle processes"
"ISO/IEC/IEEE 29148:2018 Systems and software engineering — Life cycle processes — Requirements engineering"
"ISO/IEC/IEEE 15289:2019 Systems and software engineering — Content of life-cycle information items (documentation)"
"ISO/IEC/IEEE 24765:2017 Systems and software engineering — Vocabulary"
"ISO 9000:2005 Quality management systems — Fundamentals and vocabulary"
"ISO/IEC 33001:2015 Information technology — Process assessment — Concepts and terminology"
"ГОСТ Р ИСО/МЭК 12207-2010 Информационная технология. Системная и программная инженерия. Процессы жизненного цикла программных средств."
"ГОСТ Р 57193-2016 Системная и программная инженерия. Процессы жизненного цикла систем."
Менеджмент¶
"The Mythical Man-Month Essays on Software Engineering Anniversary Edition" by Frederick P. Brooks, Jr.
"Systems Thinking" by Craig Larman (перевод на Русский)
"Art of Project Management" by Scott Berkun
"Менеджмент: Учебник для вузов." 3-е изд. Глухов В. В.
"Оргуправленческое мышление. Идеология, методология, технология" / Щедровицкий Георгий Петрович
"The Leadership Experience" 7th edition by Richard L. Daft
"Management" 013 edition by Richard L. Daft
Развитие личностных профессиональных качеств¶
"The Pragmatic Programmer: From Journeyman to Master" 1st edition by David Thomas, Andrew Hunt
"The Pragmatic Programmer: your journey to mastery, 20th Anniversary Edition" 2nd edition by David Thomas, Andrew Hunt
"A Mind for Numbers: How to Excel at Math and Science" by Barbara Ann Oakley
"Systems Thinking. Quality Software Management. New York: Dorset House." by Gerald M. Weinberg, 1992, ISBN: 0932633226
"An Introduction to General Systems Thinking" by Gerald M. Weinberg
"Becoming a Technical Leader" by Gerald M. Weinberg
"Harvard Business Review on Decision Making" by Harvard Business School Press
"The Software Architect Elevator: Redefining the Architect's Role in the Digital Enterprise 1st Edition" by Gregor Hohpe
"Fundamentals of Software Architecture: An Engineering Approach" 1st edition by Mark Richards, Neal Ford
"Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures" 1st Edition by Neal Ford, Mark Richards, Pramod Sadalage, Zhamak Dehghani
"The Book: 37 Things One Architect Knows About IT Transformation" by Gregor Hohpe
"Eat or Be Eaten!: Jungle Warfare for the Corporate Master Politician" by Phil Porter
"Presentation patterns: techniques for crafting better presentations" by Neal Ford, Matthew McCullough, Nathaniel Schutta
"Technology Strategy Patterns: Architecture as Strategy" 1st edition by Eben Hewitt
"Thinking in Systems: A Primer" by Donella H. Meadows, Diana Wright
"Social psychology" 13th edition by David G. Myers. Перевод: "Социальная психология" / Майерс Д. Пер. с англ. З. Замчук; Зав. ред. кол. Л. Винокуров. — 7-е изд. — СПб.: Питер, 2006.
"Never split the difference: negotiating as if life depended on it" by Chris Voss. Перевод: "Договориться не проблема. Как добиваться своего без конфликтов и ненужных уступок." / Крис Восс
"Искусство спора. О теории и практике спора." / Поварнин С.И.
"Эристика, или Искусство побеждать в спорах" / Шопенгауэр Артур. English: "The Art of Being Right: 38 Ways to Win an Argument" by Arthur Schopenhauer
"Как читать книги" / Поварнин С.И.
Простой и доходчивый видеокурс по SoftSkills:
Базы данных¶
"Mastering PostgreSQL In Application Development" by Dimitri Fontaine
"The Art of PostgreSQL" 2nd edition by Dimitri Fontaine - is the new title of "Mastering PostgreSQL in Application Development"
"SQL Antipatterns. Avoiding the Pitfalls of Database Programming." by Bill Karwin
"Refactoring Databases. Evolutionary Database Design" by Scott J Ambler and Pramod J. Sadalage
"An Introduction to Database Systems" by C.J. Date
"PostgreSQL 10 High Performance" by Ibrar Ahmed, Gregory Smith, Enrico Pirozzi
PostgresPro представил четыре книги для разных уровней подготовленности читателей, от совершенно неосведомленного человека до разработчика баз данных. Книги дают комплексные знания в лаконичной форме. Все книги доступны для скачивания в свободном доступе:
"Postgres: первое знакомство" / П.В. Лузанов, Е.В. Рогов, И.В. Лёвшин
"PostgreSQL изнутри" / Е.В. Рогов — М.: ДМК Пресс, 2022. — 660 с.
"PostgreSQL. Основы языка SQL: учеб. пособие" / Е.П. Моргунов; под ред. Е.В. Рогова, П.В. Лузанова.
"Основы технологий баз данных: учеб. пособие" / Б.А. Новиков, Е.А. Горшкова, Н.Г. Графеева; под ред. Е.В. Рогова.
Так же доступны учебные материалы курсов: слайды, видео, руководства. Скачать можно все материалы каждого курса одним архивом.
Превосходная подборка статей с фундаментальной информацией простым языком о внутреннем устройстве PostgreSQL, от разработчиков PostgresPro:
Шпаргалка по выбору типа хранилища данных:
Jepsen's analysis over two dozen databases, coordination services, and queues—and we've found replica divergence, data loss, stale reads, read skew, lock conflicts, and much more:
Рейтинг хранилищ данных:
Изучаем распределенные системы. Третий заход.¶
"Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions" by Gregor Hohpe, Bobby Woolf
"Service Design Patterns: Fundamental Design Solutions for SOAP/WSDL and RESTful Web Services" by Robert Daigneau
"Microsoft .NET: Architecting Applications for the Enterprise" 2nd edition by Dino Esposito, Andrea Saltarello
"Cloud Design Patterns. Prescriptive architecture guidance for cloud applications" by Alex Homer, John Sharp, Larry Brader, Masashi Narumoto, Trent Swanson. (Code Samples)
"Build Microservices on Azure" by Microsoft Corporation and community
"Cloud Best Practices" by Microsoft Corporation and community
"Performance Antipatterns" by Microsoft Corporation and community
"Azure Application Architecture Guide" by Microsoft Corporation and community
"Azure Data Architecture Guide" by Microsoft Corporation and community
"Release It! Design and Deploy Production-Ready Software" 2nd edition by Michael Nygard
"Microservices Patterns: With examples in Java" 1st edition by Chris Richardson (more info)
"Monolith to Microservices Evolutionary Patterns to Transform Your Monolith" by Sam Newman
"Microservices AntiPatterns and Pitfalls" by Mark Richards
"Microservices vs. Service-Oriented Architecture" by Mark Richards
"Site Reliability Engineering: How Google runs production systems" edited by Betsy Beyer, Chris Jones, Jennifer Petoff & Niall Richard Murphy
"The Site Reliability Workbook: Practical Ways to Implement SRE." by Betsy Beyer, Niall Richard Murphy, David K. Rensin, Kent Kawahara & Stephen Thorne
"Building Secure & Reliable Systems: Best Practices for Designing, Implementing and Maintaining Systems." by Heather Adkins, Betsy Beyer, Paul Blankinship, Ana Oprea, Piotr Lewandowski, Adam Stubblefield
"Database Reliability Engineering. Designing and Operating Resilient Database Systems." by Laine Campbell and Charity Majors
"Designing Data-Intensive Applications. The Big Ideas Behind Reliable, Scalable, and Maintainable Systems" by Martin Kleppmann
"Database Internals: A Deep Dive into How Distributed Data Systems Work" by Alex Petrov
"Distributed systems: principles and paradigms" 3d edition by Andrew S. Tanenbaum, Maarten Van Steen
"Введение в распределенные вычисления" / Косяков М. С. — СПб: НИУ ИТМО, 2014. — С. 75-82. — 155 с.
"Service-Oriented Architecture Analysis and Design for Services and Microservices" by Thomas Erl
"Workflow patterns: the definitive guide" by Aalst, Wil van der, Russell, Nick, Ter Hofstede, Arthur
"Real-Life BPMN (4th edition): Includes an introduction to DMN" by Jakob Freund, Bernd Rücker
"Practical Process Automation" by Bernd Ruecker
API-Design¶
"REST in Practice: Hypermedia and Systems Architecture" by Savas Parastatidis, Jim Webber, Ian Robinson
"RESTful Web APIs: Services for a Changing World" by Leonard Richardson, Sam Ruby, Mike Amundsen
"Web API Design Crafting Interfaces that Developers Love" by Brian Mulloy
"REST API Design Rulebook" by Mark Massé
"Principles of Web API Design: Delivering Value with APIs and Microservices" by James Higginbotham
"Continuous API Management" 2nd edition by Mehdi Medjaoui, Erik Wilde, Ronnie Mitra, Mike Amundsen
Streaming Processing¶
"Streaming Data: Understanding the real-time pipeline" 1st edition by Andrew Psaltis
"Big Data: Principles and best practices of scalable realtime data systems" 1st edition by Nathan Marz, James Warren
"Kafka Streams in Action: Real-time apps and microservices with the Kafka Streams API" 1st edition by Bill Bejeck
"The Enterprise Big Data Lake: Delivering the Promise of Big Data and Data Science" 1st edition by Alex Gorelik
Углубляем DDD¶
"Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka" by Vaughn Vernon
"Patterns, Principles, and Practices of Domain-Driven Design" by Scott Millett, Nick Tune
"Hands-On Domain-Driven Design with .NET Core: Tackling complexity in the heart of software by putting DDD principles into practice" by Alexey Zimarev
"Balancing Coupling in Software Design: Successful Software Architecture in General and Distributed Systems" by Vladislav Khononov
"Event Sourced Building Blocks for Domain-Driven Design with Python" by John Bywater
Изучаем проектирование¶
"Agile Software Development. Principles, Patterns, and Practices." by Robert C. Martin, James W. Newkirk, Robert S. Koss
"Analysis Patterns. Reusable Object Models" by Martin Fowler
"Implementation Patterns" by Kent Beck
"Smalltalk Best Practice Patterns" by Kent Beck
"Development of Further Patterns of Enterprise Application Architecture" by Martin Fowler
"Domain Specific Languages" by Martin Fowler (with Rebecca Parsons)
"Pattern Hatching: Design Patterns Applied" by John Vlissides
"Microsoft Application Architecture Guide" 2nd edition (Patterns & Practices) by Microsoft Corporation (J.D. Meier, David Hill, Alex Homer, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher Jr., Akshay Bogawat)
"Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development" by Craig Larman
"Object-Oriented Software Construction" 2nd edition by Bertrand Meyer
"Working Effectively with Legacy Code" by Michael C. Feathers
"Refactoring To Patterns" by Joshua Kerievsky
"Structure and Interpretation of Computer Programs" (aka SICP) 2nd edition (MIT Electrical Engineering and Computer Science) by Harold Abelson, Gerald Jay Sussman, Julie Sussman
"How to Design Programs, second edition: An Introduction to Programming and Computing" 2d edition by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
"Object Oriented Software Engineering: A Use Case Driven Approach" by Ivar Jacobson
"Object-Oriented Analysis and Design with Applications" 3rd edition by Grady Booch, Robert A. Maksimchuk, Michael W. Engle, Bobbi J. Young Ph.D., Jim Conallen, Kelli A. Houston
POSA¶
"Pattern-Oriented Software Architecture: A System of Patterns, Volume 1" by Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal
"Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, Volume 2" by Douglas C. Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann
"Pattern-Oriented Software Architecture: Patterns for Resource Management, Volume 3" by Michael Kircher, Prashant Jain
"Pattern-Oriented Software Architecture: A Pattern Language for Distributed Computing, Volume 4" by Frank Buschmann, Kevin Henney, Douglas C. Schmidt
"Pattern-Oriented Software Architecture: On Patterns and Pattern Languages, Volume 5" by Frank Buschmann, Kevin Henney, Douglas C. Schmidt
Алгоритмы. Второй заход.¶
"Introduction to Algorithms" 3d edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
"Algorithms and Data Structures" (Oberon version: August 2004) by N.Wirth
Donald E. Knuth:
"The Art of Computer Programming, Volume 1: Fundamental Algorithms" 3d edition by Donald Knuth
"The Art of Computer Programming, Volume 1, Fascicle 1: MMIX; A RISC Computer for the New Millennium" 1st edition by Donald Knuth
"The Art of Computer Programming, Volume 2, Seminumerical Algorithms" 3rd edition by Donald E. Knuth
"The Art of Computer Programming, Volume 3, Sorting and Searching" 2nd edition by Donald E. Knuth
"The Art of Computer Programming, Volume 4, Fascicle 0: Introduction to Combinatorial Algorithms and Boolean Functions" 1st edition by Donald E. Knuth
"The Art of Computer Programming, Volume 4, Fascicle 1: Bitwise Tricks & Techniques; Binary Decision Diagrams" 1st edition by Donald E. Knuth
"The Art of Computer Programming, Volume 4, Fascicle 2: Generating All Tuples and Permutations" 1st edition by Donald E. Knuth
"The Art of Computer Programming, Volume 4, Fascicle 3: Generating All Combinations and Partitions Paperback" 1st edition by Donald E. Knuth
"Art of Computer Programming, Volume 4, Fascicle 4: Generating All Trees; History of Combinatorial Generation 1st edition by Donald E. Knuth
"The Art of Computer Programming" Volume 4, Fascicle 5: Mathematical Preliminaries Redux; Introduction to Backtracking; Dancing Links" 1st edition by Donald E. Knuth
"The Art of Computer Programming, Volume 4, Fascicle 6: Satisfiability" 1st edition by Donald E. Knuth
"The Art of Computer Programming, Volume 4A, Combinatorial Algorithms, Part 1" 1st edition by Donald E. Knuth
Хорошая подборка книг по алгоритмам: http://e-maxx.ru/bookz/
Тестирование¶
"xUnit Test Patterns. Refactoring Test Code." by Gerard Meszaros
"Unit Testing Principles, Practices, and Patterns: Effective testing styles, patterns, and reliable automation for unit testing, mocking, and integration testing with examples in C#" 1st Edition by Vladimir Khorikov
"Growing Object-Oriented Software, Guided by Tests" by Steve Freeman, Nat Pryce
"Agile Testing: A Practical Guide for Testers and Agile Teams" by Lisa Crispin, Janet Gregory
"More Agile Testing: Learning Journeys for the Whole Team" by Lisa Crispin, Janet Gregory
"ATDD by Example: A Practical Guide to Acceptance Test-Driven Development" by Markus Gärtner
"Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation" by Jez Humble, David Farley
"Continuous Integration: Improving Software Quality and Reducing Risk" by Paul M. Duvall, Steve Matyas, Andrew Glover
Компиляторы¶
"Crafting Interpreters <https://craftinginterpreters.com/>" by Robert Nystrom
"Compiler Construction" by N.Wirth
"Compilers: Principles, Techniques, and Tools" 2nd edition by Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman
Архитектура¶
"Software Architecture in Practice" 4th edition by Len Bass, Paul Clements, Rick Kazman
"Documenting Software Architectures: Views and Beyond" 2nd edition by Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Paulo Merson, Robert Nord, Judith Stafford
"Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives" 2nd edition by Nick Rozanski, Eóin Woods
"Designing Software Architectures: A Practical Approach (SEI Series in Software Engineering)" 1st edition by Humberto Cervantes, Rick Kazman
"Fundamentals of Software Architecture: An Engineering Approach" 1st edition by Mark Richards, Neal Ford
"Introduction to Solution Architecture Paperback" by Alan McSweeney
"Systems Analysis and Design" 7th edition by Alan Dennis, Barbara Haley Wixom, Roberta M. Roth
"The Design of Design: Essays from a Computer Scientist" by Frederick P. Brooks
"Living Documentation: Continuous Knowledge Sharing by Design" by Cyrille Martraire
"Just Enough Software Architecture: A Risk-Driven Approach" by George H. Fairbanks
"The Book: 37 Things One Architect Knows About IT Transformation" by Gregor Hohpe
"The Software Architect Elevator: Redefining the Architect's Role in the Digital Enterprise 1st Edition" by Gregor Hohpe
"Cloud Strategy: A Decision-based Approach to Successful Cloud Migration" by Gregor Hohpe, Michele Danieli, Jean-Francois Landreau, Tahir Hashmi
"Architecting for Scale" 2nd Edition by Lee Atchison
"Software Engineering: A Practitioner's Approach" 9th edition by Roger S. Pressman, Bruce Maxim
"Presentation patterns: techniques for crafting better presentations" by Neal Ford, Matthew McCullough, Nathaniel Schutta
"Team Topologies: Organizing Business and Technology Teams for Fast Flow" by Matthew Skelton, Manuel Pais
"Technology Strategy Patterns: Architecture as Strategy" 1st edition by Eben Hewitt
Архитектура в Agile:
"Building Evolutionary Architectures: Support Constant Change" 1st Edition by Neal Ford, Rebecca Parsons, Patrick Kua
"Agile Software Architecture: Aligning Agile Processes and Software Architectures" by Muhammad Ali Babar, Alan W. Brown, Kai Koskimies, Ivan Mistrík
"Continuous Architecture: Sustainable Architecture in an Agile and Cloud-Centric World" by Murat Erder, Pierre Pureur
"Balancing Agility and Discipline: A Guide for the Perplexed" by Barry Boehm, Richard Turner
"Architected Agile Solutions for Software-Reliant Systems" by Barry Boehm, Jo Ann Lane, Richard Turner
"The ROI of Systems Engineering: Some Quantitative Results" by Barry Boehm, Ricardo Valerdi
"Lean Architecture: for Agile Software Development" 1st edition by James O. Coplien, Gertrud Bjørnvig
"Agile Practice Guide" by Project Management Institute (PMI), 2017
Стандарты:
"ISO/IEC/IEEE 42010:2011(en) Systems and software engineering — Architecture description"
"ISO/IEC/IEEE 42020:2019 Software, systems and enterprise — Architecture processes"
"ISO/IEC/IEEE 42030:2019 Software, systems and enterprise — Architecture evaluation framework"
ГОСТ Р 57100-2016 Системная и программная инженерия. Описание архитектуры
Рейтинг инструментов для упраления требованиями/архитектурой/SDLC/etc. от Gartner по категориям: "Reviews Organized by Markets".
Аналитика¶
"Software Requirements (Developer Best Practices)" 3rd Edition by Karl Wiegers
"Handbook of Requirements and Business Analysis" by Bertrand Meyer
"INCOSE Guide for Writing Requirements" by INCOSE
"Systems engineering handbook. A guide for System Life Cycle Processes and activities." by INCOSE
"Managing Software Requirements: A Unified Approach" 1st edition by Dean Leffingwell, Don Widrig
"Managing Software Requirements (paperback): A Use Case Approach" 2d Edition by Dean Leffingwell, Don Widrig
"Requirements Engineering Fundamentals: A Study Guide for the Certified Professional for Requirements Engineering Exam - Foundation Level - IREB compliant" 2nd Edition by Klaus Pohl, Chris Rupp
"Прикладной системный анализ" / Ф.П. Тарасенко
"A Guide to the Business Analysis Body of Knowledge (BABOK®)"
"Guide to the Systems Engineering Body of Knowledge (SEBoK)"
"A Glossary of Requirements Engineering Terminology" Version 1.7
"A Glossary of Requirements Engineering Terminology Caution: This glossary is aligned to the CPRE Foundation Level syllabus 3.0 only!" Version 2.0.0
Аналитика в Agile:
"Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise" by Dean Leffingwell
Whitepaper "A Lean and Scalable Requirements Information Model for the Agile Enterprise" by Dean Leffingwell with Juha‐Markus Aalto
"An Agile Architectural Epic Kanban System: Part 2 – The Model" by Dean Leffingwell
"IREB Certified Professional for Requirements Engineering RE@Agile Glossary"
Другие подборки литературы по аналитике:
Смотрите также список инструментов для управления требованиями:
Tools on Volere Requirements Resources
Requirements Tools on Volere Requirements Resources
Изучаем оценивание задач¶
"Practice Standard for Scheduling" 3d edition by Project Management Institute
"Practice Standard for Project Estimating" 2d edition Project Management Institute
"Software Estimation: Demystifying the Black Art (Developer Best Practices)" by Steve McConnell (я встречал в интернете краткий конспект)
"Agile Estimating and Planning" by Mike Cohn
Очень кратко (всего 3 страницы) о методике оценивания PERT:
"The Clean Coder" by Robert C. Martin, "Chapter 10 Estimation :: PERT"
Статья, отвечающая на очень частый вопрос:
"How Do Story Points Relate to Hours?" by Mike Cohn
Оценка - это не единичное значение, а вероятностная распределённость:
YOW! 2016 Robert C. Martin - "Effective Estimation (or: How not to Lie)"
"How to Read Lead Time Distribution" by Mauvisoft Team
Функциональное программирование¶
"Software architecture: object-oriented vs functional" by Bertrand Meyer
"Category Theory for Programmers" by Bartosz Milewski (unofficial PDF and LaTeX source)
"Domain Modeling Made Functional. Tackle Software Complexity with Domain-Driven Design and F#" by Scott Wlaschin
"F# for Fun and Profit" by Scott Wlaschin
"Functional Programming for the Object-Oriented Programmer" by Brian Marick
"Functional Thinking" by Neal Ford
"Haskell"
"The Science of Functional Programming. A Tutorial, with Examples in Scala." by Sergei Winitzki, Ph.D.
"Microservices with Clojure. Develop event-driven, scalable, and reactive microservices with real-time monitoring" by Anuj Kumar
Для Golang-разработчиков:
"Learning Functional Programming in Go: Change the way you approach your applications using functional programming in Go" by Lex Sheehan
Справочники¶
"Computing Handbook. Computer Science and Software Engineering." 3d edition by Allen Tucker, Teofilo Gonzalez, Jorge Diaz-Herrera
Справочная информация¶
Body of Knowledge¶
"Guide to the Systems Engineering Body of Knowledge (SEBoK)"
"Software Engineering Body of Knowledge (SWEBOK) v.3" (на русском)
"Software Engineering Body of Knowledge (SWEBOK) v.4 (draft)"
"The Information Technology Architecture Body of Knowledge (ITABoK)"
"A Guide to the Business Architecture Body of Knowledge(R) (BIZBOK(R) Guide)"
"A Guide to the Business Analysis Body of Knowledge (BABOK®)"
"DAMA-DMBOK: Data Management Body of Knowledge" 2nd edition by DAMA International
"The Project Management Body of Knowledge (PMBoK)" by Project Management Institute (PMI)
"Agile Practice Guide" by Project Management Institute (PMI), 2017
"Учебник 4CDTO. Настольная книга руководителя цифровой трансформации"
"Systems engineering handbook. A guide for System Life Cycle Processes and activities." by INCOSE
"The global skills and competency framework for a digital world" by SFIA Foundation
"List of Bodies of Knowledge" by SFIA Foundation
"mellarius.ru" - превосходный минималистичный и самодостаточный справочник по архитектуре, анализу, организации процессов, тестированию и т.п.
ГОСТы¶
Online-каталоги¶
DDD and Messaging Architectures - an overview of different series on patterns in distributed systems by Mathias Verraes.
The Arcitura Education Patterns, Mechanisms and Metrics Master Catalog
Software Systems Architecture - This web site contains a selection of supporting material for the book ("Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives" 2nd edition by Nick Rozanski, Eóin Woods), including sample chapters, references and white papers.
Code Smell catalogs¶
Chapter 17: "Smells and Heuristics" of the book "Clean Code: A Handbook of Agile Software Craftsmanship" by Robert C. Martin
Chapter 3. "Bad Smells in Code" of the book "Refactoring: Improving the Design of Existing Code" by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
Code Smell catalog on the site of Ward Cunningham
"Refactoring To Patterns" by Joshua Kerievsky
Другие подборки литературы¶
Domain Driven Design in Python, Ruby and other dynamic languages resources
Solution Architecture links, articles, books, video lessons, etc.
The System Design Primer - Learn how to design large-scale systems. Prep for the system design interview.
List of awesome university courses for learning Computer Science
MAXimal :: bookz - электронные версии различных книг по алгоритмам
Книги по направлению Архитектура и проектирование ПО от эксперта luxoft
The Architect's Path (Part 1 - Model) by Gregor Hohpe
The Architect's Path (Part 2 - Implementation) by Gregor Hohpe
Software Architecture Book References by Mark Richards
Почтовые рассылки и сообщества¶
Эталонные демонстрационные приложения¶
eShopOnContainers (CQRS, DDD, Microservices)
Microsoft patterns & pratices CQRS Journey sample application (CQRS, DDD, Event Sourcing, SAGA transactions)
"A perfect example of this [you can see] if you go look at the CQRS and Event Sourcing by Microsoft Patterns and Practices, which is heavily focused on doing this inside of Azure using their toolkits."
- Greg Young, "A Decade of DDD, CQRS, Event Sourcing" at 18:15
Full Modular Monolith application with Domain-Driven Design approach by Kamil Grzybek
Sample .NET Core REST API CQRS implementation with raw SQL and DDD using Clean Architecture by Kamil Grzybek
Refactoring from anemic to rich Domain Model example by Kamil Grzybek
Sample Bounded Contexts for C#.NET from the book "Implementing Domain-Driven Design" by Vaughn Vernon
Sample Bounded Contexts from the book "Implementing Domain-Driven Design" by Vaughn Vernon
xoom-examples - the VLINGO XOOM examples demonstrating features and functionality available in the reactive components.
Implementation of samples from the book "Domain-Driven Design" by Eric Evans in Java, C#, Ruby, Golang (yet another Golang). See also the article.
Goa provides a holistic approach for developing remote APIs and microservices in Go.
Simple CQRS example by Greg Young (приложение так же реализует Event Sourcing)
Greg Young's Simple CQRS in F# by Jérémie Chassaing
Golang DDD ES/CQRS Reference Application by EventStore contributors
Complete serverless application to show how to apply DDD, Clean Architecture, and CQRS by practical refactoring of a Go project (more info) by Robert Laszczak
Clean Monolith Shop by Robert Laszczak - Source code for article "Why using Microservices or Monolith can be just a detail?"
go-iddd - showcase project for implementing DDD in Go by Anton Stöckl (see more info here and here).
transfer-money-go by Zhang Xiaolong - A sample of DDD and DCI in Go.
ddd-sample-in-golang by Zhang Xiaolong.
go-distributed-sys - Guidance for building distributed systems and Microservices in Go. "Building Event-Driven Distributed Systems in Go with gRPC, NATS JetStream and CockroachDB" by Shiju Varghese
Real-time Map displays real-time positions of public transport vehicles in Helsinki. It's a showcase for Proto.Actor - an ultra-fast distributed actors solution for Go, C#, and Java/Kotlin. See also realtimemap-dotnet implementation in .NET.
Demo taxi system, using eventsourcing library by John Bywater
Example "bank accounts" application using the Python eventsourcing library by John Bywater
Example "cargo shipping" application using the Python eventsourcing library by John Bywater
Examples of using eventsourcing library by John Bywater
FTGO example application. Example code for the book Microservice patterns by Chris Richardson
Eventuate Tram Customers and Orders by Chris Richardson
Eventuate Tram Customers and Orders - .NET version by Chris Richardson
eventuate-examples by Chris Richardson
Sample code for the book Principles, Practices and Patterns of Domain-Driven Design by Scott Millett, Nick Tune
Hands-On Domain-Driven Design with .NET Core, published by Packt by Alexey Zimarev
"dotnet-sample" - Sample application using Eventuous .NET by Alexey Zimarev
Extended code samples related to the book "Domain Modeling Made Functional" by Scott Wlaschin
Railway-Oriented-Programming-Example by Scott Wlaschin
Order Taking Service - Idris version of Domain Modeling Made Functional Book.
DDD with Actors by Vaughn Vernon
The examples for the book "Reactive Messaging Patterns with the Actor Model" by Vaughn Vernon
A Stock Trader system to demonstrate reactive systems development (source by RedElastic)
ContosoUniversityDotNetCore-Pages by Jimmy Bogard
RedElastic: reactive-stock-trader - A reference architecture for stock trading to demonstrate the concepts of reactive systems development. Based on the original Stock Trader by IBM and implemented with Lagom by Lightbend. "Reactive in practice: A complete guide to event-driven systems development in Java."
IBM Stock Trader - Org containing a repository per microservice in the IBM Stock Trader cloud-native sample application. "Introduction to the IBM Stock Trader sample."
Refactoring from Anemic Domain Model Towards a Rich One by Vladimir Khorikov
DDD in Practice by Vladimir Khorikov
DDD and EF Core by Vladimir Khorikov
CQRS in Practice by Vladimir Khorikov
Applying Functional Principles in C# by Vladimir Khorikov
Specification Pattern in C# by Vladimir Khorikov
Specification pattern implementation in C# by Vladimir Khorikov
Validation in DDD course by Vladimir Khorikov
Варианты реализации OO/Functional Aggregates на примере Reference Applications by Chris Richardson:
Others: