"Static type systems can help working on large code bases. Immutable datatypes can help too." I've seen this regularly asserted, and I generally agree, but how do we measure this? What other things help?