The mysterious power of the 'why' question in programming that you can't ignore

When I started my adventure with programming, I came from a completely different industry. I was a roofer. But don't worry. I won't talk to you about roofs and gutters. I want to share with you something that I discovered as a programmer that changed my software development approach. I didn't learn it in courses or books, but it was crucial to my success. It's all about one magical word - 'Why.'

Working as a roofer is pretty good. Above all, it is necessary, easy to perform, and once you get used to the heights, not so stressful.

As a roofer, you don’t have to overthink why you’re doing something. Having to lay 50 square meters of a roof per day “so that it doesn’t leak on people’s heads” is a sufficient answer to why you’re doing something.

And what about software development?

The Importance of Understanding Customer Needs

Imagine a scenario where a client or product owner requests integration with three external systems to display their data in chart form.

The team completes the integration, displays the charts, and releases the functionality to production. After a few days, the client comes back and says some unpleasant things:

  • My customers need help understanding these charts.

  • There is too much data, and the charts could be more helpful.

  • Charts cannot be viewed on phones.

It’s an unfortunate situation. The team knew how to create the functionality, integrate it with external systems, and render charts. Technically, everything was okay, so where was the problem?

Dear reader, the problem with this example is that it needs to be clarified why the client wanted this integration and charts and what problem they wanted to solve.

When coming to a team of developers requesting a new feature, customers, business owners, and product owners have a goal in mind. However, this goal is often hidden and needs to be extracted to ensure that what is being done is what the customer expects.

Every functionality carries some expected benefit or solves a specific problem. Before starting to work on implementing new functionality, it’s essential to understand it well.

  • What do we want to achieve by implementing this feature?

  • What goal will we achieve as a result?

  • What problem are we trying to solve?

  • What problem do we want to avoid?

  • What benefit will the customer gain by using this new feature?

  • How will it affect the customer’s work?

These are just some questions you can ask to ensure you understand what the customer wants.

It’s a bit harder than laying 50 m² of tiles, but it’s worth the effort; I know what I’m talking about. :)


Methods of customer need analysis

Many different methods and tools help architects analyze and understand customer needs. Here are a few of them:

  • SWOT analysis - allows for identifying the strengths and weaknesses of the solution, as well as opportunities and threats for the product or service.

  • Value map - helps understand what is most important to customers and what is less important.

  • Surveys and market research - enable gathering information directly from customers and understanding their needs.

  • Data analysis - allows for identifying trends and patterns in customer behavior and helps understand which functionalities are the most popular.

  • Persona - creating “personas” representing different customer groups, which helps better understand the needs of different audiences.


Tips for effective communication with clients

  • Ask a lot of questions

  • Listen carefully to what the client says

  • Ask questions that will help you understand the client’s needs

  • Explain what information you need from the client

  • Try to understand the client’s business context

  • Be patient and polite

  • Work on building a relationship with the client

  • Find a common language with the client

In demanding software development work, active listening and asking questions are crucial to understanding clients’ needs and creating a solution that meets their expectations.

Building partnerships with clients is also important because it allows for a better understanding of their needs and expectations and facilitates communication. This collaboration increases client satisfaction with the final product and leads to further cooperation.


Adapting functionality to end users

After understanding the client’s needs and defining the project goals, designing a solution tailored to end users’ needs is important. Ultimately, end users will use the product, and their satisfaction with its usefulness can greatly impact the project’s success.

Understanding who will be using the product and their needs, goals, and expectations is important. Then, design a solution that is easy to use and meets those needs. To do this, you can use techniques such as:

  • User Personas - creating fictional characters representing different groups of end users, which helps to understand their needs and goals better.

  • User Flows - mapping the paths end users will take in the product helps identify potential user problems and improve the user experience.

  • User Testing - conducting research where end users test the product, which helps identify problems and improve its usability.

Adapting functionality to end users can lead to increased user satisfaction and improved business results of the project. The more attention is paid to end users during the design and implementation of the product, the greater the chance of its success.


Methods of analyzing user needs

Various analysis methods can be used to understand end users’ needs. Here are a few of them:

  • Usability studies - allow for direct information gathering from end users to understand how they use the product and how it can be improved.

  • Acceptance testing verifies that the product meets business and user requirements and is ready for deployment.

  • Feedback loops - allow for collecting feedback from end users on an ongoing basis, which enables continuous improvement of the product.

Each of these methods can help in designing a better product that is more tailored to the needs of end users.

Analysis and measurement of business value

Analysis and measurement of business value are important because they help understand the benefits the project brings. This allows for estimating whether the project is profitable and meets business objectives.

Business value analysis also identifies areas where greater value can be achieved, leading to cost optimization or increased revenue. Measuring business value allows for real-time monitoring of project progress and evaluating its impact on the business.


Summary

Asking “why” questions that help identify the customer’s goals, problems, and benefits is very important in software development.

Asking questions and actively listening to the customer are essential to communication and collaboration with the customer. Adapting functionality to end users and analyzing business value is also necessary for project success—the “why” question is simple but can greatly impact project quality and customer satisfaction.

I encourage you to remember to ask “why” in your daily work. This question can help understand project goals and customer and end-user needs and adapt functionality to their needs.

They are asking “why” questions can help you create better solutions and increase customer satisfaction. Listen actively to the customer and pay attention to their needs to design better and more useful products.

Subscribe my blog