Usable interfaces just take a little thought
This is another case of a programmer-friendly interface: the programmers were too lazy to make the computer do anything at all to help the user fulfill the complex requirements placed upon her. The omission is particularly regrettable in this instance, as it would have been very straightforward to make the interface helpful:
- Turn the requirements description in the bar on the left into a bulleted list.
- Evaluate the password every time the password field receives input from the user.
- Show the violated or unfulfilled constraints in the list on the left in red.
- Disable the submit button as long as there are any failed constraints.
This way, the user could whittle down constraints one or two at a time while the interface shows her which ones she still has to satisfy. She would also immediately know about it as soon as she accidentally violated a constraint. There would be no need for her to keep all the rules in her head at once and then hit the “I’m feeling lucky” button to see if she passed the test. Granted, choosing a password would still be an onerous process with so many rules, but it would be a lot less nerve-grating.