During the time of my work at Apiko (over 2 years), I have dealt with projects of different complexity led by teams of different sizes.
Each project has had its specifics, but all of them have been united by one factor (or even a problem of modern project management) - which is mutual understanding between a client and development team.
It is very difficult to completely express what you expect to get after the development. It is a continuous process you have to correct all the time to get a positive outcome.
In this article, I want to share my experience of working with diverse clients and projects. I will describe the main stages of software development and give some tips on how to keep out of misunderstanding and achieve synergy between developers and clients.
You have got an idea. How to communicate it to the development company
You have born your idea in mind for a long time and now need to communicate it to the development company. To avoid any misunderstandings and ensure that you are on the same page, try to be as clear as possible.
Here are the main steps you should take to shape your idea into explicit specifications.
Create the initial requirements
Any serious project starts with defining the problem it solves and describing the solution you offer.
On this stage, clients describe the kernel of the problem and their vision of how it can be solved. The development company analyzes the problem and, based on the experience, offers you the project execution plan.
If you are pushing a new product, we recommend starting from concept development! that will help you to identify whether there is a market need for your product.
Advice: Don’t insist on using certain technologies, features or solutions only because someone has recommended it to you. It’s better to discuss the technologies with your development team, weigh all pros and cons and choose the technology based on the mutual discussion, company’s experience and already developed projects.
Create a list of features
After the main concept of development is clear, it’s time to design the technical specifications.
There are two main options here. First - the development company offers you the essential features of your app, based on the market research and competitor analysis. Second - you define these features together with your team.
Whatever you choose, the features list should be discussed in every detail. Here are the main factors to consider:
Advice: It’s difficult to predict all product aspects, so try to build the product foundation with the most important features and then scale it based on the users' feedback.
Choose the technology
Often сlients foreknow what technologies they want to use. Such confidence may be caused by the following factors:
Reviews on the internet
Relying on the friends' recommendations is not always good for you. Their projects may have certain differences that may become critical if you choose the same technologies. Reviews are also not so reliable, as when describing their technologies people often highlight the benefits and look away from their drawbacks. Trends are changing with the lightning speed, so relying on them is also not the best solution.
Advice: Before choosing the technology or tool, carefully research all its strengths and weaknesses. Remember that there are no perfect tools, your task is to choose the most optimal and suitable ones for your project.
Start from the MVP or 80% of the app with 20% of the effort
This approach may be applied to many areas, including the software development.
Here is the thing: it’s nearly impossible to project the end application, as most of them are “live” and clients continuously modify and improve them.
MVP helps you to create a product with the most basic functionality for its testing and the perspective to scale it in the future.
Such an approach has also an economic value, as you avoid the development of a large number of features, without which the project will not lose its concept:
Functionality that will not be used in the beginning
Functionality that doesn’t influence the project’s main idea and concept.
Functionality that may turn out to be unhandy for the end user.
There are a lot of materials out there about MVP benefits, but the biggest value is that you can test your product on real users, understand on practice what things they really need and save both the development time and money.
Advice: When developing an MVP, make it scalable with an opportunity to add necessary features as your product grows.
Think about your product's design
After you have decided on the project’s functionality and technology stack, the design team creates the mockups of the app.
Read about ins and outs of product design in our selection of related articles.
Design software architecture
The project development should start with architecture design. Architecture is the set of solutions about the organization of a system, its components, and interfaces.
It contains the groundwork for the main features implementation and the product future scaling.
Advice: Don’t save on architecture design. Badly designed architecture can lead to unpredicted risks and longer development time.
Architecture design may seem to be a vain waste of resources on the first sight, as you don’t see the final result. However, this is a fruitful investment, as a thoughtfully designed architecture will simplify the development, reduce its cost and time, which are significant metrics for customer.
Advice: When designing an architecture, take into account not only primary tasks, but also those ones, that will potentially come in handy in future.
If you skip the architecture design when developing a large and scalable product, you risk ending up with constant product reorganization and rewriting. This, in its turn, leads to bad code quality and longer development time.
Proceed to development
There are a lot of software development methodologies out there. At Apiko, we use Scrum methodology. The tasks are distributed among the team members and are timeboxed to 2 weeks. This time span is called sprint.
At the end of each sprint, the team analyzes the results and presents them to the product owner. The team analyzes its progress and thinks about how to improve it. Here are some of the benefits of this approach:
The team conducts a regular self-analysis of its work
Product owner always stays tuned for any updates, risks, and results
The development process is regularly improved, which increases the work efficiency
Advice: Don’t keep your list of requirements static. You can correct and improve it based on the experience and obtained a result. But before making any changes, discuss it with your development team, as things that seem simple to you, may be difficult to implement technically.
Don’t ignore testing
Testing is an integral part of any project that is applied on each level of the software development cycle.
There are three main types of testing. The first type is manual testing. Just implemented features should be tested before going live.
The second type is automated testing. After any change, the app will automatically execute tests and report about malfunctions. Automated testing helps to immediately eliminate errors and mitigate risks.
End-to-end testing is a type of software testing that automatically checks the entire flow of application from the user`s side. E2E testing identifies the performance of all system dependencies and components as well as its interaction with external systems in a real-life scenario.
If you are interested, read about the process of end to end testing in this article.
Advice: Don’t neglect the automated testing and spare more time for this. It will verify the end to end process flow and help to prevent bugs in the early stage of development.
Scale your product
When you have brought your project to light, the main power goes to your users. As I’ve already mentioned, it’s very difficult to predict everything at the beginning. After your project is released, listen to the feedback of your first users and adjust your product accordingly.
Are you curious about the stages of app development we use at Apiko? Download our free PDF, where you will learn about concept development, UX/UI development, web/mobile development, QA and support in more detail.