Gathering requirements is one of the most difficult tasks a software
engineer faces. In industry, you may gather requirements from end users,
external clients, or from co-workers in other areas of your own
company. Occasionally, you may receive a well documented set of requirements.
However, in most cases, you will need to glean the requirements
from conversations with the prospective clients, and distill them down into
something actionable on your own. Suppose a teacher came to you
with a request for a piece of software their students could
use to find out the average length of the sentences in
their essays. What questions come into mind to help you figure
out the full requirements for this project. Write down a list
of at least ten questions that might help you determine them.
Please take the time to do this before moving on. There's
no penalty for looking ahead, but if you skip this exercise
you'll cheat yourself out of the benefits of brainstorming and getting
your mind around the project before being bombarded by more information.