Hello Roger,
Ease up on the attitude, eh?
Now taking your points in turn...
Most established organisations would disagree with you about users not being able to reset their password without knowing the original one. This is particularly true of organisations with large userbases. After all, how many "lowly" admins do you think Google would need to handle forgotten passwords for their userbase. That's why most systems operate a "Forgotten your password?" feature - sometimes as simple as sending a "reset your password" link to the the registered email address, although more advanced ones use a CAPTCHA system in conjuction with some Q&A to determine that the person requesting the reset link is indeed a person, and that there is some reason to believe that they are the person they claim to be. I just metion this because in the real world you probably don't want admin staff to have to be involved in password resets - although there are always exceptions.
On the other hand, I absolutely agree that it is far, far better to have passwords encrypted than not. I just wanted to make the point that this introduces extra overheads in developing, testing and maintaining the extra screens required to reset the passwords, whereas a bog-standard tool could be used to query the current password. Again, whether this extra development is worth while is for whoever manages resource in the organisation to decide. For a confidential and/or critical system this is probably absolutely required, for a softball league system they may decide to pass and use the development time on something else. There are generally many other projects competing for people's time.
Again, I accept that you are generally right when it comes to primary keys, but as ever there are exceptions. For example if you have a table of state abbreviations and names, I don't see what advantage an autoinc primary key will have over using the unique two-letter abreviation as your primary key. In the original case, we don't know what the history/use of the user_code is. maybe it is a foreign key to some external system (perhaps even an offline filing cabinet) , in which case you probably want to leave it alone and add a new field as your primary autoinc field.
I guess the main general point I was trying to make is that if you come across bad design "features" don't just bin them. Take the time to find out why those decisions were made. They may have been undesriable but unaviodable compromises. Also take the time to understand who uses these features and why. If after all of that, you are still certain that there is no reason for the poor feature to remain, and no impacts are caused by its removal, then you can go remove it.