Do the simplest thing that can possibly work (2004)
This write-up is too light to provide any real insight. In particular, how do you assess simplicity?<p>From an example I&#x27;m currently working through on a hobby project... do I use a RS-485 transceiver with a custom line code, or do I use a 10base-T1 PHY? Ethernet, especially one pair ethernet, is undoubtedly more &#x2F;complex&#x2F;, with echo cancellation, a complicated line code, etc; but if I use the PHY, then &#x2F;I own&#x2F; that complexity.<p>(For pure software folks, the equivalent question is internal implementation vs external dependencies. Do you implement a 1D barcode yourself, or do you import a third-party dependency for QR code reading?)<p>The problem is that answering this depends not on some objective notion of simplicity, but on a realistic assessment of &#x2F;where time will go&#x2F; during the development process. If development time dominates, then exporting complexity is a win. But if testing time dominates, and since exported complexity still needs to be fully understood during testing, then in-house simplicity wins.<p>And which of these cases dominates is very much a project-by-project and team-by-team decision.