As Disney reminded us when it made “Tron,” the purpose of software is to serve users. “The Agile Manifesto” even starts, “Our highest priority is to satisfy the customer…”

Historically, software developers have needed to be reminded of this simple, user-friendly truth. In fact, this is the very reason user stories were invented.

So why do software development teams keep forgetting to put users first? The answer is actually kind of obvious: because we are development teams!

We are constantly studying software practices and trends while immersing ourselves in the minutiae of development best practices. This makes it easy to lose sight of our ultimate goal: creating something users actually enjoy using.

Web developers, desktop developers, and mobile developers each gravitate to what they know best. When they’re presented with a list of customer needs, ideas for solutions tend to come from within their comfort zones.

But to truly know what end users need, we must do our research, deeply understand the problem, and open our eyes to solutions that might fall outside of our wheelhouses. This is the best way to ensure the right technology emerges in the end.

Solutions Must Be Collaborative

Once research helps us understand the problem, designers, developers, and product managers all need to work together to craft the right solution.

Naturally, when the entire team is responsible for a market-viable product after one sprint, there will have to be compromises. Can this result in a watered-down product? Yes, but it’s still a product, and it can certainly be improved upon in the future.

Even having the wrong product in front of users allows you to better assess their needs and pivot accordingly.

Trying to match a pie-in-the-sky BRD typically leads to an over-engineered technology solution. Instead, teams need to work together to determine the product’s actual goal before deciding on a design that pigeonholes the technology or allowing the technology to dictate the design.

How to Zero in on The Right Solution

Follow these five tips when seeking to make the right tech decisions for each project:

1. Know the users. Conduct user interviews before defining platforms and technology. Let the problem dictate the solution.

2. Prototype. The Lean Startup popularized the idea of building cheap prototypes to find the correct product to build. Once you identify the right feature set, you can determine which technologies you should use.

3. Keep the tech stack vendor-agnostic. Recognize that technologies change. When using any third-party library, vendor SDK, or even database, abstract the details of those items from the application.

Think about computer science, where the concepts of loose coupling and dependency inversion keep products flexible and scalable. When a security flaw is suddenly found in the database — or when company policies change to prohibit open source libraries — the application is equipped to swap those dependencies for others.

4. Make a razor statement. A razor statement is one sentence that defines the goal of the product. It outlines the vision for all team members. When evaluating whether to proceed with a feature, the razor statement cuts items that do not fit. Sometimes, it even cuts technologies and platforms. For example, does setting up a React project make sense when the features left uncut by the razor statement could be accomplished with a WordPress site?

5. Keep studying. It’s necessary for developers to be knowledgeable in several different technology stacks to keep themselves from being married to one approach. Keep reading, keep studying, and keep adding new items to your utility belt. With a wide breadth of knowledge, the right solution will always be well within reach.

Software is created for users to use, so it only makes sense for user happiness to be a developer’s top priority. Don’t be afraid to try a new approach, make a few mistakes, and collaborate with those around you to ensure the user receives the best product possible.

Work together, know the audience, understand the goal, and deliver.