We had a chance to discuss forms for complex use-cases during UX Camp Europe. I'm grateful for the great insights given especially by Paweł, Oliver, and Maximilian who have experience with designing complex forms for various industries - whether it's government, medical or enterprise organizations.
There's ton of great sources on how to design forms well, but we tried to go beyond that and focus on expert users, everyday use of our systems and complex use-cases.
It's always good to follow existing good practices, like only ask for the information that is necessary and your system can act on it, ask in a meaningful order, use gestalt principles when grouping related fields, don't go crazy with the form structure and make sure users understand your labels. But can we do some more if we're striving for efficiency? Should the design be any different if the users are experts working with our solution every day?
Allow your user to follow their natural flow. That means that not only main pages and sections are in the order that is meaningful, expected, and corresponds to the context of the user. Make effort to organize the form accordingly on the micro-level, too. That means to show hints that should be read first just before filling the field and any subsequent validation right after. This also helps users with voice-over or screen readers.
Letting our system (or the browser) to autofill the data instead of our user saves time. But make sure this function doesn't hinder the user in the end. While this function is expected and appreciated by the users who fill the same data often, with not-so-often usage the data may change and result in wrong submissions. The same happens when the user fills the form often, but with different data, eg. when submitting medical information of different patients, when using CAPTCHA, or codes from 2FA authentication. For these types of fields, autocomplete function should be disabled. If you are worried about not being compliant with WCAG guidelines for autocomplete, keep in mind it's expected only to autocomplete the data about the user who is filling the form. Also, pre-filled fields may be less noticeable.