Tips for Building Fantastic Apps
1. Define the high-level project objective
State what you want to build in one sentence.
- “I want to build an application that allows people to hail taxis”
- “I want to build an application that allows people to search websites on the internet”
- “I want to build an application that allows people to publish their videos online”
- “I want to build an application that allows employers to post vacancies”
This should be your true north! Other features and attributes such as pricing models, if it is free or paid, if it requires registration or not etc should be secondary and come only after you have defined the high-level objective.
2. Define your big black boxes
Web applications can be complex and often needs various features to enable users to get value. These features are often interdependent and the relationship between them has to be carefully thought through.
However, you should define the big black boxes in the solution. These boxes will drive the core processes in the application.
Your black boxes for a public-facing application can be something like this;
- Customer Acquisition
- Request Processing
- Fulfillment Initiation
- Request Management
Defining your black boxes can be helpful in managing resources, especially time as you have to ensure you are not going too deep in a particular box to the detriment of the other boxes. It is important for software to mature organically.
3. Define your critical requirements
What are the critical requirements that are needed for each stage to happen successfully? These requirements also have an effect on other stages, as such their interdependencies must be clearly defined.
4. Refine your critical requirements
You can now go further to refine your smart requirements adding other micro support features but clearly tagging each for what they are.
5. Define business phases
This is very important not just to the successful delivery of software applications but also for the business that the software is driving to be successful. Technology-driven businesses can be broken into phases. You may choose to use an application for customer acquisition for instance and process the other aspects of the transactions using traditional means. Breaking the process into business phases helps you to test the acceptance of the product to ensure you have a Product-Market Fit. It also gives you great feedback which helps in designing the other aspects of the product.
6. Break the project into phases
This is a fallout of defining the business phases. You can break development and deployment into phases. There are several advantages of this including but not limited to budget management, sprint management as the team is able to focus on smaller bits of the entire project rather than focusing on all the applications as a whole. This also improves quality assurance as testing is also done in smaller sections.
7. Determine the technology system
Decide on the architecture and programming languages and methods that will be used in the project. Your software consultant should come up with this and explain to you the reasons for it, its advantages and disadvantages and also the alternatives.
8. Pick a good technical team
With the help of your software consultant, pick a good development team. A typical team can have a User interface/Experience Designer, a Front End Developer, a Back End Developer, a Business Analyst, a Quality Assurance Manager, and a Project Manager. Often some of these roles can be combined.
9. Agree on pricing
Based on the agreed scope, determine the project cost and payment milestones. The payment milestone should be clear with tangible milestones. Where possible, milestones should be tied to successful pilots. Pricing can also come in an earlier stage in the process.
10. Build your User Interface
Build your User Interface. While some developers prefer leaving this for later stages which works also, building it at the beginning gives you the ability to see what you will get at the end of the day. Asides from that it ensures everyone is on the same page and improves overall project morale which is critical for software development projects.
11. Build and test small components
Begin your development in identified phases and test rigorously. Your Quality Assurance Manager will do a better job when testing is done in phases. There are other automated testing methods that can be deployed also.
12. Launch in phases
Do you pilot in phases rather than at the end of the entire development? Pilots give the best feedback better than any review can give. You could preferably use a closed user group for your pilot to manage reputational risks and budget. If you do a public pilot you may even earn some revenue.
13. Iterate the process for the other phases
Continue developing your awesome application knowing your project already has a life of its own!