From the SoftwareAppreciation desk, an excellent blog post by Hartley Paul at Intentional Software. Mr. Paul is the VP, General Counsel for Intentional Software and writes about the commonalities between writing code and legal contracts. I've more and more thought of programmers being like lawyers for computers.
From the blog entry:
Our resident geniuses tell me that well written code should cause a program to behave correctly in all use cases, and in special cases with minimal errors. A similar general requirement applies to well written contracts because they should minimize loopholes (error cases) too. Years ago a revered mentor and friend gave me an insightful quote by Judge Solomon:
“The legal draftsman must write for unidentified foe as well as known friend. He must write so that not only can a person reading in good faith understand but a person reading in bad faith cannot misunderstand.”
This all seems so simple. But how can anyone possibly identify, much less implement, every single use case in a universe of potential use cases in a software project - or every single loophole in a universe of potential loopholes in a contract?
There's a bug in this section from a legal document from my bank, can you spot it?
3. A new paragraph is added to the end of the section entitled Linked Accounts; as follows: Linking accounts is always at our discretion. If you choose to link your personal accounts to other accounts for which you serve as trustee or custodian (fiduciary), your personal account may receive a financial benefit. Under fiduciary law any financial benefit you receive is considered a violation of fiduciary duties. We bear no responsibility for your decision to link fiduciary and personal accounts. You should carefully consider this decision, and consult with your legal advisor if necessary.