Skip to content

Instantly share code, notes, and snippets.

@lafleurh
Created February 8, 2023 03:13
Show Gist options
  • Save lafleurh/6dd17525f0ed4a81dd1443c1101fd024 to your computer and use it in GitHub Desktop.
Save lafleurh/6dd17525f0ed4a81dd1443c1101fd024 to your computer and use it in GitHub Desktop.
{"title":"Martin Fowler","link":"https://martinfowler.com/feed.atom","items":[{"title":"My favorite musical discoveries of 2022","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/2022-music.html'><img src = 'https://martinfowler.com/articles/2022-music/card.png' width = ''></img></a></div>\n\n<p>I continue my habit of picking out <a href = 'https://martinfowler.com/articles/2022-music.html'>six favorite musical discoveries</a> for\n last year. 2022 includes big-band techno, Mediterranean fusion,\n afrobeat in England, jazz-folk vocals, and accordion-led jazz trio.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/2022-music.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2023-01-12T08:50:00-05:00","link":"https://martinfowler.com/articles/2022-music.html"},{"title":"Some activities for the Data Mesh Accelerate Workshop","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/data-mesh-accelerate-workshop.html#ASampleAgendaForADataMeshAccelerateWorkshop'><img src = 'https://martinfowler.com/articles/data-mesh-accelerate-workshop/data-mesh-accelerate-workshop.png' width = ''></img></a></div>\n\n<p><b class = 'author'>Paulo Caroli</b> and <b class = 'author'>Steve Upton</b> continue\n their article on \n the Data Mesh Accelerate Workshop by describing some of the activities that we do\n during workshop: Kick Off, Data Mesh Four Principles, Data Mesh Nirvana,\n and 4 Key Metrics.\n </p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/data-mesh-accelerate-workshop.html#ASampleAgendaForADataMeshAccelerateWorkshop'>more…</a></p>","$":{"type":"html"}},"entryDate":"2023-01-10T09:21:00-05:00","link":"https://martinfowler.com/articles/data-mesh-accelerate-workshop.html#ASampleAgendaForADataMeshAccelerateWorkshop"},{"title":"Data Mesh Accelerate Workshop","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/data-mesh-accelerate-workshop.html'><img src = 'https://martinfowler.com/articles/data-mesh-accelerate-workshop/data-mesh-accelerate-workshop.png' width = ''></img></a></div>\n\n<p>Over the last couple of years, we've been helping several enterprises\n use the Data Mesh approach to managing analytical data. Shifting thinking\n to Data Mesh isn't easy, it changes how teams are organized, how work is\n prioritized, and what technologies to apply. To help our clients do this\n <b class = 'author'>Paulo Caroli</b> and <b class = 'author'>Steve Upton</b> describe\n the Data Mesh Accelerate Workshop, a four half-day program to align people\n involved in the effort and explore the process for identifying and\n building data products.\n </p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/data-mesh-accelerate-workshop.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2023-01-05T09:20:00-05:00","link":"https://martinfowler.com/articles/data-mesh-accelerate-workshop.html"},{"title":"Finding accounts to follow on Mastodon","description":{"_":"\n<p>My latest post on Exploring Mastodon looks at how I go about\n <a href = 'https://martinfowler.com/articles/exploring-mastodon.html#finding-accounts-to-follow'>finding people to follow</a> on a site without an algorithm\n that tries to pick posts for you.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-mastodon.html#finding-accounts-to-follow'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-12-18T18:16:00-05:00","link":"https://martinfowler.com/articles/exploring-mastodon.html#finding-accounts-to-follow"},{"title":"Installing Orbi Wifi Mesh broke my Sonos","description":{"_":"\n<p>I listen to my music using a wired set of Sonos One speakers. Last\n week I upgraded my wifi by installing a Netgear Orbi Wifi Mesh. After\n doing this my Sonos system no longer worked properly. After much hunting\n I managed to find the problem, and it was a simple fix. So I thought I'd\n share my story in case others run into a similar problem.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/2022-orbi-sonos.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-12-07T10:22:00-05:00","link":"https://martinfowler.com/articles/2022-orbi-sonos.html"},{"title":"The impact of a product delivery culture at Etsy","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-product-delivery-culture.html#BlueprintForProductDelivery'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p><b class = 'author'>Tim Cochran</b>&#xA0;<a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-product-delivery-culture.html#BlueprintForProductDelivery'>completes his tale</a> of how Etsy build a\n product delivery culture to help clear bottlenecks as they scaled. He\n discusses lean portfolio management, stronger product and engineering\n collaboration, and assess the impact of this initiative.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-product-delivery-culture.html#BlueprintForProductDelivery'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-12-06T09:40:00-05:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-product-delivery-culture.html#BlueprintForProductDelivery"},{"title":"photostream 129","description":{"_":"\n<p><a href = 'https://martinfowler.com/photos/129.html'><img src = 'https://martinfowler.com/photos/129.jpg'></img></a></p>\n\n<p></p>\n\n<p>Cape Cod, MA (2017)</p>\n","$":{"type":"html"}},"entryDate":"2022-12-03T17:32:00-05:00","link":"https://martinfowler.com/photos/129.html"},{"title":"Introducing a product delivery culture at Etsy","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-product-delivery-culture.html'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p>A second article exploring the challenges Etsy faced as it scaled up.\n <b class = 'author'>Tim Cochran</b> relates how CTO Mike Fisher identified\n problems with the product delivery process, built a cross-functional\n Product Delivery Culture team to analyze the situation, and began an\n improvement program based on lean thinking and the ideas of Marty\n Cagan.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-product-delivery-culture.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-12-01T10:10:00-05:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-product-delivery-culture.html"},{"title":"Consequences of Etsy's move to the cloud","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html#WhatWereTheChallengesOfTheCloud'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p><b class = 'author'>Tim Cochran</b> and <b class = 'author'>Keyur Govande</b>\n conclude their description of Etsy's cloud migration by looking at\n challenges, the impact of the Covid-19 pandemic, how they continue\n to learn to improve their cloud usage, and their measurements of cost and\n carbon consumption.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html#WhatWereTheChallengesOfTheCloud'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-11-29T09:48:00-05:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html#WhatWereTheChallengesOfTheCloud"},{"title":"Etsy's observability and ML infrastructure teams moving to the cloud","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html#TheChallengesOfObservingEverything'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p><b class = 'author'>Tim Cochran</b> and <b class = 'author'>Keyur Govande</b>\n continue their account of how Etsy used the cloud to scale up by\n describing the <a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html#TheChallengesOfObservingEverything'>journey of two teams</a>: observability and ML\n infrastructure</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html#TheChallengesOfObservingEverything'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-11-22T09:46:00-05:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html#TheChallengesOfObservingEverything"},{"title":"Using the cloud to scale Etsy","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p>Etsy is a well-known marketplace for craft items. The pandemic led to a\n huge spike in growth, growing from 46 million buyers to 90 million buyers\n in two years. Etsy coped with this, with no bottlenecks in the business.\n One aspect of how they did this was a <a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html'>shift to Google cloud</a>. <b class = 'author'>Tim\n Cochran</b> and <b class = 'author'>Keyur Govande</b> begin this story by\n describing the strategic principles that guided this effort and the\n incremental federated approach that they took.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-11-17T09:01:00-05:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/etsy-cloud-scale.html"},{"title":"Using CWs","description":{"_":"\n<p>One of the new features on Mastodon for a recovering twitterer is the\n CW field for new posts. CW stands for Content Warning. When I&#x2019;m composing\n a post, if I press the CW button, I have the option of putting a short\n phrase into a dialog. Readers will initially only see that short phrase,\n and need to click a button to see more. But there's a lot of strong\n opinions on when and how to use it - how do I navigate that?</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-mastodon.html#using-cws'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-11-16T10:50:00-05:00","link":"https://martinfowler.com/articles/exploring-mastodon.html#using-cws"},{"title":"Multiple Mastodon Accounts","description":{"_":"\n<p>The usual Twitter convention is to follow the whole person, meaning one\n Twitter account for a person would tweet on many different subjects. In\n the Fediverse, however, that's not encouraged, so we'll see many people\n having <a href = 'https://martinfowler.com/articles/exploring-mastodon.html#multiple-mastodon-accounts'>multiple Mastodon (and other) accounts</a>.s</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-mastodon.html#multiple-mastodon-accounts'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-11-08T19:44:00-05:00","link":"https://martinfowler.com/articles/exploring-mastodon.html#multiple-mastodon-accounts"},{"title":"Your organization should run its own Mastodon server","description":{"_":"\n<p>The latest crisis at Twitter has led to a big surge of interest in\n Mastodon and the broader Fediverse of open social media platforms. My\n colleague <a href = 'https://toot.thoughtworks.com/web/@judeswae'>Julien\n Deswaef</a> has long been an advocate of the Fediverse. Here he explains\n why organizations should <a href = 'https://martinfowler.com/articles/your-org-run-mastodon.html'>take control of their own social media platform</a>\n by running their own Mastodon server.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/your-org-run-mastodon.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-11-07T12:53:00-05:00","link":"https://martinfowler.com/articles/your-org-run-mastodon.html"},{"title":"An appeal to Americans who aren't inclined to vote in the midterm elections","description":{"_":"\n<p>In the United States, we have midterm elections coming up. Many people\n aren't interested in politics, or feel there is nobody worthwhile to vote\n for. If you're an American inclined to skip voting in these midterms, I'd\n appreciate it if you read <a href = 'https://martinfowler.com/articles/2022-midterm-vote.html'>my appeal</a>.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/2022-midterm-vote.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-11-02T14:10:00-04:00","link":"https://martinfowler.com/articles/2022-midterm-vote.html"},{"title":"Twitter feed now cross-posts to Mastodon","description":{"_":"\n<p>One of the main things I wanted to do with Mastodon was to replicate my\n twitter feed there, so that folks who would rather follow me on Mastodon\n could get everything. To do this, I used <a href = 'https://moa.party'>moa.party</a>.\n You have to give it credentials to access both your Twitter and Mastodon\n feeds, which is a little worrisome, but my Mastodon-aware colleagues have\n used it without problems. It allows cross-posting in either or both\n directions, but I've set it up to just go from Twitter to Mastodon. It's\n pretty simple and seems to be working. So if you'd like to follow my\n twitter feed from Mastodon, you can now do so.</p>\n\n<p>I'll be monitoring the follower count for the Mastodon account. If lots\n of people follow me on Mastodon, I'll probably do more with it. So\n following my Mastodon feed is vote for me to put more effort into it. But\n for the moment, I expect it to be a simple copy of what I post on\n Twitter.</p>","$":{"type":"html"}},"entryDate":"2022-11-02T09:50:00-04:00","link":"https://martinfowler.com/articles/exploring-mastodon.html#twitter-feed-to-mastodon-is-now-working"},{"title":"Exploring Mastodon","description":{"_":"\n<p>I've been a heavy user of Twitter over the last decade, and while\n Musk's purchase of Twitter hasn't got me running for the exit, it has\n prompted me to take a look at possible alternatives should Twitter change\n into something no longer worthwhile for me. The obvious alternative is for\n me to explore the fediverse with a Mastodon account. As I explore using\n Mastodon, I'll make some notes here so that others can learn from my\n explorations.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/exploring-mastodon.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-11-01T15:00:00-04:00","link":"https://martinfowler.com/articles/exploring-mastodon.html"},{"title":"Bliki: ConwaysLaw","description":{"_":"\n<p>Pretty much all the practitioners I favor in Software Architecture are deeply\n suspicious of any kind of general law in the field. Good software architecture\n is very context-specific, analyzing trade-offs that resolve differently across a wide range\n of environments. But if there is one thing they all agree on, it's the importance\n and power of Conway's Law. Important enough to affect every system I've\n come across, and powerful enough that you're doomed to defeat if you try to\n fight it.</p>\n\n<p>The law is probably best stated, by its author, as: <span class=\"foot-ref\"><a href=\"#footnote-source\">[1]</a></span></p>\n\n<blockquote>\n<p>Any organization that designs a system (defined broadly) will produce a\n design whose structure is a copy of the organization's communication\n structure.\n </p>\n\n<p class=\"quote-attribution\">-- <a href=\"https://www.melconway.com/Home/Conways_Law.html\">Melvin Conway</a></p>\n</blockquote>\n\n<p>Conway's Law is essentially the observation that the architectures of\n software systems look remarkably similar to the organization of the\n development team that built it. It was originally described to me by saying\n that if a single team writes a compiler, it will be a one-pass compiler, but\n if the team is divided into two, then it will be a two-pass compiler. Although\n we usually discuss it with respect to software, the observation applies broadly\n to systems in general. <span class=\"foot-ref\"><a href=\"#footnote-broader\">[2]</a></span></p>\n\n<div class=\"figure \"><img src=\"https://martinfowler.com/bliki/images/conwaysLaw/card.png\">\n<p class=\"photoCaption\"></p>\n</div>\n\n<p>As my colleague Chris Ford said to me: \"Conway understood that software\n coupling is enabled and encouraged by human communication.\" If I can talk\n easily to the author of some code, then it is easier for me to build up a rich\n understanding of that code. This makes it easier for my code to interact, and\n thus be coupled, to that code. Not just in terms of explicit function calls,\n but also in the implicit shared assumptions and way of thinking about the\n problem domain.</p>\n\n<p>We often see how inattention to the law can twist system architectures. If\n an architecture is designed at odds with the development organization's\n structure, then tensions appear in the software structure. Module interactions\n that were designed to be straightforward become complicated, because the teams\n responsible for them don't work together well. Beneficial design alternatives\n aren't even considered because the necessary development groups aren't talking\n to each other.</p>\n\n<p>A dozen or two people can have deep and informal communications, so Conways Law\n indicates they will create a monolith. That's fine - so Conway's Law doesn't\n impact our thinking for smaller teams. It's when the humans need organizing\n that Conway's Law should affect decision making.</p>\n\n<p>The first step in dealing with Conway's Law is know not to fight it. I\n still remember one sharp technical leader, who was just made the architect of a large\n new project that consisted of six teams in different\n cities all over the world. “I made my first architectural decision” he told\n me. “There are going to be six major subsystems. I have no idea what they are\n going to be, but there are going to be six of them.”</p>\n\n<p>This example recognized the big impact location has on human communication.\n Putting teams on separate floors of the same building is enough to\n significantly reduce communication. Putting teams in separate cities, and time\n zones, further gets in the way of regular conversation. The architect\n recognized this, and realized that he needed take this into account in his\n technical design from the beginning. Components developed in different\n time-zones needed to have a well-defined and limited interaction because their\n creators would not be able to talk easily.<span class=\"foot-ref\"><a href=\"#footnote-remote\">[3]</a></span></p>\n\n<p>A common mismatch with Conways Law is where an <a href=\"/bliki/ActivityOriented.html\">ActivityOriented</a>\n team organization works at cross-purposes to feature development. Teams\n organized by software layer (eg front-end, back-end, and database) lead to\n dominant <a href=\"/bliki/PresentationDomainDataLayering.html\">PresentationDomainDataLayering</a> structures, which is\n problematic because each feature needs close collaboration between the layers.\n Similarly dividing people along the lines of life-cycle activity (analysis,\n design, coding, testing) means lots of hand-offs to get a feature from idea\n to production.</p>\n\n<p>Accepting Conway's Law is superior to ignoring it, and in the last decade,\n we've seen a third way to respond to this law. Here we deliberately alter the\n development team's organization structure to encourage the desired software\n architecture, an approach referred to as the <b id=\"icm\">Inverse\n Conway Maneuver</b> <span class=\"foot-ref\"><a href=\"#footnote-inv\">[4]</a></span>. This approach is often talked\n about in the world of <a href=\"/articles/microservices.html#OrganizedAroundBusinessCapabilities\">microservices</a>, where advocates\n advise building small, long-lived <a href=\"/bliki/BusinessCapabilityCentric.html\">BusinessCapabilityCentric</a> teams\n that contain all the skills needed to deliver customer value. By organizing\n autonomous teams this way, we employ Conway's Law to encourage similarly\n autonomous services that can be enhanced and deployed independently of each\n other. This, indeed, is why I describe microservices as primarily a tool to\n structure a development organization. </p>\n\n<table class=\"dark-head\">\n<caption>Responses to Conway's Law</caption>\n\n<thead>\n<tr></tr>\n</thead>\n\n<tbody>\n<tr><td>Ignore</td><td> Don't take Conway's Law into account, because you've never heard of it, or you don't think it applies (narrator: it does)</td></tr>\n\n<tr><td>Accept</td><td> Recognize the impact of Conway's Law, and ensure your architecture doesn't clash with designers' communication patterns.</td></tr>\n\n<tr><td>Inverse Conway Maneuver</td><td> Change the communication patterns of the designers to encourage the desired software architecture.</td></tr>\n</tbody>\n</table>\n\n<p>While the inverse Conway maneuver is a useful tool, it isn't all-powerful.\n If you have an existing system with a rigid architecture that you want to\n change, changing the development organization <a href=\"https://verraes.net/2022/05/conways-law-vs-rigid-designs/\">isn't going to be an instant\n fix</a>. Instead it's more likely to result in a mismatch between developers\n and code that adds friction to further enhancement. With an existing system\n like this, the point of Conway's Law is that we need to take into account its\n presence while changing both organization and code base. And as usual, I'd\n recommend taking small steps while being vigilant for feedback.</p>\n\n<p>Domain-Driven Design plays a role with Conway's Law to help define organization\n structures, since a key part of DDD is to identify <a href=\"/bliki/BoundedContext.html\">BoundedContexts</a>.\n A key characteristic of a Bounded Context is that it has its own\n <a href=\"/bliki/UbiquitousLanguage.html\">UbiquitousLanguage</a>, defined and understood by the group of people\n working in that context. Such contexts form ways to group people around a\n subject matter that can then align with the flow of value.</p>\n\n<p class=\"final\">The key thing to remember about Conways Law is that the\n modular decomposition of a system and the decomposition of the development\n organization must be done together. This isn't just at the beginning,\n evolution of the architecture and reorganizing the human organization must go\n hand-in-hand throughout the life of an enterprise.</p>\n\n<div class=\"furtherReading\">\n<h2>Further Reading</h2>\n\n<p>Recognizing the importance of Conway's Law means that budding software\n architects need to think about IT organization design. Two worthwhile books\n on this topic are <a href=\"https://www.amazon.com/gp/product/0133903354/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0133903354&amp;linkCode=as2&amp;tag=martinfowlerc-20\">Agile IT Organization Design</a>\n by Narayan and <a href=\"https://www.amazon.com/gp/product/1942788819/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1942788819&amp;linkCode=as2&amp;tag=martinfowlerc-20\">Team Topologies</a> by Skelton and\n Pais.</p>\n\n<p>Birgitta Böckeler, Mike Mason, James Lewis and I discuss our experiences\n with Conway's Law on the <a href=\"https://www.thoughtworks.com/insights/podcasts/technology-podcasts/reckoning-with-the-force-conways-law\">ThoughtWorks Technology Podcast</a></p>\n</div>\n\n<div class=\"acknowledgements\">\n<h2>Acknowledgements</h2>\nBill Codding, Birgitta Boeckeler, Camilla Crispim, Chris Ford, Gabriel\n Sadaka, Matteo Vaccari, Michael Chaffee, and Unmesh Joshi\n\n reviewed drafts of this article and suggested improvements\n </div>\n\n<div class=\"footnote-list\">\n<h2>Notes</h2>\n\n<div class=\"footnote-list-item\" id=\"footnote-source\">\n<p><span class=\"num\">1: </span>\n The source for Conway's law is <a href=\"https://www.melconway.com/Home/Committees_Paper.html\">an\n article</a> written by Melvin Conway in 1968. It was published by Datamation,\n one of the most important journals for the software\n industry at that time. It was later dubbed “Conway’s Law” by Fred Brooks\n in his hugely influential book <a href=\"https://www.amazon.com/gp/product/0201835959/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0201835959&amp;linkCode=as2&amp;tag=martinfowlerc-20\">The Mythical\n Man-Month</a>. I ran into it there at the beginning of my career in the\n 1980s, and it has been a thought-provoking companion ever since.\n </p>\n</div>\n\n<div class=\"footnote-list-item\" id=\"footnote-broader\">\n<p><span class=\"num\">2: </span>\n As Conway mentions, consider how the social problems around poverty, health\n care, housing, and education are influenced by the structures of government.\n </p>\n</div>\n\n<div class=\"footnote-list-item\" id=\"footnote-remote\">\n<p><span class=\"num\">3: </span>\n While location makes a big contribution to in-person communication\n patterns, one of the features of <a href=\"/articles/remote-or-co-located.html#remote-first\">remote-first</a> working, is that it reduces the role of\n distance, as everyone is communicating online. Conway's Law still applies,\n but it's based on the online communication patterns. Time zones still\n have a big effect, even online.\n </p>\n</div>\n\n<div class=\"footnote-list-item\" id=\"footnote-inv\">\n<p><span class=\"num\">4: </span>\n The term “inverse Conway maneuver” was coined by Jonny LeRoy and Matt\n Simons in <a href=\"http://jonnyleroy.com/2011/02/03/dealing-with-creaky-legacy-platforms/\">an article</a> published in the December 2010\n issue of the Cutter IT journal.\n </p>\n</div>\n</div>\n\n<div class=\"revisions\">\n<h2>Revisions</h2>\n\n<p>2022-10-24: I added the paragraph about the\n inverse Conway maneuver and rigid architectures. I also added the footnote\n about remote-first working.</p>\n</div>\n","$":{"type":"html"}},"entryDate":"2022-10-20T10:02:00-04:00","link":"https://martinfowler.com/bliki/ConwaysLaw.html"},{"title":"Negotiate a balanced product investment mix","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#NegotiateABalancedProductInvestmentMix'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p>Rick and Kennedy conclude their article on the bottleneck caused by\n tension between product and engineering. <a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#NegotiateABalancedProductInvestmentMix'>This final section</a>\n addresses balancing between under and over-engineering in the product's\n technical infrastructure.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#NegotiateABalancedProductInvestmentMix'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-10-19T08:02:00-04:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#NegotiateABalancedProductInvestmentMix"},{"title":"Creating multidisciplinary stream-aligned teams to escape the product-vs-engineering bottleneck","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#CreateMultidisciplinaryStream-alignedTeams'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p>Rick and Kennedy continue explaining how to deal with the lack of \n collaboration between product and engineering. <a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#CreateMultidisciplinaryStream-alignedTeams'>This installment</a> advises\n creating multidisciplinary stream-aligned teams and establishing team\n working agreements.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#CreateMultidisciplinaryStream-alignedTeams'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-10-18T09:50:00-04:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#CreateMultidisciplinaryStream-alignedTeams"},{"title":"Getting out of the product-v-engineering bottleneck by identifying your \"first team\"","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#exit'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p>Rick and Kennedy start their discussion of <a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#exit'>how to break through</a> the\n product-V-engineering bottleneck by getting people to identify and focus\n on their \"first team\", and to develop a shared understanding of how a\n business creates value.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#exit'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-10-12T10:38:00-04:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html#exit"},{"title":"Bottleneck #03: Product v Engineering","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html'><img src = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/card.png' width = ''></img></a></div>\n\n<p>In the third article on the Bottlenecks of Scaleups, Rick Kick and\n Kennedy Collins talk about the bottleneck that occurs when <a href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html'>friction\n develops between product and engineering</a>. In this first installment\n they discuss the signs that show this friction is occurring: with finger\n pointing and engineering lacking a sense of product context, as the teams\n communicate but don't collaborate.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-10-10T11:16:00-04:00","link":"https://martinfowler.com/articles/bottlenecks-of-scaleups/03-product-v-engineering.html"},{"title":"Request Waiting List","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/request-waiting-list.html'><img src = 'https://martinfowler.com/articles/patterns-of-distributed-systems/card.png' width = ''></img></a></div>\n\n<p>Nodes often have to contact several other nodes to form a quorum to\n handle a client request. <b class = 'author'>Unmesh Joshi</b> how \n a <a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/request-waiting-list.html'>waiting list</a> keeps track of the outstanding requests and sorting out\n what to do when it receives enough responses.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/request-waiting-list.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-09-09T12:39:00-04:00","link":"https://martinfowler.com/articles/patterns-of-distributed-systems/request-waiting-list.html"},{"title":"Request Batch","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/request-batch.html'><img src = 'https://martinfowler.com/articles/patterns-of-distributed-systems/card.png' width = ''></img></a></div>\n\n<p>When distributing data leads to lots of small messages around a cluster\n then network latency and the request processing time (including\n serialization, deserialization of the request on the server side) can add\n significant overhead. <b class = 'author'>Unmesh Joshi</b> shows how requests can\n be combined into a <a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/request-batch.html'>Request Batch</a> to improve throughput.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/request-batch.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-09-06T11:21:00-04:00","link":"https://martinfowler.com/articles/patterns-of-distributed-systems/request-batch.html"},{"title":"Key-Range Partitions","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/key-range-partitions.html'><img src = 'https://martinfowler.com/articles/patterns-of-distributed-systems/card.png' width = ''></img></a></div>\n\n<p>A <a href = '/articles/patterns-of-distributed-systems/fixed-partitions.html'>Fixed\n Partition</a> provides a good way to distribute data over many nodes when\n clients are accessing a single key at a time. If, however, a client wants\n a range of values, such as all names from \"a\" to \"f\", then they'll need to\n access every node. <b class = 'author'>Unmesh Joshi</b> Explains how a\n <a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/key-range-partitions.html'>Key-Range Partition</a> provides a better alternative for this\n kind of data access.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/key-range-partitions.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-08-25T09:15:00-04:00","link":"https://martinfowler.com/articles/patterns-of-distributed-systems/key-range-partitions.html"},{"title":"Fixed Partitions","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/fixed-partitions.html'><img src = 'https://martinfowler.com/articles/patterns-of-distributed-systems/card.png' width = ''></img></a></div>\n\n<p>When partitioning data across a set of cluster nodes we need a uniform\n distribution and to be able add and remove nodes to the cluster without\n causing a lot of data to be moved around. <b class = 'author'>Unmesh Joshi</b>\n explains how to do this by allocating data to a large number of virtual\n <a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/fixed-partitions.html'>fixed partitions</a> which are then allocated to the nodes.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/fixed-partitions.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-08-23T11:55:00-04:00","link":"https://martinfowler.com/articles/patterns-of-distributed-systems/fixed-partitions.html"},{"title":"Emergent Leader","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/emergent-leader.html'><img src = 'https://martinfowler.com/articles/patterns-of-distributed-systems/card.png' width = ''></img></a></div>\n\n<p>Peer-to-peer systems treat each cluster node as equal; there is no\n strict leader. This means there is no explicit leader election process as\n happens in the Leader and Followers pattern. However, there still needs to\n be one cluster node acting as cluster coordinator for tasks such as\n assigning data partitions to other cluster nodes and tracking when new\n cluster nodes join or fail and take corrective actions. <b class = 'author'>Unmesh\n Joshi</b> explains how this is resolved with an <a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/emergent-leader.html'>Emergent\n Leader</a></p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/emergent-leader.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-08-18T10:56:00-04:00","link":"https://martinfowler.com/articles/patterns-of-distributed-systems/emergent-leader.html"},{"title":"Clock-Bound Wait","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/clock-bound.html'><img src = 'https://martinfowler.com/articles/patterns-of-distributed-systems/card.png' width = ''></img></a></div>\n\n<p>Although he's been quiet for a while on here, <b class = 'author'>Unmesh\n Joshi</b> has been working hard on more of his <b>Patterns of\n Distributed Systems</b>. In this first of a new batch, he looks at the\n difficulty of getting consistent reads from servers in the presence of the\n inevitable drifts between system logs. A <a href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/clock-bound.html'>Clock-Bound Wait</a>\n adds a small wait time on a request for a value at a recent time. This way\n the server can be sure it's providing the correct value should it have\n changed during within the window of the clock lag.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/patterns-of-distributed-systems/clock-bound.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-08-17T10:22:00-04:00","link":"https://martinfowler.com/articles/patterns-of-distributed-systems/clock-bound.html"},{"title":"Advocate, educator, and authorial stance","description":{"_":"\n<p>When I'm writing, or mentoring others in writing, about a particular\n technique I prefer to take the role of an educator rather than that of an\n advocate. When doing that, I see <a href = 'https://martinfowler.com/articles/authorial-stance.html'>two main stances</a> an author\n can take. One is to focus on the trade-offs between this technique and its\n alternatives, the other is to focus on the merits of the particular\n technique and not discuss the alternatives.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/authorial-stance.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-07-19T13:20:00-04:00","link":"https://martinfowler.com/articles/authorial-stance.html"},{"title":"Legacy Displacement: Revert to Source","description":{"_":"\n<div class = 'img-link'><a href = 'https://martinfowler.com/articles/patterns-legacy-displacement/revert-to-source.html'><img src = 'https://martinfowler.com/articles/patterns-legacy-displacement/card.png' width = ''></img></a></div>\n\n<p>Legacy systems often act as integration hubs, ingesting source data to\n pass on to downstream systems. A new downstream system can decouple itself\n from legacy by finding the source of data to the legacy and integrating\n directly to that instead. <b class = 'author'>Ian Cartwright, Rob Horn, and James\n Lewis</b> describe this <a href = 'https://martinfowler.com/articles/patterns-legacy-displacement/revert-to-source.html'>Revert to Source</a> pattern,\n explaining that this part of legacy displacement often also allows a new\n system to take advantage of upgrades to source data that the legacy had neglected.</p>\n\n<p><a class = 'more' href = 'https://martinfowler.com/articles/patterns-legacy-displacement/revert-to-source.html'>more…</a></p>","$":{"type":"html"}},"entryDate":"2022-07-07T10:07:00-04:00","link":"https://martinfowler.com/articles/patterns-legacy-displacement/revert-to-source.html"}]}
@lafleurh
Copy link
Author

lafleurh commented Feb 8, 2023

This is a sample RSS converted to JSON using the library at https://github.com/lafleurh/rss2jsonfn

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment