Here are some links mentioned in the video: ADR Tools: github.com/npryce/adr-tools Templates: github.com/joelparkerhenderson/architecture-decision-record
I've been asking a lot of 'why' questions recently, especially around areas of infrastructure where it seems to be overkill. If I knew why it was designed in a more complicated way then I'd feel better. Some architects talk about using decision trees, and been meaning to read the book from Mark Richards about ADRs. Looks like this video was uploaded at a good time.
Very good suggestion, while I used to briefly note changes in the changeling for opensource libraries, your suggestion helps to focus in architect perspective and to documents decisions
Not entirely sure what you mean by "Adaptation decisions" but from what I'm assuming, yes I can see any type of ADR being useful to review so everyone knows it's occurred. Especially if you're going through an approval process.
I had this problem. When I looked back at the code I wrote months ago, I'm like : "What!!". So I created a text file in each directory that hold some logic or a feature (say, the repository, or in the aggregate root dir etc..) and described what the files did and why it was there.Its not ADR per se but it was a little helpful to me later. I did not think of documenting the context it was written under. Its a good idea to include the context. I also was replacing it instead of appending it. When i think about it, it is better to append than replace. One doubt I have is, should there be just one ADR file for a project and document everything there or is it just preference or as per the project requirements ? I think for a new change, we can append a new ADR file. What I meant was, should there be different ADRs for repo, domain logic etc..
I'd have multiple ADR files per repo. You can also in code comments reference the ADR #. But again, you could have one single file that you keep appending to as well. This isn't a terrible idea because you probably want to optimize for reading not writing.
@@CodeOpinion Mmh yap. I'll try and keep a single ADR on my ongoing project and see how that goes. Makes sense to just do the one ADR per repo. Thanks for the suggestion. I'll let you know the results after I forget about the project and come back to it months later when the client finally decides on which color the interface should be.lol.
Will the future person that has to deal with an unknown code will find it if it is not in the repo? Where would you guys store this docs? I would like to know all your opinions. It might imply a change in a service but it is motivated by the context… It can affect infrastructure and as a consequence maybe it also makes you refactor one or many services. Store it In the service repo? In an exclusive doc repo? In your IaC repo!!?
Correct. Beyond that they provide implementations for various patterns that are common with event driven architecture and messaging. If you were just use an sdk of a broker, you'd likely end up having to implement all of them yourself. Claim checks, encryption, outbox, retries, the list goes on.
Nice video, thank you for sharing this methodoly. Question: What if a made a desicion and then I wanna change that desicion, should I create a new log or just modify the existing one? Greettings from Argentina :)
There's bunch of similar tooling for all sorts of purposes (e.g. `vitiral/artifact`), and it all seems nice in theory, but it doesn't work in practice. Sure, sometimes one asks "why?" and would be nice to get a complete and comprehensive answer, but how often does it *really* happen? Is it worth continuous overhead of maintaining yet another thing, making sure all developers know about it and consistently update it so on? And can it even be relied on to be there in the first place? I mean - maybe, sometimes, in some domains, etc. it could work, but from my PoV rapid development and time to market often steamroll over even way more basic good practices, so trying to add even more aspirational one is just not going to work. There is already a git log, and in-code documentation, and it seems more practical and realistic to focus on driving teams to write more and higher quality commit messages and comments, and improve `git log/blame`-fu (--ignore-rev yay!), etc. leveraging already existing facilities, than try to introduce another one, IMO.
Here are some links mentioned in the video:
ADR Tools: github.com/npryce/adr-tools
Templates: github.com/joelparkerhenderson/architecture-decision-record
So simple, so powerful
Nice video! Very clear and complete.
I've been asking a lot of 'why' questions recently, especially around areas of infrastructure where it seems to be overkill. If I knew why it was designed in a more complicated way then I'd feel better. Some architects talk about using decision trees, and been meaning to read the book from Mark Richards about ADRs. Looks like this video was uploaded at a good time.
Hopefully it helps.
Very good suggestion, while I used to briefly note changes in the changeling for opensource libraries, your suggestion helps to focus in architect perspective and to documents decisions
Ad mentioned in the video I think the context is so important. Which usually needs a bit more elaboration on what are the driving forces and options.
@@CodeOpinion fully agree
Good explanation ❤️ it
Thank you 🙂
Does it make sense to use these same templates for "Adaptation decisions" made in a retrospective meeting?
Not entirely sure what you mean by "Adaptation decisions" but from what I'm assuming, yes I can see any type of ADR being useful to review so everyone knows it's occurred. Especially if you're going through an approval process.
@@CodeOpinion I meant when you Inspect & Adapt :)
I had this problem. When I looked back at the code I wrote months ago, I'm like : "What!!". So I created a text file in each directory that hold some logic or a feature (say, the repository, or in the aggregate root dir etc..) and described what the files did and why it was there.Its not ADR per se but it was a little helpful to me later. I did not think of documenting the context it was written under. Its a good idea to include the context. I also was replacing it instead of appending it. When i think about it, it is better to append than replace.
One doubt I have is, should there be just one ADR file for a project and document everything there or is it just preference or as per the project requirements ? I think for a new change, we can append a new ADR file. What I meant was, should there be different ADRs for repo, domain logic etc..
I'd have multiple ADR files per repo. You can also in code comments reference the ADR #. But again, you could have one single file that you keep appending to as well. This isn't a terrible idea because you probably want to optimize for reading not writing.
@@CodeOpinion Mmh yap. I'll try and keep a single ADR on my ongoing project and see how that goes. Makes sense to just do the one ADR per repo. Thanks for the suggestion. I'll let you know the results after I forget about the project and come back to it months later when the client finally decides on which color the interface should be.lol.
Will the future person that has to deal with an unknown code will find it if it is not in the repo?
Where would you guys store this docs?
I would like to know all your opinions. It might imply a change in a service but it is motivated by the context…
It can affect infrastructure and as a consequence maybe it also makes you refactor one or many services.
Store it In the service repo?
In an exclusive doc repo?
In your IaC repo!!?
So message librraries are abstractions on top of message broker ,as on orm abstract dbms engine?
Correct. Beyond that they provide implementations for various patterns that are common with event driven architecture and messaging. If you were just use an sdk of a broker, you'd likely end up having to implement all of them yourself. Claim checks, encryption, outbox, retries, the list goes on.
I liked it! I found this easy to maintain and easy to elaborate! But this is for the long-term future. So why did I write the code in that way?
Nice video, thank you for sharing this methodoly.
Question: What if a made a desicion and then I wanna change that desicion, should I create a new log or just modify the existing one?
Greettings from Argentina :)
New ADR that references the one it's adjusting/replacing.
There's bunch of similar tooling for all sorts of purposes (e.g. `vitiral/artifact`), and it all seems nice in theory, but it doesn't work in practice. Sure, sometimes one asks "why?" and would be nice to get a complete and comprehensive answer, but how often does it *really* happen? Is it worth continuous overhead of maintaining yet another thing, making sure all developers know about it and consistently update it so on? And can it even be relied on to be there in the first place? I mean - maybe, sometimes, in some domains, etc. it could work, but from my PoV rapid development and time to market often steamroll over even way more basic good practices, so trying to add even more aspirational one is just not going to work.
There is already a git log, and in-code documentation, and it seems more practical and realistic to focus on driving teams to write more and higher quality commit messages and comments, and improve `git log/blame`-fu (--ignore-rev yay!), etc. leveraging already existing facilities, than try to introduce another one, IMO.
You can enable non tech mates to read the ADR and try to colaborate, but they can't create a git and learn how to read comments...