๐๐ก๐ ๐๐ซ๐ซ๐๐ญ๐ข๐จ๐ง๐๐ฅ ๐๐ซ๐ญ๐ข๐๐๐๐ญ ๐๐ญ๐ญ๐๐๐ก๐ฆ๐๐ง๐ญ ๐๐ง๐ญ๐ข-๐๐๐ญ๐ญ๐๐ซ๐ง
As software engineers or architects, we may invest a significant amount of time and effort into implementations or designs, as a result, we become attached to our creations, and this attachment may lead to irrational thinking, blinding us from recognizing flaws that compromise the integrity of our solutions.
โ๐๐ณ๐ณ๐ข๐ต๐ช๐ฐ๐ฏ๐ข๐ญ ๐ข๐ณ๐ต๐ช๐ง๐ข๐ค๐ต ๐ข๐ต๐ต๐ข๐ค๐ฉ๐ฎ๐ฆ๐ฏ๐ต ๐ข๐ฏ๐ต๐ช-๐ฑ๐ข๐ต๐ต๐ฆ๐ณ๐ฏ ๐ช๐ด ๐ต๐ฉ๐ฆ ๐ฑ๐ณ๐ฐ๐ฑ๐ฐ๐ณ๐ต๐ช๐ฐ๐ฏ๐ข๐ญ ๐ณ๐ฆ๐ญ๐ข๐ต๐ช๐ฐ๐ฏ๐ด๐ฉ๐ช๐ฑ ๐ฃ๐ฆ๐ต๐ธ๐ฆ๐ฆ๐ฏ ๐ข ๐ฑ๐ฆ๐ณ๐ด๐ฐ๐ฏโ๐ด ๐ช๐ณ๐ณ๐ข๐ต๐ช๐ฐ๐ฏ๐ข๐ญ ๐ข๐ต๐ต๐ข๐ค๐ฉ๐ฎ๐ฆ๐ฏ๐ต ๐ต๐ฐ ๐ด๐ฐ๐ฎ๐ฆ ๐ข๐ณ๐ต๐ช๐ง๐ข๐ค๐ต ๐ข๐ฏ๐ฅ ๐ฉ๐ฐ๐ธ ๐ญ๐ฐ๐ฏ๐จ ๐ช๐ต ๐ต๐ฐ๐ฐ๐ฌ ๐ต๐ฐ ๐ฑ๐ณ๐ฐ๐ฅ๐ถ๐ค๐ฆ.โ - Michael Richards & Neal Ford
There are a number of approaches that can prevent us from falling victim to the irrational artifact attachment anti-pattern, reducing the likely hood of throw-aways and allowing us to operate more efficiently, below are a few:
๐๐๐ข๐ซ ๐๐ซ๐จ๐ ๐ซ๐๐ฆ๐ฆ๐ข๐ง๐ : Two minds are better than one! We each think in different ways therefore two individuals will be able to complement each otherโs gaps in knowledge and thinking leading to more robust solutions that multiples agree upon.
๐๐ข๐ฆ ๐๐จ๐ซ ๐ฌ๐ฆ๐๐ฅ๐ฅ ๐๐จ๐๐ ๐ซ๐๐ฏ๐ข๐๐ฐ๐ฌ: Presenting parts of our solutions to others as they become available gives the opportunity for feedback and corrective action early on which will prevent us from proceeding too far down the wrong path, this way we are unlikely to throw away a solution that has been heavily invested in.
๐๐๐ฅ๐ค ๐ญ๐จ ๐ ๐ซ๐ฎ๐๐๐๐ซ ๐๐ฎ๐๐ค: Rubber ducking allows us to come to new realizations that would have otherwise been unbeknown to us, this is achieved by forcing us to slow down our thinking and simplifying information.
๐๐จ๐๐ฎ๐ฆ๐๐ง๐ญ ๐๐๐ฌ๐ข๐ ๐ง ๐๐๐๐ข๐ฌ๐ข๐จ๐ง๐ฌ: We may arrive at a decision but forget the path that lead us there, a documented decision allows us to retain our reasoning logic and serves as a defensive mechanism to throwing away a perfectly valid solution for a less feasible one, especially when the less feasible approach has previously considered and ruled out in our decision-making process.
๐๐ซ๐๐ข๐ง๐ฌ๐ญ๐จ๐ซ๐ฆ: Present hand-drawn or minimalistic designs in UML or C4 formats to your teammates, this allows for any potential issues to be highlighted early on and encourages others to inspire and suggest new approaches.
๐๐ซ๐จ๐๐ฎ๐๐ ๐ ๐ฉ๐ซ๐จ๐จ๐ ๐จ๐ ๐๐จ๐ง๐๐๐ฉ๐ญ: A proof of concept may provide an initial assessment of the integrity of a solution and provide confidence to push ahead.