A better example to banks would be dog breeding. In order to create todays "standard" breeds humans selectively picked the dogs that had traits they thought were desirable and bred those dogs and their offspring together in order to preserve those traits. Now it's turning out that many pure-bred dogs have _predictable_ problems, meaning the deficiency is a result of their genetics which were, in effect, selected by humans.
I stopped reading as soon as you said that you used table layouts, here's why:
Solution 1: <table>
<tr><td colspan="2"><table id="header">...</table></td></tr>
<tr><td><table id="menu">...</table></td><td><table id="content">...</table></td><td>..... OK I'm so f*cking annoyed already just making this example that I can guarantee that you're annoyed reading it!
Not only is it painfully obvious that the non-table solution is easier to create, read and understand but it is also reusable since a different look can be applied to it by just changing a style sheet.
So please, take another shot at justifying table layouts. (HINT: Being too lazy to learn and understand the box model is not a good reason)
Good list! When I first read the question the first thing that popped into my mind was design patterns. I would add 'Unit Testing in Java' to that list. Also I don't know if one exists but if you can find a book/article on effective use of java-doc not only will you benefit but you'll be more popular with the group of people who have to read your code.