It may happen that your experience of cooperating with a software development company is not fully satisfying.
Sometimes, the developed product is far from your initial vision.
Or, the processes are not transparent enough, and you feel out of control.
This service can hardly be called excellent, and we believe that such cooperation is unacceptable.
We know what the client wants
The client and the development company see the development process from different points, and their perception of it is sometimes far from similar.
It is essential for the development company to see the development through their client’s eyes and understand all requirements and concerns from the product owner’s point of view.
We always try to identify the product features and services that would be the most important for the client and to emphasize the product components that the client finds the most essential.
We maintain close communication with our clients to be on the same page with them about what the final product should be like.
We adopt Agile principles
The Agile methodology allows quick delivery of a product business value; therefore, it is rather suitable for startup companies. For that reason, we use Agile principles in our development.
How can Agile help startups?
Before we go on, let’s remember why startups are launched as such. Startups are created to resolve an existing problem finding a new solution for it. Besides, each startup strives to make a product that would bring it profit.
Therefore, startups begin with experimenting with an idea of their product. Before they know whether their vision is successful or at least marketable, they need to give it some “tangible” shape.
This is why startups turn to software development companies – to breathe life into their idea. Along the way, their requirements will change dozens of times, as very often startup owners have only a basic idea of the final product.
By agreeing to work together on a project, the startup and the development company embark on a long and winding journey of trial and error, where quite some options are going to be discarded in search of the perfect one.
Agile is an excellent methodology for such development scenarios because it ensures development flexibility and allows making changes quickly.
Agile development is also more understandable and transparent for clients. They can see the product development stage by stage evaluating the completed components on the go and suggesting changes as necessary.
How do we ensure development transparency?
The matter of transparency is one of the critical ones.
We are always open with our clients in various aspects of our collaboration.
For new clients, we are proactive in sharing information about ourselves – what our company is doing, how it is doing it and what our philosophy is.
During the development, we communicate with clients via calls, chats and regular reports. We welcome our clients’ requests for information and provide all possible direct contacts with the team.
We share access to our development tools and services and invite the clients to participate in product reviews, task prioritization, and idea discussions.
Every Anansi employee speaks fluent English and, more often than not, other European languages, so it should not be a problem to talk to any team member.
Following each meeting, our clients get a memo containing a summary of the matters discussed at the meeting. This way, we reduce the chance of misunderstanding and make sure no crucial points are missed.
Besides communicating with our team on a daily basis, our clients also get weekly project status reports. These reports state what has been accomplished during the week, how many hours each task took, whether there were any deviations from the scope or schedule.
At the end of each sprint, we hold a demonstration and provide the code build for review and comments.
How is our development organized?
Each project is divided into fixed intervals called sprints. Each sprint follows the determined cycle and results in the delivery of a specific functional component.
Usually, our sprints are two weeks long and progress from setting the requirements to component design, development, testing and, finally, deployment.
At the end of each sprint, we have something to show to the client. They can review the result of our work, suggest changes, and follow the development process at any stage.
We start our cooperation with project planning and continue with as many sprints as needed to complete the entire scope of the project. We assist in the product deployment and, upon request, can also provide maintenance and support services.
Project planning stage
After we have discussed the rough project estimate and signed the contract with the client, we start project planning.
At the project planning stage, we finalize the total project budget, the scope of functionality to be delivered and the development schedule as well as final and intermediate deadlines.
The project planning also includes discussion of the first product version or the minimum viable product (MVP).
Often, developing an MVP reduces the project costs and allows validating the project idea with minimum investment.
Usually, project planning is completed in one or two weeks, and by the end of this period, we present the client the following:
- Team structure.
- Product concept or MVP.
- Application design.
- Project documentation consisting of user stories, detailed cost estimation, project plan, testing plan, technical specifications.
The results of project planning help us make the development clearer and easier to understand for our client. It gives the outline of the product to be delivered and shows which components will be implemented within each sprint.
After the project planning stage, we begin developing the project according to the defined schedule of sprints.
Phases of each sprint
- Setting requirements.
We define the requirements for the product together with the client. This is usually done at the sprint planning stage.
The requirements are stated via the prioritized product backlog and the detailed project estimation.
Each functional component is broken down into separate tasks with specific time also allocated to testing and bug fixing.
Such an approach allows determining the expected result of the sprint and planning the integrations between components in the build to be delivered.
Our development team is a group of skilled professionals working together. Each project team includes two or more developers, a designer, a quality assurance engineer, and a project manager. Also, the development team usually includes back-end programmers.
While putting together a project development team, we always make sure to invite the colleagues with the right skills to guarantee top-quality final product.
Typically, a project team consists of five to seven members, which we find the most optimal regarding coordination, communication, and productivity.
- Testing and error fixing.
Each finished feature or component is submitted to the quality assurance engineer for testing.
They test the software according to the test cases prepared during the project planning stage and included in the project documentation.
Each sprint also comprises regression testing intended to detect the bugs in the previously deployed code that might appear after the new functionality has been implemented.
The testing records are provided to the developers who fix the detected bugs. After all, bugs have been fixed; the quality assurance engineer tests the software again to verify that no errors remain.
At the same time, smoke tests are run to confirm that bug fixing has not affected other components. We always make sure that our final builds are free of critical or major bugs.
- Build delivery
At the end of each sprint, we deliver a build to the client. We also prepare a demo to show the client what we have accomplished and to get their feedback immediately.
Each build delivery also states the initial project estimate, the costs and time consumption so far and the time remaining until the project completion.
Any changes to the product requirements made while the development is already in progress are included in the sprint following their approval.
How is development coordinated?
Development of a complex project by a remote team requires considerable management effort, which includes coordinating the team members, tracking the time, controlling the project budget and making sure no important details are missed.
That is the responsibility of a project manager who makes sure that the client always knows what is going on with their project.
The project manager joins the team at the early stages of development. He/she participates in the market research, contributes to outlining the product concept and defining the scope of MVP, if necessary, and delivers the project plan.
The project manager distributes tasks between the members of the team and makes sure that each of them is clear and understandable.
This way, a smooth and productive development process is achieved, and the effective coordination within the team is established.
The project manager also monitors each sprint to verify that the whole planned scope has been implemented correctly and that the development progresses according to its schedule.
Advantages of Agile methodology
Iterative development allows making changes without interrupting the development and having to re-do large amounts of the completed code.
The client is regularly informed of the progress and can evaluate the intermediate results.
— More effective communication
Communication both within the team and between the team and the client guarantees efficient development and high-quality delivery.
— Increased productivity
Agile allows focusing on design and development rather than on documentation. This way, any bugs or issues are identified early, which makes it easier to fix.
— Reduced risks
With the Agile methodology, the risk of exceeding the project budget or time is lower.
The project manager maintains regular communication with the client to discuss further sprints before their start so that the changes and deviations from the plan are reduced to the minimum.
We have worked out this application development flow with the primary goal of delivering a robust and reliable product to the client and making them feel comfortable and in control.Back to Playbook