I have a question about automatically saved forms. We are developing a complex system where user has to fill the form which includes multiple pages. After clicking the button "next page" the system saves the received data to the database and has to make many queries and calculations. We are convinced that its unnecessary to use automatically saved form fields in this kind of situation but our client still thinks that it is drastic loss of data if Internet connection/or other problem occors durning the form filling process.

Are we underestimating the client problem? Which kind of programs should use automatic form field saving?

  • this question really needs some context, but at first glance, your client is correct – Devin Oct 9 '15 at 17:20

I think it is important to have auto save for few reasons

  • As your client says, internet connectivity/OS crash/etc... will force users to restart
  • Filling out lengthy forms is annoying as is, imagine doing it over, you might lose a client that way, bad UX.
  • Google mail, even SE and any other platform that requires users data entry all have autosave, that implies that anything that requires user's attention for an extended period of time ( meaning not instantaneous interaction ) is designed to be done once. Let it run in the background, you don't even have to notify the user of it, but its comforting to know that the time you have spent filling out multiple pages form will not be wasted for any reason, other than your own, whatsoever.

Your client is correct. The reason he provides is one of the most important, but from an user perspective, you should apply the DRY PRINCIPLE

In software engineering, don’t repeat yourself (DRY) is a principle of software development, aimed at reducing repetition of information of all kinds, especially useful in multi-tier architectures. The DRY principle is stated as “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.”

This being said, you can save information on a persistent or a volatile way. In general, if your client is worried about power outages, I'd go with a persistent model, otherwise you can use sessions and NOT write to DB until completion. Then again, I'd go with the first option. Think about something like drafts: you will create drafts on every step, then when you click the submit button on the final step, you can write the definitive version to the DB.

Finally, what about validation? Are you leaving fields through steps non validated? Based on your description, and your reluctance to do operations, it sounds like that. If this is the case, you should really re-think your process or you'll have lots of way worse issues down the road

  • This is not a case of the DRY principle. As you've quoted, the principle is about keeping each piece of knowledge in one spot in the system. This way when it needs to be modified, we need only do so in one spot. Not having the user repeat him/herself is a good idea, but it's not what DRY refers to. E.g. if there were 2 places in the form where the user has to enter his/her name, that would be a violation of DRY (perhaps unless those fields are kept in sync). – timdiels Oct 8 '17 at 10:37

"Which kind of programs should use automatic form field saving?"

My team's philosophy is that any time a form spans over multiple pages (regradless of the specific program), form data should be auto-saved incrementally. We validate inline and pass field entries via ajax to the back end.

It looks like the pain point for you is described in this line: "the system saves the received data to the database and has to make many queries and calculations."

Expanding on the "draft" model mentioned above by @Devin. You might implement a temporary staging table in your DB where incomplete form data is maintained but not committed until form submit. In the case where information is entered into the staging table and never committed, you can set a script to remove records which have been inactive for whatever period of time makes sense (30, 90 days etc.) Hope that helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.