๐“๐ก๐ž ๐ˆ๐ซ๐ซ๐š๐ญ๐ข๐จ๐ง๐š๐ฅ ๐€๐ซ๐ญ๐ข๐Ÿ๐š๐œ๐ญ ๐€๐ญ๐ญ๐š๐œ๐ก๐ฆ๐ž๐ง๐ญ ๐€๐ง๐ญ๐ข-๐๐š๐ญ๐ญ๐ž๐ซ๐ง

ยท

2 min read

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.

ย