Let say we want to build QA system like Stackoverflow, and I wonder whether "we should allow user to modify their Q & A, or user can only "Add Only" when posting Q or A?"
-Option 1: User can modify their Q & A at any time they want to, like Stackoverflow. But here is the problem.
Let say the user "A" create the question "What is car?", the user "B" saw "What is car?" question and start to answer "Car is ....". But before user "B" submitting the answer, a user "A" modified the question to "What is bicycle?".
So user "B" did not know that the question was modified, so he just submitted the answer "Car is ...." to the question "What is bicycle?". So, in this case he submitted the answer to the OLD question, not the latest updated question.
This is Stackoverflow problem. For example, many times I provided the question & later I changed my question a bit, but many people already answered my old question not the latest ones.
So that created some kind of confusion as I had to explained to the people (who answered my question) that I changed my question so that they can change their answer. However most people don't change their answers even I changed my question.
Stackoverflow didn't have a mechanism to lockup data in that situation. However, it does notify user that the question was edited, but it still allows user to insert Answer even the question was modified. Many users didn't see the reminder "The Question was Edited" so they may forget to update their answer.
To solve the proble, we need to build a system to check the consistency of all data is not easy & take time. We can use technique like Optimistic locking to do that.
-Option 2: User can "add only" their Q & A at any time they want to, like Google forum & many online newspaper such as yahoo news or NYT websites. We can also provide the delete button, so if user not happy what they wrote they can delete their posts.
In the option 2, we never have to worry about data inconsistency because the data was "added only" so we don't need to spend time to build system to check the consistency of all data like the option 1 & thus save use time.
However, user doesn't have the flexibility of modifying the data so if they wrote the Q or A wrongly then they need to delete them and start over. This is quite frustrated sometime. Let see this scenarios.
User "A" posted Question "What are car?", user "B" answered "Car is ...". However, user "A" realized that he got a wrong grammar so he deleted the Question "What are car?" & posted new Question "What is car?". By doing that, he was not only deleting his post but also deleting the other users' posts. Many times other users didn't knew that their posts were deleted. That is also a big issue.
So which option bring better experience to user & at same time we don't need to code a lot?