Did you ever have a project not go as expected? Or just outright fail? I have. More than an few times. And while everyone of those failures hurt, being able to learn and grow from the experience has still been helpful in my journey as a developer. “How did we get this wrong?” That is the question programmers often ask after they get feedback on a development project that didn’t meet expectations. And usually the most common answer is they didn’t meet the needs of all of the users. I find that what a lot of young developers miss is that they spent too much time focusing on the needs of the stakeholders involved in development project. The job isn’t to just satisfy those who are the project stakeholders.

Not creating a comprehensive list of users

Not including all users when defining the scope and deliverables of a project is usually the first mistake developers make. It’s easy to overlook and simply focus on how you are going to implement the program. By developing a list of potential users during the planning stage, you can force yourself to think through their use cases in more detail. Be persistent in the planning phase about developing a comprehensive list of who the different users will be.

You also can’t take it at face value when you are told who the users will be. Look at this as only a preliminary list and it is your job to make it comprehensive. That means asking each user you talk to who else they believe will be using the technology and digging deeper to find those peripheral or second and sometimes even third tier users.

Not optimizing for 3rd parties

Also forgotten during the planning stage is to include the users of other technology your program might touch. If you are getting data from or sending data to any other program, these are users too. Make sure you understand how this new program could affect them and if any upcoming projects need to be considered in planning the scope and deliverables of your program. You may find that a group is planning a major upgrade which will give them the ability to provide more robust data to your program or need more robust data from your program, missing this might not be a fail today, but six months from now the short sightedness of not including this group could be glaring.

In the international development space, your program can’t just sit in it’s own bubble. Your applications should be as open as possible making use of other’s data and allowing access to your data as well. But failing to account for these use cases in the planning stages can cause serious issue of scale down the road for your project.

Having disconnected expectations from the users

The third mistake I commonly see is not diving deep enough into how users expect the technology to work. This is often the result of focusing too much on deliverables during the planning stage and not looking enough at what technology (which includes pen and paper) users are currently using to try to get things done. Working with your users is key to understanding how they expect the technology to work.

Take time to ask to see any tool currently used, as well as any data being collected, and data being passed on to some other program or group of users. It’s also our job as developers to put ourselves into their current workflow and try to understand how we can optimize, or remove pain points. If you follow the data and work flow from start to finish you’ll be able to better understand your users.

Learning to properly scope your development projects can be a challenge for new developers. But you will find that if you take a more comprehensive approach to making sure all users are included in the planning phase you will need fewer fixes, your programs will be better, and you may even reduce the amount of time your programs spend in development. You are also less likely to find new users well into development avoiding revisions of scope and deliverables during your development phase.