6 Things to Consider before Kicking Off a Web or Software Project
Let's say you have decided that a custom software is something that can benefit your business and you want to hire a team to develop it. In order to have a smooth and successful software development project, you have to consider some important things.
1. Have a clear goal for your software
In general, businesses create custom software or web application to achieve one or some of these goals:
- Streamline the business operation to save time or cost.
- Solve problems that your business currently has no way of solving.
- Reach out to new customers.
- Provide value-added services to existing customers for better retention.
Having a clear goal for your new software gives you more control over your project. It helps you identify and refine requirements and target audience. It also helps you control your budget and timeline.
Without solid expectation of what you want your software to achieve, you may end up with a patchwork of disconnected functionalities, wasting more money and time to try to piece them together at the end.
2. Identify the users
Who are the users of your new software? Who will the software benefit, and who will manage the software? Let's say you want to create a new web application that let your customers build custom furniture and purchase it online. The users of such an app would be:
- New and existing customers
- Account manager or customer service agent
- Production team who makes the furniture
- Marketer who uses CRM
- Business owner or management
Each type of users will have different roles, different expectations, and different needs. It's important to clearly identify them and their needs so that they can be incorporated into your project plan.
3. Define the project requirements
The project requirements are the features and functionalities that your new software should include. This list should reflect the needs of each type of users. You may have to interview your team or some of your existing customers to understand how each of them operates and what each of them needs.
Then, the requirements of each of these types of stakeholders should be merged to create a list of project requirements. Done this way, you'll have a software that functions well as a system rather than disconnected pieces.
For example, in the above example of web-based custom furniture application, the account manager needs to take the customer's order and give it to the production team. If the customer makes changes, the account manager has to inform the production team. The business owner has to manage the movement of personnel as new members join the team or old members leave the team. The software has to be able to deal with these situations.
A good question to ask yourself is "What If?" question. Think about different "What If" questions to see what kind of potential problems might arise. Incorporate these into the project requirements. You don't need to have an answer to these questions; it's enough to bring them to light at this stage.
4. Have a developer go through your requirements
Once you have a list of requirements, have a software developer go through your requirements. While a business owner focuses on the business side of the software, such as its cost and its marketability, a developer focuses on technology side of the requirements. As a developer listens to the requirements, she or he thinks about:
- the connection between each requirement and how the requirements can be integrated as a whole
- whether there are any requirements that are very hard to implement or not possible to implement
- what the best way to implementing a functionality is
- if there are any conflicting requirements
- how future changes might affect a certain requirement
In short, a developer can "rubber-stamp" your vision if it is doable, or suggest changes to your requirements. She or he can also tell you if a certain requirement is too time-consuming and costly in relation to its usefulness. Furthermore, she or he can advise you of the best technology stack (programming languages, frameworks, and other tools) to use for your project.
5. Refine your project requirements
If the software you are creating is a new one, you'll want to focus on creating a "minimum viable product" - a product that has just the enough functionalities to make it useful and appealing to your users.
This is because you would not know how the software will be received by users or what kind of functionalities are very useful and conversely not useful at all until it is used by real users in real world. Often, business owners fall into the trap of trying to include every features imaginable to the initial product. Not only does this increase the cost and time, often, many functionalities end up being not used and it may cost more money to remove them from the software!
Instead, focus on creating just the minimum product. If the software is created in scalable fashion (and you need good developers to do this), new functionalities can be added to the software once you validated the product and received feedback from real users.
Try to break down the list of requirements into these 3 categories:
- Must-have features: these are the features that are critical to your software. Without them, the software cannot achieve its key goals, fails to function in some scenarios, does not meet the needs of a type of users, or have a gaping hole in the security.
- Nice-to-have features: these are the features that can enhance your software and probably are beneficial, but without them, the software can still achieve its goals and function well.
- Optional features: these are the features that might be beneficial but you have less confidence in them than Nice-to-have features.
6. Decide on the project timeline
After the project requirements are defined, come up with a realistic project timeline. If you are using your in-house development team, you will have to talk to your team and get their input. If you are using an outsourced team, you will have to talk to the team to get an idea of how much time is needed for development.
Set milestones and deadlines that are doable. Consider that each of these tasks, below, requires time:
- Requirement analysis and sofware planning
- UI / UX (user-interface and user-experience) design
- Prototyping (simulation of actual software, coding of UI etc)
- Software development
- Testing, quality assurance
Every stage may involve communication between you and the development team, so you have to account for the time for this as well. In general, the faster you can provide feedback or schedule a meeting with the development team, the faster the project is finished. Also, you'll want to allocate time for further testing and training by your internal team after the finished software is delivered to you.
Once you have a realistic expectation of the project timeline, you can plan out the launch date of your new software.
A good amount of planning is needed to successfully develop a new software, whether it's a web app, mobile app, or desktop app. Sloppy planning leads to slow development, unexpected problems during development, conflicting requirements, and patchwork of disconnected functionalities.
A good planning involves:
- Having a clear goal for your software
- Identifying the users
- Defining project requirements
- Having your requirements looked at by a developer
- Refining project requirements, categorizing them as must-have, nice-to-have, and optional
- Coming up with milestones and deadlines