Requirement Gathering


Software Engineering recap

Software Engineering is fundamentally centered around identifying human problems and crafting solutions through the development of software that addresses these issues in a user-friendly manner. The ultimate goal is to render the problem obsolete once users have access to the software, thereby marking the project as successfully completed.

How do we determine when we've successfully solved the problem and can provide users with access to the software solution?

There has to be an agreement between the key people that need the problem to be solved before we can conclude that a problem is solved.

Who are these key people? Stakeholders

So what is Requirement gathering?

Requirement gathering involves bringing together all project stakeholders to ensure alignment on project needs and define acceptance criteria for successful project completion.

"A project's completion isn't measured by the absence of tasks but by the collective satisfaction of every stakeholder.”

For example, let's consider a food ordering app. A simple acceptance criterion everyone agrees on is that users can download the app, order food, pay, and get it delivered.

Types of Requirements

  • Functional: Describes what the software must do, e.g
    • User Login
    • Add to cart
    • In-App payment
    • Delivery etc
  • Non-Functional: Covers quality aspects, such as
    • Performance
    • Security
    • Devices
    • Accessibility
  • Business: Outlines overall goals and constraints.
    • Reach 20k users in 3 months of release
    • 1,000 daily visits
    • Dispatch 2,000 orders in a week

Functional and non-functional requirements are typically engineering-focused and familiar to most engineers. However, many engineers find it challenging to fully grasp business requirements. These requirements often encompass multiple aspects for success. For example, achieving a goal such as dispatching 2,000 orders per week requires alignment across engineering, logistics, support, and other areas. As an engineer, it's essential to understand your role in achieving these overarching business objectives.


In conclusion, requirement gathering is a critical step in software development that cannot be overlooked. It's about more than just listing features—it's about understanding the human needs behind the technology and ensuring alignment among key stakeholders. By investing time and effort in thorough requirement gathering, software engineers can lay the foundation for successful projects that truly address the needs of their users and stakeholders.