A general principle for power users is that they appreciate efficiency and can learn almost any control you give them. This is fantastic from your point of view because it means you can focus your interface design on speed optimisations and cut a lot of distracting fluff.
Let's break down your users' actual workflow for a moment.
- Check through form, search for an error
- Navigate to error
- Correct error
- Search for another error
- If no more errors found, validate the form as complete
In this we assume that an unfilled form field is an error - this makes the act of filling out a blank form a simple one in terms of workflow since the search for another error boils down to "go to the next form field".
One of the central conflicts you have is the tension between users wanting to see all the information at once, and needing to be able to skip through sections quickly to fill out appropriate parts. This is a natural tension between searching for the errors and correcting them.
A small amount of testing may reveal the balance of time spent on searching for vs. correcting errors. This may vary based on the aggregate number of errors in the form submissions, the form layout, and the methods used to navigate. Identifying error rates in particular is important - if 90% of forms have few to no errors, then you may get more mileage out of improving the search as a priority, since it will have more of an impact on the aggregate speed of the workflow. Once you've identified this balance, you'll be able to make sensible decisions about whether to optimise for search speed or for correction speed.
It is likely that identifying errors is the biggest source of frustration to your users even if making it better doesn't gain you as much in terms of speed. Searching for errors requires a fair amount of vigilance, whereas correcting errors is either simpler, or more interesting to deal with. This may well be reflected in their desire to see the whole form at once, as this would naturally help them to skim over and pick out obvious errors more quickly. Note though that what users want and what they need are not necessarily correlated - I would suggest that you test various different levels of overview in order to strike a balance between the high-level scanning and the field-by-field validation. You could even allow users to select their level of overview using keyboard shortcuts, letting them get the high level view before diving down to check specifics.
Unrelated to this consideration are a number of efficiency improvements you can make.
Firstly, any sort of automatic error detection or field validation you can perform will take load off the user. A lot of this can be fairly basic. Bear in mind, however, that unless you can guarantee that a validation method will be 100% accurate, you're not reducing workload for your users unless the system actually catches an error.
In terms of visual load, you will want to flag errors rather than "correct" items. This allows your visual design to fit into the checklist mental model, and provides an easier at-a-glance summary which can confirm that errors exist. Doing things the other way around forces the user to mentally process items as completed and as therefore ignoreable, and they gain no knowledge about whether errors exist from a glance at the form.
Use keyboard shortcuts to navigate not just between fields, but between sections of fields. Your users will be able to process gestalt collections of fields at once with some practice, so it's important to let them control the speed of their progress. As an example, tab
might skip from field to field in an address section, while ctrl + tab
might skip to the next section entirely. Remember to include shortcuts for skipping backwards, too.
In addition to this, numbered (or lettered) sections, with dedicated section-specific shortcuts, will help users skip around the form much more quickly. If you were using the tab paradigm from above, they could go through the form with tab + 1
, tab + 2
etc.
Allowing users to mark sections as complete/validated can make overall validation of the entire form much easier. It also allows the user to chunk each form into sections, mentally tackling them as a series of small tasks rather than as one giant one. You can automatically collapse or hide them from view once validated, therefore reducing their effect on the user's cognitive load - this ties into the accordion suggestion others have made. Depending on the number of sections you have, you might even be able to use a progress bar or something similar to signify and encourage progress. This is distinct from doing it automatically, because after the user has validated the field you can be confident that they are correct.