Every input should have a label, and put labels above the input.

Placeholder Text
Placeholders are problematic—both as makeshift labels and as a means of storing additional hint text. Instead put hint text below the label and above the input.

Required Fields
Don’t mark required fields, mark optional ones. Or better yet avoid optional questions by using a branching question.

Password Field
The password field should us a hint text pattern to describe the requirements of the password.

Password Reveal
To reduce typos, allow the user to reveal their password. This eliminates the need for an additional ‘Confirm password’ field which doubles the effort and degrades the user experience.