User-Driven Software Development

In software development, one faces the constant challenge of delivering a product that makes the user happy. The best way to do this is data-based. You start with hypotheses about the user’s problems. But what can you do when all the decisions you make about flawless delivery do not match your expectations. Instead, you base them on user feedback and interactions.

I want to comment on this from the perspective of a software developer because even with today’s knowledge and best practices, I unfortunately experience time and again that “development bypasses the user.” Even agile development with Scrum and Kanban is of little help if user feedback is not regularly collected during development and integrated into the following milestone.
Methods such as prototyping, acceptance testing, A/B testing, and others help develop apps and websites that meet user-centric and usability-focused requirements. Unfortunately, many companies, product owners, and development teams tend to become user-operationally blind quickly and overly focused on strategies, processes, business models, KPIs, and generally the original idea instead of constantly bearing the regular questioning of uncertainty.

Hypothesis Benefit

Many Silicon Valley start-up guidebooks (such as the book “The Lean Startup) see product development based on hypotheses about the foundation for successful software. The Lean Startup methodology describes it like this: experiments and user testing are essential to confirm valid assumptions or draw insights and conclusions to improve the product by learning what is not valid.”

From hypothesis to experiment: our own decisions as product owners or stakeholders do not necessarily match those of users. A common approach to solving this problem sounds simple. Still, it requires discipline: by defining hypotheses, decision-makers and stakeholders should always assume they are wrong with their assumptions and always validate their statements first.
The point is to find out what users value, and data should always justify decisions. After all, the customers don’t need special training. Instead, the software should adapt to them and their preferences.

A hypothesis should always be: A) testable and B) falsifiable.
These can be formulated as follows, for example. “I believe [target group X] will use [solution Y] because [reason]”.

The following are possible methods to get closer to users and gain insights before and during development. These methods help us stay focused on developing the right features and avoid branching into momentous events that cost us extra time and money.

User Feedback Methods

User Driven Software Development Workflow

1

Design clickable prototypes of your app or website using mockup tools. Incorporate only the core features (MVP) and gather feedback from work colleagues and friends. Improve your mockups in multiple iterations. Each iteration will help focus on features that are not yet well communicated or intuitive enough to use. It will also reveal whether you can do without certain features altogether. In addition to optimizing the user experience (UX), it’s about prioritizing what’s important. Only after this cut is complete, you may start programming with your team.

2

Organize acceptance tests (user acceptance tests) after each (major) milestone by inviting non-project people to personal interviews and let them operate the software. Practical tests yield the insight needed about the app’s features from the user’s point of view. User experience and customer acceptance are the usual suspects that help us identify usability, UX, or UI issues. Write down feedback and record interactions as screen recordings. Take time after each interview session to evaluate user behavior with your team. Repeat this process regularly with people who have never used your software.

3

You can use survey platforms like Surveymonkey for A/B testing of graphics, marketing material, and app/web screenshots, where you can also ask participants directly for suggestions for improvement. The advantage of these non-direct and personal options is that they are straightforward and easy to scale. Also, you could select specific target groups for statistical evaluations. Participation costs start from one euro per participant and go up two or three euros for particular target groups. Additional benefits are the possibility to run this survey on a small scale, and it requires no supervision.

4

Conducting a soft launch of the app or website in selected test markets allows users to experience the authentic product even during early development. Early feedback is precious and removes the risk of a possible PR hit. In contrast, any post-launch error is much more challenging to handle. When customers interact with the app during the early stages, developers gain timely insight into their focus and priority for later development.

5

Integrating analytics and tracking tools into the software is essential. Don’t be afraid to dedicate the time needed to define and incorporate custom analytics-friendly tools. Charts tailored to the application allow to identify of bottlenecks and churn points in user behavior. For example, users may get stuck at a certain point during browsing the app or visit certain areas more frequently than others. Heat maps provide further information about the physical presence of customers on the web or app pages.

6

Use the A/B testing features of the app stores for mobile apps or via tracking tools for your websites. Adjusting your app thanks to the conclusions you can make based on tracking data is an easy way to improve your conversion rate. Users are randomly redirected into different groups and see various logos, screenshots, images, texts, or layouts. The impact that these tests have on user experience and user engagement rate are available for easy evaluation. There are various platforms on the market that help you run such tests.

7

Use personas to get an overview of your target groups. They are fictional users of a target group, and like real users, they have needs, skills, and goals. You create personas to get a better idea of the potential target group and regularly check if the actual users still meet the expectations of the defined personas. If the target group changes unconsciously, the product may have to adapt as well. Or you may decide to make changes to the UI / design to reach the original target group more strongly again.

8

Direct feedback: You should always actively approach your customers when they need it, but you should be there to hear it whenever they have something to say. Keep an open ear for app store reviews and comments and feedback and support emails. Companies often underestimate the value of early feedback and direct feedback. Still, these two are some of the most valuable sources for uncovering potential usability problems and for detailed insights about user behavior.

9

Offer simple in-app feedback options such as a form of star rating, and provide incentives for users to send feedback. You reward users and let them know that their opinion to improve the product is taken seriously by communicating with them regularly and showing progress (and decisions based on your feedback).

10

Provide the community with channels for accessible communication —such as a ticket system, forum, support email address, or Slack—and pitch users ideas for upcoming features to ask for feedback early in development. Maybe you don’t even need a pitch from developers because the community itself most likely already has some creative input that you can use.

11

Maybe there are a lot of active app users who gladly would share their personal experience with it. Let early adopters become a part of your team. Invite them to use the internal Trello / Jira, and introduce them to your project manager. Try to keep them involved in the development process while regularly updating them on progress and prioritization. Don’t hide your team’s communication; instead, honestly share your ongoing development process and use their feedback to maximize their motivation. Although doing this may sound like a lot of effort at first, long-term user engagement with active users will lead to a much better product. You may even find your best future employee sooner or later.

12

Release the software parts as an open-source product and promote the community spirit to improve upon it. That way, all the tech-savvy users can participate in the project and provide feedback directly by finding and removing bugs and help your dev team advance exciting new features. Not only that, but they can develop and incorporate features usable by your app directly.

13

Provide APIs for the software to allow other companies and developers to enrich the ecosystem with their ideas (such as Facebook’s developer APIs or APIs for various large platforms such as Google Suite, Github, or Slack). Available APIs turn products into interactive platforms that anyone with the right skill can participate in and bring improvements or even create brand new features.

14

If the software is a video game, promote modding to expand the ecosystem of the game. Support other players and developers by providing tools, level editors, and good documentation. You could also develop a sandbox feature with specific rules, where players can express their creativity (e.g. Garry’s Mod or Minecraft).

User-driven software development: in a nutshell

User-driven development is a very straightforward concept, but, in reality, there are quite a few obstacles to achieving it. Companies easily get distracted by possibilities available through new technologies and lose track of what their customers actually want. Steve Jobs gave us an early warning about this problem by sharing one of his most quotes insights on the fundamentals of success:  that we should rather ask ourselves “where can we take the customers” instead of “let’s sit down with the engineers…
Customers are a lot more than just the mere consumer of the final product. They can —and should be— the inspirators, supporters, even co-creators of exciting products or services. It comes down to the ability for companies to create and present opportunities for their customers to become the trusty critics and advisors of the product they, themselves, most enjoy. The interactivity intensity and the increased authority by the customer bring the term ‘user engagement’ to a completely new level.

User-driven software development is but a small step toward product perfection. When it comes to the ideal customer experience, such an approach brings the product closer to what the clients expect. At the same time, some of the top customer experience comes from users’ active participation in the development and finalization of their item of desire. And their early feedback saves a lot of trouble by focusing on demanding issues as soon as they arise.

Author

Stoil Shopov | Senior Software Engineer

Stoil is a skilled Software Engineer with 8 years of experience and a strong background in mobile native development in Java and Swift. He is also a skilled .net engineer with DevOps skills on Azure and Amazon Web Services. He loves interdisciplinary work and can switch between technologies on the fly.
When it comes to give a helping hand, he's always first and a true asset in all projects he's involved.