Engineering for the users
When creating any project, we must first think about “what will this project do for its user.” in most medium to large projects, the users will be diverse, and each will have their own needs. So then, how should we design our project to accommodate all the user’s needs.
To fully accommodate all of your user’s needs, you need to create a user flow diagram for all your users. A user flow diagram is a document that tells you what the customer needs to do to achieve their goal using the current solution. From this diagram, you can deduce which process takes too many steps and which steps take too much time. This will help you know what your app should do to improve the user flow.
After you have mapped all of your user’s needs, you can start designing features in your application that fulfill those needs. In this process, you should also consider which feature can be shared and which should be developed specifically for the user.
Let’s look at my project for this demonstration. We’ll simplify the scope and consider the project only to have two roles, student and teacher. Here we’ll only consider the process of asking for permission to apply to an internship program.
From those flow diagrams, we can see that there are many unnecessary processes and delays. For a more efficient process, steps like manually typing and sending emails back and forth can be simplified in-app. Since we verify the authenticity of the teacher response in-app, we can also forgo the drafting and signing recommendation letter steps.
From here, we can start designing unique features that will help the user to achieve their goals. For instance, we plan to implement email and push notification services to help the teacher get notified promptly. We also plan to eliminate all the document creation and signing steps. Instead, the application will store the approval state in the database.
Using the above information, we restructure the flow of the users to be:
As you can see the proposed flow diagram is more straightforward and efficient compared to the previous one.
That is only a small example of User-based engineering. You need to consider the use case of all of your users for your projects to be successfull.