While writing personal projects as well as well in the job, I often struggle to proceed on the current task because either I get stuck on what I was thinking or didn't thought about all the corner cases that may arise in the future. I was thinking what if before coding anything I do some brain storming and write a series of steps as I do in algorithm problems.
I know its known as 'Use cases' but I think I will get really side tracked if I start to read all the books on it, I want something simple yet robust for at least my personal project. I did some homework and while writing a simple toy project I though to write an use case which is basically how the user would interact with the system.
Here it is:
""" Design a question and answer system which allows user to see optional hints to each question and let him assign score to each question answered. The order of the question next time would depend on the current scores. UseCase: 1. User sees a welcome message and avalilable topics 2. User chooses the topic 3. A new session is started for the user 4. User sees a question on the selected topic 4.1 User asks for hint by pressing '/h' 4.2 User sees a hint 4.2.1 User presses '/h', Repeat step 4.2 4.2.2 User presses 'return' GOTO step 5 5. User is prompted to answer the question 6. User answers the question, presses 'return' 7. User sees the answer 8. User is prompted to give a score [1, 3] 7. Repeat steps 4-8 until there are no more questions 8. User sees the summary of questions and scores 9. User is asked if it needs to start another session 9.1 User enters 'Y', Repeat steps 1-9 9.2 User receives a goodbye message 10. End Requirements: 1. The user can choose topic 2. An user can see all its previous sessions 3. The user can stop and resume a session 4. The system should be designed in such a way that the order of the questions changes based on the user's last score for each question """
I need to know if there is are irrelevant/redundant details which can be avoided and if there is any details which can be added?
Is this correct approach of solving problems in general?
I am planning to read more about use case design via standard books on the topic but I think its a good strategy to learn something new before diving into details.