Software is big business, and mobile apps offer new ways to connect with your customers to enhance your brand. But sometimes the software development process looks much harder than it should be. In fact, it's surprisingly common for customers to express dissatisfaction when the project is completed.
Obstacles to Explaining Your Vision
The situation is not helped by the fact that it can sometimes be very difficult to talk to developers about software. Without you have a background in programming, it's easy to get lost in a sea of technical mumbo-jumbo. Developers are not doing this intentionally, they just have an entirely different perspective of software development from their customers. They use different terminology to talk about features of an application and often want to discuss the invisible parts of the app that you have not even considered.
The jargon creates a barrier that leads to misunderstandings. The features may work differently than expected, or do something else entirely. The UI may not suit the workflow that you had in mind, or the app may be flawed in other serious ways. At the end of the day, you just did not get what you wanted.
Ensure Your Vision is Communicated Clearly
The answer is to learn to speak the same language as your developer. Although you do not need to learn any code, there are some simple terms that you can use that will make your points a lot easier for them to understand. Also, understanding the process they will use to organize your project will provide you with realistic timeline expectations and a mechanism through which you can make course corrections. Together, these concepts will help you create a healthy, collaborative dialogue with your developer that minimizes friction, improves the quality of the end product and leaves you both feeling more satisfied when the project is complete.
Agile Development Methodology
The first thing to be aware of is that most developers will use the Agile Methodology to organize the project. This approach allows programmers to get feedback from the customer through the development process. Since the code is easier to refactor before the entire program is completed, feedback during the process reduces the risk of delays and makes sure the end product stays in line with your vision. In the past, developers asked for a complete list of specifications before the first line of code was written, making changes virtually impossible.
The Agile method breaks the project down into a number of smaller iterations, or sprints. The developer will work on a few features during the sprint, after which they'll show you some working code, and you can tell them if it's what you expected. Each sprint may only take a couple of weeks despite the whole project that could take a few months in total.
Create User Stories to Explain Your Vision
When you communicate your vision to the developer, they are listening for discrete features, functions and structure that will fit into each sprint. In other words, they are trying to identify "user stories", which are simple descriptions of how a user will access the software to accomplish a particular function. The basic structure of a "user story" is: As a [user], I need a [feature] to do [a task].
Here's an example:
As a [blog writer], I need an [upload button] so that I can [upload an image to the blog].
This story can be broken down into smaller steps the developer can write code for:
1: As I am writing a page of content, I want to embed an image.
2: I click on a button labeled "Insert image."
3: A dialog box appears with a file picker.
4: I click on the file picker and choose an image from my hard drive.
5: The app uploads an image and saves it to the media directory.
6: The app inserts the code for the image into the blog post.
7: The image is displayed in the editor.
8: I continue writing the post.
Explaining your vision using this structure and vocabulary not only helps your developer understand what you want, but also gives you a better sense of what to expect as a final product. Do not worry about the low-level details (steps 5-7) because the developer will be able to fill these in with you.
The developer will also be thinking of what should happen if something goes wrong. What if the file can not upload because of a poor internet connection? What if the file is too heavy? Should the image be scaled or cropped?
By addressing these points ahead of time, it becomes much easier to program the feature in a way that works from the start and has fewer bugs / glitches. Furthermore, as you monitor the progress during the development process, you'll both have a point of reference.
Dealing With Schedules
If we all had infinite deadlines, every new app would be perfect when it was completed. Of course, mankind might be extinct before it was released, but it would be awesome software!
In reality, you need to set some deadlines. And that means prioritizing the features that will make it into the software. By now, your developer should have an idea of how long it will take to develop each feature. These are just estimates, but they are probably fairly accurate.
One of the main goals of the "sprint" concept is to break down the total project time into more manageable chunks, with an exact goal for each. The developer will plan how much of the application can be completed within a single sprint. Sometimes, tasks are finished quicker than expected while others take longer. The sprints can then be adjusted accordingly to keep the project on track overall. Most importantly, the code is in a working state at the end of each sprint. It must be possible to demonstrate real running code – otherwise, you will not be able to provide any feedback!
Sometimes, it will not be possible to fit all the features into the app before the release deadline. You'll be faced with a tough decision – what do you want to keep, and what should be cut out or postponed until a future version? The developer will give you time estimates for each one, but it's up to you to prioritize them.
Working well with developers is easy if you are willing to take a step or two into their world. In the end, being prepared with an understanding of a few key terms and their overall process will result in a better product that faithfully implements your vision.