19. Don't force the user to remember things if you can help it. Humans are really bad at remembering things. This includes passwords, sms codes, sums, function names, and so on. My own personal philosophy is to consider humans a part of your system, and design around our shortcomings instead of thinking of users as adversaries. Software should serve humans, humans shouldn't serve software.
20. Some Sources:
Donald Norman
Jef Raskin
Jacob Nielsen
Bruce "Tog" Tognazzini
I recommend all the talks by Alan Kay and Bret Victor, here's two:
Doing with Images Makes Symbols
https://www.youtube.com/watch?v=p2LZLYcu_JY
The Future Of Programming
https://www.youtube.com/watch?v=8pTEmbeENF4