What is the most important thing?
One of our clients had an existing desktop application that was continually updated over a 10 year period to accommodate customer requests. As a small business owner, he did the expedient thing in order to retain his customers by adding everything they wanted. This is not the first nor the last time I will hear this story.
Trying to give everyone everything they want is good intentioned but it's a set up for catastrophe
At one of my previous employers, that was the normal mode of operation. As customers asked for help, they would create new unique solutions to the problem. Eventually they learned to make everything dynamic so the customization could be done quickly with little effort. With a little internal documentation, the method worked nicely for many years. Then a major problem occurred when a customer asked for the existing system to be extended way beyond what had been done before. It was time to create a real enterprise solution that could work for multiple customers at multiple sites.
Where does one begin and what do you do about upgrading the existing system without them loosing all of their data? This is exactly the same problem we faced in helping our small business owner.
Start with a core functionality and validate it before adding more components
So you have a very complicated desktop application that is all things to all people, and then on top of everything else you receive a request to make it work on a mobile device! Fortunately for us, the owner realized he needed professional help. He wanted to start by building a server side API to save his client's data from their laptops to a custom server we would build for him. That was a very wise start of a great relationship between us. Over several months the API came into being. Before the API was fully finished, we started building a mobile version. But wait, the mobile version could not possibly have everything available that was added to the product over a 10 year period. Some serious cutting and whittling needed to occur.
Over several short but very meaningful meetings, we discovered the target persona of the mobile device and their usage scenarios. We built a low fidelity prototype as a first pass to facilitate discussion about how the customer would accomplish their tasks on the mobile device. It was very rough and just a guess at what functionality was needed, but mostly it helped us visualize what should be done. After a couple of review sessions and reworking the prototype, we finally came to a consensus on what the first mobile product would do in just over two weeks time. At the same time the developers had started working on the framework to support a mobile platform not being connected all the time to the server.
Once the customer flow was settled on, the development began on the user interface. Again we faced a decision of what are the most important parameters to present on the mobile device. Hundreds of them would not work, so we started the process again of working on which parameters were the most important for the mobile user. Which ones did they need at all times and which ones never made sense for them? Which ones would they need sometimes?
And the process of discovery continues today…