We offer software design and development services. To start a project, we need to sign a contract with a client.
Our cooperation with a customer consists of the following stages:
- We receive a request from a potential client;
- We have a preliminary conversation with a prospective client over the phone or invite them to our office. During the conversation, we qualify/disqualify the client trying to answer the following two questions:
– Are we suitable for the client?
– Is the client suitable for us?
- If the answer to both questions is “yes”, we discuss a client’s vision of a product;
- We agree on the results which we should deliver at the end of a project;
- We do a rough estimation and present it to a client;
- We do a detailed estimation and assign team members to a project;
- We sign a contract with a client;
- A client makes the prepayment;
- We start the development.
We get our leads from our previous client’s referrals or Google search.
We manage our leads in Jira where we have an exclusive “Sales” board for that purpose. For each of our leads, we start a Jira card in the “Contacted” list on that board.
Each lead card is reviewed by our manager or another person who can make decisions at the same level. Such a person should add themselves to the Jira card as a member. They study the potential client, sometimes contact them by email or phone and then qualify or disqualify the lead.
Usually, two people participate in sales calls – one salesman and one project manager.
This way, we can have two opinions on the potential project and can answer questions related both to the procedure in our company and the development.
At the same time, each sales call is an opportunity for our colleagues to get the necessary training and improve the overall sales process.
We always try to begin our study of the client’s product even before the contract is signed.
For example, we try to answer the following questions:
- What makes this product different?
- What is its primary benefit?
- What problem does the product resolve?
- Who is now the user of a similar product?
- Who is the target audience for the product?
- What is the main product attraction for the customers?
We engage all team members in the sales process and encourage their contacts with the potential client. This way, the client gets to know the people who are going to work on their product.
It also helps to deal with unexpected spikes of leads we receive, so that our manager can respond to them in a timely manner.
We use an application to manage schedules and staff availability. We are not focused on tracking time. However, we plan our work on a weekly basis.
If the client requests an NDA to be signed, we suggest that we start our negotiations before signing the NDA.
The reason is that we have a lot of clients and some of them do have similar product ideas and visions.
If the client insists on an NDA, we ask them to give us at least some information about the future project, so that we could verify that there is no conflict with any client we are currently working with or have worked with before.
When no such conflict exists, we consider the project beneficial, and the NDA is mutual, we sign the NDA.
If, however, the client’s NDA is not mutual, we use our NDA form instead.
For each project, we put together a team of business analytics, designers, and developers.
Also, we assign a project manager to each project to organize and coordinate the development process. For a detailed description of the project manager’s responsibilities and role, see the article(NOTE: INCLUDE ARTICLE).
Each member of our team has a profound knowledge of their major skill and can collaborate across disciplines.
We avoid referring to our team members as “resources” because we regard them as people and maintain such an attitude throughout the whole development process.
Typically, the project development team also includes an architect, stack-specific developers, UI designers, and testers.
The role of the architect is to create the application architecture including all functional components and the relations between them. The architecture serves as the basis for project development.
Usually, we involve two development teams in each project – back-end development and front-end development.
The back-end developers start first creating the server-side logic, data storage, integration, user management, push notifications, etc.
When the back-end is almost done, the front-end team joins the process working on the caching functionality, data synchronization, and UI/UX components. At this stage, the UI designers are also involved in creating wireframes and screen mockups.
During the development, each completed component is verified by the testing team who run various tests (functional testing, unit testing, integration testing) to check that the feature or function is working as intended.
Any detected bugs or errors are returned to the development team for fixing.
During the entire development process, the project manager closely communicates both with the team and the client to ensure that the initial project plan is kept and that the costs remain within the estimated budget.
The project manager also resolves any misunderstandings and takes care of change that needs to be made during development.
If such changes may result in the development delay or budget increase, the project manager discusses the matter with the client to achieve the most optimal solution, by suggesting either a more cost-effective option or a simplified functionality.
For the entire duration of the project development, communication within the team, as well as the proper distribution of responsibility, is of utmost importance.
Effective communication is essential for the team to deliver a high-quality product.
The team members communicate at scheduled meetings to discuss the development flow, the product vision, the issues arising during the development. They can also communicate directly to resolve urgent situations, such as a need for assistance or task delegation.
Some potential clients contact us with a detailed document containing the requirements for the final product or with a Request for Proposal.
In some cases, this document contains just a basic description of the product and the client’s overall vision of it.
In order to define the project cost, we prepare a rough estimate and a detailed estimate in which we put down the project scope broken down into individual features and components, define the schedule in two-week iterations and calculate the number of hours needed to complete each feature.
Projects may differ significantly in size, scope, or complexity. In all cases, very often the time and cost estimations are different.
For that reason, we do not apply the fixed-bid model in our work.
It is vital for us to know the client’s budget for the project. It might be not comfortable for the client, but this information will help to save the client’s and our time.
Knowing the budget makes it easier to determine the project scope which can be implemented.
If the scope exceeds the budget, we always try to offer a more cost-effective solution.
By identifying individual features and functional components of the product, we can also improve the product by:
- Focusing on a smaller set of features at each stage;
- Creating a valuable user experience;
- Establishing a comprehensive relationship with users;
- Including marketing tactics to promote the product;
- Implementing interactions allowing users to bring other users to the product.
Project invoicing is done per iteration.
The invoice amount is calculated by multiplying the number of hours in the iteration by the rate of each project team member participating in that iteration.
Depending on the project development stage, different skills and expertise levels may be required in different iterations.
Engaging our team in ‘times and material model’ may be similar to recruiting the same employees full-time.
However, working with us has the following advantages:
- Our developers have deep expertise in working with projects of various scale and complexity. We interviewed dozens of candidates and hand-picked high-class professionals to work with us.
- Our team is used to working together. We have established specific routines helping us achieve excellent results without unnecessary costs or time-consuming.
- We are always available for any consultations, discussions or demonstrations.
- We can include, exclude or replace a team member quickly if the project needs require so.
We also invite them to the project workspace in Slack messenger. This way, the clients can always know how the project is progressing.
We use Google Drive to store contracts. In order to track the contracts easily, we sort them in different folders – pending, completed, lost.
Our proposal and contract with the client usually consist of the following sections:
- Summary of the project estimations
- Hourly rates for different skills.
- Payment terms
- Amount of prepayment or retainer according to the contract terms
- Invoices are sent upon the completion of each iteration
- Agreement on the transfer of the ownership of the source code, created in the iteration for which the payment has been received, to the client
- Agreement under which the parties may not use materials breaching any other party’s copyright
- Agreement stating that the parties sign the contract of their free will and may terminate it upon the completion of any iteration
- Signature page
The invoices are prepared and sent to the client after each iteration is completed. We accompany the invoices with time tracking report that corresponds to tasks in Jira.
Our agreements require all invoices to be paid by bank transfer within five working days after each invoice is sent.
In the event of a lengthy or repeated payment delay, we may suspend the development until we receive the payment of the previously issued invoices.Back to Playbook