Requirement gathering

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. You need to ask questions that help you figure out the full requirements for the project.