Are you over 18 and want to see adult content?
More Annotations
A complete backup of https://heisenbergreport.com
Are you over 18 and want to see adult content?
A complete backup of https://fafcea.com
Are you over 18 and want to see adult content?
A complete backup of https://stirrup-queens.com
Are you over 18 and want to see adult content?
A complete backup of https://tetesaclaques.tv
Are you over 18 and want to see adult content?
A complete backup of https://nuhotelbrooklyn.com
Are you over 18 and want to see adult content?
A complete backup of https://umzfood.com
Are you over 18 and want to see adult content?
A complete backup of https://freelives.net
Are you over 18 and want to see adult content?
A complete backup of https://drycreekphoto.com
Are you over 18 and want to see adult content?
A complete backup of https://astfond.ru
Are you over 18 and want to see adult content?
A complete backup of https://mobango.com
Are you over 18 and want to see adult content?
A complete backup of https://mercator-research.eu
Are you over 18 and want to see adult content?
A complete backup of https://csda.com
Are you over 18 and want to see adult content?
Favourite Annotations
A complete backup of https://dolabuy.ru
Are you over 18 and want to see adult content?
A complete backup of https://irishometech.com
Are you over 18 and want to see adult content?
A complete backup of https://ajspieceofthepuzzle.org
Are you over 18 and want to see adult content?
A complete backup of https://ukgf-centr.ru
Are you over 18 and want to see adult content?
A complete backup of https://autowereld.com
Are you over 18 and want to see adult content?
A complete backup of https://skinacea.com
Are you over 18 and want to see adult content?
A complete backup of https://museon.nl
Are you over 18 and want to see adult content?
A complete backup of https://diamondlinks.com
Are you over 18 and want to see adult content?
A complete backup of https://majorhifi.com
Are you over 18 and want to see adult content?
A complete backup of https://omha.net
Are you over 18 and want to see adult content?
A complete backup of https://cialisph.com
Are you over 18 and want to see adult content?
A complete backup of https://sunshineproducts.ca
Are you over 18 and want to see adult content?
Text
properly.
BOUNDEDCONTEXT
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models of AN APPROPRIATE USE OF METRICS The first guideline to an appropriate use of metrics separates the real goal from the measure selected to monitor progress towards that goal. The real goal must always be made explicit. Guideline #2 and #3, monitoring trends and doing so over shorter periods is about helping organizations realize their goal faster.SEMANTICCONFLICT
1: And if we change the exact same text, the merge tool usually can't help either unless you have something like git rerere. But that problem is much smaller than semantic conflicts. 2: If your features are built quickly, within a couple of days, then you'll run into less semantic conflicts (and if less than a day, then it's in effect thesame
DESIGNSTAMINAHYPOTHESIS Putting effort into to the design of your software improves the stamina of your project, allowing you to go faster for longer. One way of visualizing this is the following pseudo-graph. The pseudo-graph plots delivered functionality (cumulative) versus time for two imaginary stereotypical projects: one with good design and one with nodesign.
P OF EAA: DATA TRANSFER OBJECT Data Transfer Object. An object that carries data between processes in order to reduce the number of method calls. For a full description see P of EAA page 401. When you're working with a remote interface, such as Remote Facade (388), each call to it is expensive. As a result you need to reduce the number of calls, and that means that you needTWOHARDTHINGS
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick. There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery -- MathiasVerraes.
MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure. MAXIMIZING DEVELOPER EFFECTIVENESS Maximizing Developer Effectiveness. Technology is constantly becoming smarter and more powerful. I often observe that as these technologies are introduced an organization’s productivity instead of improving has reduced. This is because the technology has increased complexities and cognitive overhead to the developer, reducing their effectiveness. THE PRACTICAL TEST PYRAMID The Practical Test Pyramid. The "Test Pyramid" is a metaphor that tells us to group software tests into buckets of different granularity. It also gives an idea of how many tests we should have in each of these groups. Although the concept of the Test Pyramid has been around for a while, teams still struggle to put it into practiceproperly.
BOUNDEDCONTEXT
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models of AN APPROPRIATE USE OF METRICS The first guideline to an appropriate use of metrics separates the real goal from the measure selected to monitor progress towards that goal. The real goal must always be made explicit. Guideline #2 and #3, monitoring trends and doing so over shorter periods is about helping organizations realize their goal faster.SEMANTICCONFLICT
1: And if we change the exact same text, the merge tool usually can't help either unless you have something like git rerere. But that problem is much smaller than semantic conflicts. 2: If your features are built quickly, within a couple of days, then you'll run into less semantic conflicts (and if less than a day, then it's in effect thesame
DESIGNSTAMINAHYPOTHESIS Putting effort into to the design of your software improves the stamina of your project, allowing you to go faster for longer. One way of visualizing this is the following pseudo-graph. The pseudo-graph plots delivered functionality (cumulative) versus time for two imaginary stereotypical projects: one with good design and one with nodesign.
P OF EAA: DATA TRANSFER OBJECT Data Transfer Object. An object that carries data between processes in order to reduce the number of method calls. For a full description see P of EAA page 401. When you're working with a remote interface, such as Remote Facade (388), each call to it is expensive. As a result you need to reduce the number of calls, and that means that you needTWOHARDTHINGS
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick. There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery -- MathiasVerraes.
WRITE-AHEAD LOG
The write ahead log is append-only. Because of this behaviour, in case of client communication failure and retries, logs can contain duplicate entries. When the log entries are applied, it needs to make sure that the duplicates are ignored. If the final state is something like a HashMap, where the updates to the same key are idempotent, no TESTING STRATEGIES IN A MICROSERVICE ARCHITECTURE How to use this Infodeck. Tap the info icon in the top banner to show this panel, tap it again to hide it.; Move forward and backward using the arrow buttons at the top banner. If you’re on a touch device then a tap on the left or right will move backwards or forwards.TWOHARDTHINGS
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick. There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery -- MathiasVerraes.
EVOLUTIONARY DATABASE DESIGN Evolutionary Database Design. Over the last decade we've developed and refined a number of techniques that allow a database design to evolve as an application develops. This is a very important capability for agile methodologies. The techniques rely on applying continuous integration and automated refactoring to database development,together
BRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
AN APPROPRIATE USE OF METRICS The first guideline to an appropriate use of metrics separates the real goal from the measure selected to monitor progress towards that goal. The real goal must always be made explicit. Guideline #2 and #3, monitoring trends and doing so over shorter periods is about helping organizations realize their goal faster. HOW TO MOVE BEYOND A MONOLITHIC DATA LAKE TO A DISTRIBUTED How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh. Many enterprises are investing in their next generation data lake, with the hope of democratizing data at scale to provide business insights and ultimately make automated intelligent decisions.REPORTINGDATABASE
A reporting database has a number of advantages: The structure of the reporting database can be specifically designed to make it easier to write reports. You don't need to normalize a reporting database, because it's read-only. Feel free to duplicate data as COMMANDQUERYSEPARATION The term 'command query separation' was coined by Bertrand Meyer in his book " Object Oriented Software Construction " - a book that is one of the most influential OO books during the early days of OO. (The first edition is the one that had the influence, the second edition is good but you'll need several months in a gym before you can lift it.)INVERSIONOFCONTROL
The methods supplied by the user tailor the generic algorithms defined in the framework for a particular application. Inversion of Control is a key part of what makes a framework different to a library. A library is essentially a set of functions that you MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure. MAXIMIZING DEVELOPER EFFECTIVENESS Maximizing Developer Effectiveness. Technology is constantly becoming smarter and more powerful. I often observe that as these technologies are introduced an organization’s productivity instead of improving has reduced. This is because the technology has increased complexities and cognitive overhead to the developer, reducing their effectiveness.WRITE-AHEAD LOG
The write ahead log is append-only. Because of this behaviour, in case of client communication failure and retries, logs can contain duplicate entries. When the log entries are applied, it needs to make sure that the duplicates are ignored. If the final state is something like a HashMap, where the updates to the same key are idempotent, no MIND THE PLATFORM EXECUTION GAP A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. -- Evan Bottcher. The purpose of a developer productivity platform is to allow teams who build end-user products concentrate on their core mission. Examples of platform servicesinclude delivery
BITEMPORAL HISTORY
Bitemporal history is a way of coming to terms that communication is neither perfect nor instantaneous. Actual history is no longer append-only, we go back and make retroactive changes. However record history itself is append only. We don't change what we thought we knew about Sally's salary on Feb 25.BOUNDEDCONTEXT
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models ofBRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
TOLERANTREADER
One of the purposes of a Data Transfer Object is to wrap the data payload behind a convenient object so the rest of the system can just go anOrderHistory.orders and be impervious to changes that would even break a tolerant reader. It's worth bearing this principle in mind even if your data transfer protocol is binary. DESIGNSTAMINAHYPOTHESIS Putting effort into to the design of your software improves the stamina of your project, allowing you to go faster for longer. One way of visualizing this is the following pseudo-graph. The pseudo-graph plots delivered functionality (cumulative) versus time for two imaginary stereotypical projects: one with good design and one with nodesign.
MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure. MAXIMIZING DEVELOPER EFFECTIVENESS Maximizing Developer Effectiveness. Technology is constantly becoming smarter and more powerful. I often observe that as these technologies are introduced an organization’s productivity instead of improving has reduced. This is because the technology has increased complexities and cognitive overhead to the developer, reducing their effectiveness.WRITE-AHEAD LOG
The write ahead log is append-only. Because of this behaviour, in case of client communication failure and retries, logs can contain duplicate entries. When the log entries are applied, it needs to make sure that the duplicates are ignored. If the final state is something like a HashMap, where the updates to the same key are idempotent, no MIND THE PLATFORM EXECUTION GAP A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. -- Evan Bottcher. The purpose of a developer productivity platform is to allow teams who build end-user products concentrate on their core mission. Examples of platform servicesinclude delivery
BITEMPORAL HISTORY
Bitemporal history is a way of coming to terms that communication is neither perfect nor instantaneous. Actual history is no longer append-only, we go back and make retroactive changes. However record history itself is append only. We don't change what we thought we knew about Sally's salary on Feb 25.BOUNDEDCONTEXT
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models ofBRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
TOLERANTREADER
One of the purposes of a Data Transfer Object is to wrap the data payload behind a convenient object so the rest of the system can just go anOrderHistory.orders and be impervious to changes that would even break a tolerant reader. It's worth bearing this principle in mind even if your data transfer protocol is binary. DESIGNSTAMINAHYPOTHESIS Putting effort into to the design of your software improves the stamina of your project, allowing you to go faster for longer. One way of visualizing this is the following pseudo-graph. The pseudo-graph plots delivered functionality (cumulative) versus time for two imaginary stereotypical projects: one with good design and one with nodesign.
TESTING GUIDE
Software Testing Guide. I grew up in the waterfall era, where testing was seen as a separate activity to programming, done by a different group of people, and carried out after programming was done.The shift towards iterative and agile approaches, particularly the influence of Extreme Programming, has changed the role of testing - raising its importance, and integrating it with the core MIND THE PLATFORM EXECUTION GAP A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. -- Evan Bottcher. The purpose of a developer productivity platform is to allow teams who build end-user products concentrate on their core mission. Examples of platform servicesinclude delivery
BITEMPORAL HISTORY
Bitemporal history is a way of coming to terms that communication is neither perfect nor instantaneous. Actual history is no longer append-only, we go back and make retroactive changes. However record history itself is append only. We don't change what we thought we knew about Sally's salary on Feb 25. CATALOG OF PATTERNS OF ENTERPRISE APPLICATION ARCHITECTURE A short summary of the patterns in Patterns of Enterprise Application Architecture (P of EAA). These pages are a brief overview of each of the patterns in P of EAA. They aren't intended to stand alone, but merely as a quick aide-memoire for those familiar with them, and a handy link if you want to HOW TO MOVE BEYOND A MONOLITHIC DATA LAKE TO A DISTRIBUTED How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh. Many enterprises are investing in their next generation data lake, with the hope of democratizing data at scale to provide business insights and ultimately make automated intelligent decisions. TESTING STRATEGIES IN A MICROSERVICE ARCHITECTURE How to use this Infodeck. Tap the info icon in the top banner to show this panel, tap it again to hide it.; Move forward and backward using the arrow buttons at the top banner. If you’re on a touch device then a tap on the left or right will move backwards or forwards. PATTERNS OF DISTRIBUTED SYSTEMS Patterns, a concept introduced by Christopher Alexander, is widely accepted in the software community to document design constructs which are used to build software systems. Patterns provide a structured way of looking at a problem space with the solutionsSEMANTICCONFLICT
1: And if we change the exact same text, the merge tool usually can't help either unless you have something like git rerere. But that problem is much smaller than semantic conflicts. 2: If your features are built quickly, within a couple of days, then you'll run into less semantic conflicts (and if less than a day, then it's in effect thesame
P OF EAA: GATEWAY
Gateway. An object that encapsulates access to an external system or resource. For a full description see P of EAA page 466. Interesting software rarely lives in isolation. Even the purest object-oriented system often has to deal with things that aren't objects, such as relational data-base tables, CICS transactions, and XML datastructures.
EAGERREADDERIVATION
One of the interesting talks I attended at QCon San Francisco, was one given by Greg Young about a particular architecture he'd used on a recent system. Greg is a big fan of Domain Driven Design, in this case it needs to be used with a system that has to process a high transaction rate and provide data to lots of users.There were a number of things I found interesting about his design MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure. MAXIMIZING DEVELOPER EFFECTIVENESS Maximizing Developer Effectiveness. Technology is constantly becoming smarter and more powerful. I often observe that as these technologies are introduced an organization’s productivity instead of improving has reduced. This is because the technology has increased complexities and cognitive overhead to the developer, reducing their effectiveness. MIND THE PLATFORM EXECUTION GAP A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. -- Evan Bottcher. The purpose of a developer productivity platform is to allow teams who build end-user products concentrate on their core mission. Examples of platform servicesinclude delivery
BITEMPORAL HISTORY
Bitemporal history is a way of coming to terms that communication is neither perfect nor instantaneous. Actual history is no longer append-only, we go back and make retroactive changes. However record history itself is append only. We don't change what we thought we knew about Sally's salary on Feb 25.WRITE-AHEAD LOG
The write ahead log is append-only. Because of this behaviour, in case of client communication failure and retries, logs can contain duplicate entries. When the log entries are applied, it needs to make sure that the duplicates are ignored. If the final state is something like a HashMap, where the updates to the same key are idempotent, noBOUNDEDCONTEXT
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models ofBRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
TOLERANTREADER
One of the purposes of a Data Transfer Object is to wrap the data payload behind a convenient object so the rest of the system can just go anOrderHistory.orders and be impervious to changes that would even break a tolerant reader. It's worth bearing this principle in mind even if your data transfer protocol is binary. DESIGNSTAMINAHYPOTHESIS Putting effort into to the design of your software improves the stamina of your project, allowing you to go faster for longer. One way of visualizing this is the following pseudo-graph. The pseudo-graph plots delivered functionality (cumulative) versus time for two imaginary stereotypical projects: one with good design and one with nodesign.
MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure. MAXIMIZING DEVELOPER EFFECTIVENESS Maximizing Developer Effectiveness. Technology is constantly becoming smarter and more powerful. I often observe that as these technologies are introduced an organization’s productivity instead of improving has reduced. This is because the technology has increased complexities and cognitive overhead to the developer, reducing their effectiveness. MIND THE PLATFORM EXECUTION GAP A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. -- Evan Bottcher. The purpose of a developer productivity platform is to allow teams who build end-user products concentrate on their core mission. Examples of platform servicesinclude delivery
BITEMPORAL HISTORY
Bitemporal history is a way of coming to terms that communication is neither perfect nor instantaneous. Actual history is no longer append-only, we go back and make retroactive changes. However record history itself is append only. We don't change what we thought we knew about Sally's salary on Feb 25.WRITE-AHEAD LOG
The write ahead log is append-only. Because of this behaviour, in case of client communication failure and retries, logs can contain duplicate entries. When the log entries are applied, it needs to make sure that the duplicates are ignored. If the final state is something like a HashMap, where the updates to the same key are idempotent, noBOUNDEDCONTEXT
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models ofBRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
TOLERANTREADER
One of the purposes of a Data Transfer Object is to wrap the data payload behind a convenient object so the rest of the system can just go anOrderHistory.orders and be impervious to changes that would even break a tolerant reader. It's worth bearing this principle in mind even if your data transfer protocol is binary. DESIGNSTAMINAHYPOTHESIS Putting effort into to the design of your software improves the stamina of your project, allowing you to go faster for longer. One way of visualizing this is the following pseudo-graph. The pseudo-graph plots delivered functionality (cumulative) versus time for two imaginary stereotypical projects: one with good design and one with nodesign.
TESTING GUIDE
Software Testing Guide. I grew up in the waterfall era, where testing was seen as a separate activity to programming, done by a different group of people, and carried out after programming was done.The shift towards iterative and agile approaches, particularly the influence of Extreme Programming, has changed the role of testing - raising its importance, and integrating it with the core MIND THE PLATFORM EXECUTION GAP A digital platform is a foundation of self-service APIs, tools, services, knowledge and support which are arranged as a compelling internal product. -- Evan Bottcher. The purpose of a developer productivity platform is to allow teams who build end-user products concentrate on their core mission. Examples of platform servicesinclude delivery
BITEMPORAL HISTORY
Bitemporal history is a way of coming to terms that communication is neither perfect nor instantaneous. Actual history is no longer append-only, we go back and make retroactive changes. However record history itself is append only. We don't change what we thought we knew about Sally's salary on Feb 25. CATALOG OF PATTERNS OF ENTERPRISE APPLICATION ARCHITECTURE A short summary of the patterns in Patterns of Enterprise Application Architecture (P of EAA). These pages are a brief overview of each of the patterns in P of EAA. They aren't intended to stand alone, but merely as a quick aide-memoire for those familiar with them, and a handy link if you want to HOW TO MOVE BEYOND A MONOLITHIC DATA LAKE TO A DISTRIBUTED How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh. Many enterprises are investing in their next generation data lake, with the hope of democratizing data at scale to provide business insights and ultimately make automated intelligent decisions. TESTING STRATEGIES IN A MICROSERVICE ARCHITECTURE How to use this Infodeck. Tap the info icon in the top banner to show this panel, tap it again to hide it.; Move forward and backward using the arrow buttons at the top banner. If you’re on a touch device then a tap on the left or right will move backwards or forwards. PATTERNS OF DISTRIBUTED SYSTEMS Patterns, a concept introduced by Christopher Alexander, is widely accepted in the software community to document design constructs which are used to build software systems. Patterns provide a structured way of looking at a problem space with the solutionsSEMANTICCONFLICT
1: And if we change the exact same text, the merge tool usually can't help either unless you have something like git rerere. But that problem is much smaller than semantic conflicts. 2: If your features are built quickly, within a couple of days, then you'll run into less semantic conflicts (and if less than a day, then it's in effect thesame
P OF EAA: GATEWAY
Gateway. An object that encapsulates access to an external system or resource. For a full description see P of EAA page 466. Interesting software rarely lives in isolation. Even the purest object-oriented system often has to deal with things that aren't objects, such as relational data-base tables, CICS transactions, and XML datastructures.
EAGERREADDERIVATION
One of the interesting talks I attended at QCon San Francisco, was one given by Greg Young about a particular architecture he'd used on a recent system. Greg is a big fan of Domain Driven Design, in this case it needs to be used with a system that has to process a high transaction rate and provide data to lots of users.There were a number of things I found interesting about his design MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure.BOUNDEDCONTEXT
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models of REFACTORING DATABASES A decade ago 'refactoring' was a word only known to a few people, mostly in the Smalltalk community. It's been wonderful to watch more and more people learn how to use refactoring to modify working code in a disciplined and effective manner.TWOHARDTHINGS
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick. There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery -- MathiasVerraes.
BRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
CANARYRELEASE
continuous delivery. lean. Canary release is a technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody. Similar to a BlueGreenDeployment, you start by deploying the newTOLERANTREADER
One of the purposes of a Data Transfer Object is to wrap the data payload behind a convenient object so the rest of the system can just go anOrderHistory.orders and be impervious to changes that would even break a tolerant reader. It's worth bearing this principle in mind even if your data transfer protocol is binary. COMMANDQUERYSEPARATION The term 'command query separation' was coined by Bertrand Meyer in his book " Object Oriented Software Construction " - a book that is one of the most influential OO books during the early days of OO. (The first edition is the one that had the influence, the second edition is good but you'll need several months in a gym before you can lift it.)TECHNICALDEBT
Technical Debt is a metaphor, coined by Ward Cunningham, that frames how to think about dealing with this cruft, thinking of it like a financial debt. The extra effort that it takes to add new features is the interest paid on the debt. Imagine I have a confusing module structure in my code base. I need to add a new feature. MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure.BOUNDEDCONTEXT
Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models of REFACTORING DATABASES A decade ago 'refactoring' was a word only known to a few people, mostly in the Smalltalk community. It's been wonderful to watch more and more people learn how to use refactoring to modify working code in a disciplined and effective manner.TWOHARDTHINGS
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick. There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery -- MathiasVerraes.
BRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
CANARYRELEASE
continuous delivery. lean. Canary release is a technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody. Similar to a BlueGreenDeployment, you start by deploying the newTOLERANTREADER
One of the purposes of a Data Transfer Object is to wrap the data payload behind a convenient object so the rest of the system can just go anOrderHistory.orders and be impervious to changes that would even break a tolerant reader. It's worth bearing this principle in mind even if your data transfer protocol is binary. COMMANDQUERYSEPARATION The term 'command query separation' was coined by Bertrand Meyer in his book " Object Oriented Software Construction " - a book that is one of the most influential OO books during the early days of OO. (The first edition is the one that had the influence, the second edition is good but you'll need several months in a gym before you can lift it.)TECHNICALDEBT
Technical Debt is a metaphor, coined by Ward Cunningham, that frames how to think about dealing with this cruft, thinking of it like a financial debt. The extra effort that it takes to add new features is the interest paid on the debt. Imagine I have a confusing module structure in my code base. I need to add a new feature. MAXIMIZING DEVELOPER EFFECTIVENESS Maximizing Developer Effectiveness. Technology is constantly becoming smarter and more powerful. I often observe that as these technologies are introduced an organization’s productivity instead of improving has reduced. This is because theMICROSERVICES GUIDE
Microservices Guide. In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. EVOLUTIONARY DATABASE DESIGN Evolutionary Database Design. Over the last decade we've developed and refined a number of techniques that allow a database design to evolve as an application develops. This is a very important capability for agile methodologies. The techniques rely on applying continuous integration and automated refactoring to database development,together
REFACTORING
Refactoring is a controlled technique for improving the design of an existing code base. Its essence is applying a series of small behavior-preserving transformations, each of which "too small to be worth doing". However the cumulative effect of each of these transformations is quite significant. By doing them in small steps youreduce the risk
ANALYSIS PATTERNS
The patterns come from various domains, including health care, financial trading, and accounting. Each of the patterns is described both textually and in a simple pre-UML notation (this book was written before the UML had stabilized into a usable form). There's much I could do to improve the presentation of the patterns in this book withwhat I
REFACTORING DATABASES A decade ago 'refactoring' was a word only known to a few people, mostly in the Smalltalk community. It's been wonderful to watch more and more people learn how to use refactoring to modify working code in a disciplined and effective manner. CATALOG OF PATTERNS OF ENTERPRISE APPLICATION ARCHITECTURE A short summary of the patterns in Patterns of Enterprise Application Architecture (P of EAA). These pages are a brief overview of each of the patterns in P of EAA. They aren't intended to stand alone, but merely as a quick aide-memoire for those familiar with them, and a handy link if you want toDOMAIN EVENT
The essence of a Domain Event is that you use it to capture things that can trigger a change to the state of the application you are developing. These event objects are then processed to cause changes to the system, and stored to provide an Audit Log. Figure 1: Events funnel inputs into a single source. Figure 1 helps illustrate thepoint.
AN APPROPRIATE USE OF METRICS The first guideline to an appropriate use of metrics separates the real goal from the measure selected to monitor progress towards that goal. The real goal must always be made explicit. Guideline #2 and #3, monitoring trends and doing so over shorter periods is about helping organizations realize their goal faster.DEVOPSCULTURE
The primary characteristic of DevOps culture is increased collaboration between the roles of development and operations. There are some important cultural shifts, within teams and at an organizational level, that support this collaboration. An attitude of shared responsibility is an aspect of DevOps culture that encourages closer collaboration. MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make itTESTING GUIDE
Software Testing Guide. I grew up in the waterfall era, where testing was seen as a separate activity to programming, done by a different group of people, and carried out after programming was done.The shift towards iterative and agile approaches, particularly the influence of Extreme Programming, has changed the role of testing - raising its importance, and integrating it with the core MAXIMIZING DEVELOPER EFFECTIVENESSEDGE DEVELOPER VIEWVIEW DEVELOPER IN EXCELVIEW DEVELOPER TAB IN WORDVIEW DEVELOPER TOOLS Maximizing Developer Effectiveness. Technology is constantly becoming smarter and more powerful. I often observe that as these technologies are introduced an organization’s productivity instead of improving has reduced. This is because the technology has increased complexities and cognitive overhead to the developer, reducing their effectiveness. DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure. BLIKI: BOUNDEDCONTEXT Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models ofBRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
P OF EAA: SERVICE STUB | P of EAA Catalog | Service Stub. by David Rice. Removes dependence upon problematic services during testing. WSDL. For a full description see P of EAA page 504. Enterprise systems often depend on access to third-party services such as credit scoring, tax rate lookups, andpricing engines.
DESIGNSTAMINAHYPOTHESIS Putting effort into to the design of your software improves the stamina of your project, allowing you to go faster for longer. One way of visualizing this is the following pseudo-graph. The pseudo-graph plots delivered functionality (cumulative) versus time for two imaginary stereotypical projects: one with good design and one with nodesign.
TWOHARDTHINGS
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick. There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery -- MathiasVerraes.
DEALING WITH ROLES
Working Draft 2 Dealing with Roles The illusion is often not worth the effort. In this case it is worth having a seperate object for each of the roles, linked to a base object that ties things together (RoleObject).
MARTINFOWLER.COMAGILEARCHITECTUREABOUTMICRO FRONTENDSDON'T GET LOCKED UP INTO AVOIDING LOCK-IN martinfowler.com. Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make itTESTING GUIDE
Software Testing Guide. I grew up in the waterfall era, where testing was seen as a separate activity to programming, done by a different group of people, and carried out after programming was done.The shift towards iterative and agile approaches, particularly the influence of Extreme Programming, has changed the role of testing - raising its importance, and integrating it with the core MAXIMIZING DEVELOPER EFFECTIVENESSEDGE DEVELOPER VIEWVIEW DEVELOPER IN EXCELVIEW DEVELOPER TAB IN WORDVIEW DEVELOPER TOOLS Maximizing Developer Effectiveness. Technology is constantly becoming smarter and more powerful. I often observe that as these technologies are introduced an organization’s productivity instead of improving has reduced. This is because the technology has increased complexities and cognitive overhead to the developer, reducing their effectiveness. DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure. BLIKI: BOUNDEDCONTEXT Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD's strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships. DDD is about designing software based on models ofBRANCHBYABSTRACTION
version control. "Branch by Abstraction" is a technique for making a large-scale change to a software system in gradual way that allows you to release the system regularly while the change is still in-progress. We begin with a situation where various parts of the software system are dependent on a module, library, or framework thatwe wish
P OF EAA: SERVICE STUB | P of EAA Catalog | Service Stub. by David Rice. Removes dependence upon problematic services during testing. WSDL. For a full description see P of EAA page 504. Enterprise systems often depend on access to third-party services such as credit scoring, tax rate lookups, andpricing engines.
DESIGNSTAMINAHYPOTHESIS Putting effort into to the design of your software improves the stamina of your project, allowing you to go faster for longer. One way of visualizing this is the following pseudo-graph. The pseudo-graph plots delivered functionality (cumulative) versus time for two imaginary stereotypical projects: one with good design and one with nodesign.
TWOHARDTHINGS
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick. There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery -- MathiasVerraes.
DEALING WITH ROLES
Working Draft 2 Dealing with Roles The illusion is often not worth the effort. In this case it is worth having a seperate object for each of the roles, linked to a base object that ties things together (RoleObject).
ON THE DIVERSE AND FANTASTICAL SHAPES OF TESTING There's been a recent resurgence on twitter and the like about how teams should divide up their testing efforts. In particular, Tim Bray argues compellingly in favor of taking automated testing seriously. Anyone familiar with my writing will know that I'm very much in DATA MESH PRINCIPLES AND LOGICAL ARCHITECTURE Data mesh addresses these dimensions, founded in four principles: domain-oriented decentralized data ownership and architecture, data as a product, self-serve data infrastructure as a platform, and federated computational governance. Each principle drives a new logical view of the technical architecture and organizational structure.WRITE-AHEAD LOG
The write ahead log is append-only. Because of this behaviour, in case of client communication failure and retries, logs can contain duplicate entries. When the log entries are applied, it needs to make sure that the duplicates are ignored. If the final state is something like a HashMap, where the updates to the same key are idempotent, noTOLERANTREADER
One of the purposes of a Data Transfer Object is to wrap the data payload behind a convenient object so the rest of the system can just go anOrderHistory.orders and be impervious to changes that would even break a tolerant reader. It's worth bearing this principle in mind even if your data transfer protocol is binary.CANARYRELEASE
continuous delivery. lean. Canary release is a technique to reduce the risk of introducing a new software version in production by slowly rolling out the change to a small subset of users before rolling it out to the entire infrastructure and making it available to everybody. Similar to a BlueGreenDeployment, you start by deploying the new HOW TO MOVE BEYOND A MONOLITHIC DATA LAKE TO A DISTRIBUTED How to Move Beyond a Monolithic Data Lake to a Distributed Data Mesh. Many enterprises are investing in their next generation data lake, with the hope of democratizing data at scale to provide business insights and ultimately make automated intelligent decisions.TWOHARDTHINGS
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors. -- Leon Bambrick. There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery -- MathiasVerraes.
P OF EAA: GATEWAY
Gateway. An object that encapsulates access to an external system or resource. For a full description see P of EAA page 466. Interesting software rarely lives in isolation. Even the purest object-oriented system often has to deal with things that aren't objects, such as relational data-base tables, CICS transactions, and XML datastructures.
IEEESOFTWARE
Continuous Design. The rising popularity of refactoring, tools such as JUnit, and agile methodologies such as Extreme Programming (XP) has brought a new style of design into view. Continuous design is the process of using refactoring to continuously improve a program's design. In this column Jim discusses his experiences with continuousdesign
TECHNICALDEBT
Technical Debt is a metaphor, coined by Ward Cunningham, that frames how to think about dealing with this cruft, thinking of it like a financial debt. The extra effort that it takes to add new features is the interest paid on the debt. Imagine I have a confusing module structure in my code base. I need to add a new feature.* Refactoring
* Agile
* Architecture
* About
* ThoughtWorks
*
*
TOPICS
Architecture
Refactoring
Agile
Delivery
Microservices
Data
Testing
DSL
ABOUT ME
About
Books
FAQ
CONTENT
Videos
Content Index
Board Games
Photography
THOUGHTWORKS
Insights
Careers
Products
FOLLOW
RSS
Software development is a young profession, and we are still learning the techniques and building the tools to do it effectively. I've been involved in this activity for over three decades and in the last two I've been writing on this website about patterns and practices that make it easier to build useful software. The site began as a place to put my own writing, but I also use it to publish articles by mycolleagues.
In 2000, I joined ThoughtWorks , where my role is to learn about the techniques that we've learned to deliver software for our clients, and pass these techniques on to the wider software industry. As this site has developed into a respected platform on software development, I've edited and published articles by my colleagues, both ThoughtWorkers and others, to help useful writing reach a wider audience. photo: Christopher FergusonMartin Fowler
A WEBSITE ON BUILDING SOFTWARE EFFECTIVELY If there's a theme that runs through my work and writing on this site, it's the interplay between the shift towards agile thinking and the technical patterns and practices that make agile software development practical. While specifics of technology change rapidly in our profession, fundamental practices and patterns are more stable. So writing about these allows me to have articles on this site that are several years old but still as relevant as when they were written. As software becomes more critical to modern business, software needs to be able to react quickly to changes, allowing new features to be be conceived, developed and put into production rapidly. The techniques of agile software development began in the 1990s and became steadily more popular in the last decade. They focus on a flexible approach to planning, which allows software products to change direction as the users' needs change and as product managers learn more about how to make their users effective. While widely accepted now, agile approaches are not easy, requiring significant skills for a team, but more importantly a culture of open collaboration both within the team and with a team's partners. This need to respond fluently to changes has an important impact upon the architecture of a software system. The software needs to be built in such a way that it is able to adapt to unexpected changes in features. One of the most important ways to do this is to write clear code, making it easy to understand what the program is supposed to do. This code should be divided into modules which allow developers to understand only the parts of the system they need to make a change. This production code should be supported with automated tests that can detect any errors made when making a change while providing examples of how internal structures are used. Large and complex software efforts may find the microservices architectural style helps teams deploy software with less entanglingdependencies.
Creating software that has a good architecture isn't something that can be done first time. Like good prose, it needs regular revisions and programmers learn more about what the product needs to do and how best to design the product to achieve its goals. Refactoring is an essential technique to allow a program to be changed safely. It consists of making small changes that don't alter the observable behavior of the software. By combining lots of small changes, developers can revise the software's structure supporting significant modifications that weren't planned when the system was first conceived. Software that runs only on a developer's machine isn't providing value to the customers of the software. Traditionally releasing software has been a long and complicated process, one that hinders the need to evolve software quickly. Continuous Delivery uses automation and collaborative workflows to remove this bottleneck, allowing teams to release software as often as the customers demand. For Continuous Delivery to be possible, we need to build in a solid foundation of Testing , with a range of automated tests that can give us confidence that our changes haven't introduced any bugs. This leads us to integrate testing into programming, which can act to improve our architecture.PHOTOSTREAM
Ferrara, Italy (2014)DATA MANAGEMENT
There are many kinds of software out there, the kind I'm primarily engaged is Enterprise Applications. One of the enduring problems we need to tackle in this world is data management . The aspects of data managment I've focused on here are how to migrate data stores as their applications respond to changing needs, coping with different contexts across a large enterprise, the role of NoSQL databases, and the broader issues of coping with data that is both Big and Messy. DOMAIN-SPECIFIC LANGUAGES A common problem in complex software systems is how to capture complicated domain logic in a way that programmers can both easily manipulate and also easily communicate to domain experts. Domain-Specific Languages (DSLs) create a custom language for a particular problem, either with custom parsers or by conventions within a host language.BOOKS
I've written seven books on software development, including Refactoring, Patterns of Enterprise Application Architecture, and UML Distilled. I'm also the editor of a signature series for Addison-Wesley that includes five jolt award winners.My Books Page...
CONFERENCE TALKS
I'm often asked to give talks at conferences, from which I've inferred that I'm a pretty good speaker - which is ironic since I really hate giving talks. You can form your own opinion of my talks by watching videos of some my conference talks.My Videos Page...
BOARD GAMES
I've long been a fan of board games, I enjoy a game that fully occupies my mind, clearing out all the serious thoughts for a bit, while enjoying the company of good friends. Modern board games saw dramatic improvement in the 1990's with the rise of Eurogames, and I expect many people would be surprised if they haven't tried any of this new generation. I also appear regularly on Heavy Cardboard.
My Board Games page...TAGS
API design  · agile  · agile adoption  · analysis patterns · application architecture · application integration· bad things
· big data  ·
board games  · build scripting· certification
· collaboration
· computer history
· conference panels
· conferences
· continuous delivery· covid-19
· database  · design· dictionary  ·
distributed computing magazine· diversions
· diversity  ·
documentation  · domain driven design · domain specific language· domestic
· encapsulation  · enterprise architecture  · estimation  · event architectures · evolutionary design · experience reports · expositional architectures · extreme programming· front-end
· gadgets  ·
ieeeSoftware  · infodecks· internet culture
· interviews
· language feature
· language workbench· lean  ·
legacy rehab  · legal · metrics  · microservices· mobile  · noSQL
· object collaboration design· parser generators
· photography
· podcast  · popular · presentation technique· privacy
· process theory
· productivity
· programming platforms· programming style
· project planning
· recruiting
· refactoring  ·
refactoring boundary  · requirements analysis  · ruby · security  · talk videos· team environment
· team organization
· technical debt
· technical leadership· test categories
· testing  ·
thoughtworks  · tools· travel  · uml
· version control
· web development
· web services
· website  ·
writing
2020  · 2019  · 2018· 2017  · 2016
· 2015  · 2014
· 2013  · 2012
· 2011  · 2010
· 2009  · 2008
· 2007  · 2006
· 2005  · 2004
· 2003  · 2002
· 2001  · 2000
· 1999  · 1998
· 1997  · 1996
ALL CONTENT
RECENT CHANGES
If you'd like to be notified when I post new material, subcribe to myRSS or Twitter
feeds.
------------------------- PATTERNS FOR MANAGING SOURCE CODE BRANCHES Mon 20 Apr 2020 11:07 EDT In my conversations with software developers, a regular topic of controversy is how manage source code branching. Tools like git make it easy to create branches, but managing them to improve coordination and minimize the costs of integration unearths plenty of difficulties. I find it useful to think of the trade-offs around branching as a series of patterns, and have spent the last couple of months writing these patterns into a coherent shape. Today I'll start sharing these, with the foundation of thinking of source branching as a pattern itself. An important point here is that the conceptual notion of a branch is broader than what source code management systems label as branches.more…
------------------------- REFACTORING: THIS CLASS IS TOO LARGE Tue 14 Apr 2020 09:32 EDT Most programmers have personal projects that do important things for them personally, but never have enough time and energy to keep them in good condition. Clare is no exception, and needed to spend time getting such an unruly codebase back into line. Here she shares the first part of her refactoring: breaking down a class that had become too big. It's a messy situation, because that's what real refactoring is like - yet when done in a controlled way, with lots of tiny steps, we can make real progress.more…
------------------------- HOW TO DO EFFECTIVE VIDEO CALLS Thu 19 Mar 2020 10:42 EDT During 2011-2012 there was a small but significant revolution in how we worked at ThoughtWorks. When we needed to communicate while separated we used to do telephone meetings, but within a year the telephone disappeared and we started using video calls instead. Now Covid-19 has struck, a lot more people are getting acquainted with remote working and the video calls that come with them. So I thought I'd share some of things I, and my colleagues, have learned aboutdoing them.
more…
------------------------- COPING WITH COVID-19, PART 2 Fri 13 Mar 2020 10:58 EDT As the Covid-19 outbreak continues to spread, we at ThoughtWorks continue to react. In China we're slowly restarting our office work, with some significant protective measures. Elsewhere it's all about a rapid shift to more remote work and plans to respond to the economicimpact.
more…
------------------------- THE ELEPHANT IN THE ARCHITECTURE Mon 02 Mar 2020 09:41 EST Last week I gave one of the keynotes at O'Reilly's Software Architecture conference. When I was invited to do this last year, I asked my colleagues at a radar meeting dinner for suggestions on what to talk about. They commented about how they were often asked to do architectural assessments for clients, and almost always discovered that the architects neglected to properly understand the business value of the systems they were looking after. I then worked with Ian Cartwright to organize the material both for the talk and this article: to make the case for why we should consider business value to be a first-class architectural attribute, and the consequences of thatframing.
more…
------------------------- COPING WITH COVID-19 Thu 27 Feb 2020 13:40 EST The Covid-19 outbreak is getting more serious. With offices in China, we've already been affected and have taken various measures across our global business. Here's what we've learned so far about what we need to do to handle this crisis.more…
TOPICS
Architecture
Refactoring
Agile
Delivery
Microservices
Data
Testing
DSL
ABOUT ME
About
Books
FAQ
CONTENT
Videos
Content Index
Board Games
Photography
THOUGHTWORKS
Insights
Careers
Products
FOLLOW
RSS
© Martin Fowler | Privacy Policy| Disclosures
Details
Copyright © 2024 ArchiveBay.com. All rights reserved. Terms of Use | Privacy Policy | DMCA | 2021 | Feedback | Advertising | RSS 2.0