3 Coding Practices for Solving the Right Problem

Li-Hsuan Lung
Level Up Coding
Published in
4 min readSep 18, 2020

--

Solving the wrong problem is often more costly than building the wrong solution.

Photo by Jurica Koletić on Unsplash

As a software developer, I am a natural problem-solver. I take one look at a problem and immediately start thinking about how to solve it in my head. However, plunging head-first into a solution without seeing the big picture first is often counter-productive.

In this article, we will take a look at three software development practices that can help us find the right problem to solve. But before we talk about coding, let us first take a page from product management–the profession specializes in finding problems.

What Is Problem Space

The product development process consists of two stages — problem space and solution space. Problem space is where you attempt to identify a customer need. Solution space is the product that addresses the need. Working in problem space involves listening to customers, capturing their needs, and asking questions to paint a picture of their situation.

A quick example would be that upon realizing your colleagues have not taken any break this year, you decide to take it upon yourself to learn more about why people are not taking vacations. You may start interviewing your colleagues, and asking questions:

Do you know how much paid-time-off you have left this year? Were you told not to take any vacation from your manager? Do you have teammates that you can count on when you are absent from work?

The observations and facts that you gather become the boundary around your problem space. They form the basis of your hypothesis to address a customer’s needs.

Stay In Problem Space

The obvious benefit of investing time in problem space is that you will have a better idea of what the problem is and develop relevant solutions. Software developers typically do not spend a lot of time in problem space, as we are often told to solve problems, not looking for them.

Below are three of my favorite coding practices to keep myself grounded in problem space.

Domain-Driven Design

--

--