The main aspects of
To initiate work on any product, we have to clearly understand the real purpose of its development and its ultimate value. Even in the case of perfectly prepared input documentation, it is always worth making sure that both the client and us see all the basic cause-and-effect relationships in the same way. Sometimes it's enough to have a couple of meetings to be on the same page with you. Sometimes, it is important to create a test iteration of the work to be sure that everything is clear.
The "kickoff meetings only" format is efficient for a small product or when you need quick results. We prepare a meeting agenda, conduct it with optimal timing, answer your questions, and learn everything for organizing the workflow properly. We document decisions made, and then we're ready for the next step: agreeing on the format of the work and starting the work itself.
In the case of a strategic and large-scale product, we will most likely offer you to test each other in a "pilot product" format. Together with you, we will define a small part of the final product, by developing this we will understand the productivity of our cooperation and move towards a common goal. We can show our processes in practice, quickly demonstrate first results and learn important aspects of the final product earlier. We can almost always offer you such a proposal that releasing a pilot product will already begin to benefit your company.
In the "pilot product" format, you can clearly understand our strengths and pricing policy. We follow the successive prices policy, so after this iteration, you will have a pretty clear idea of how much our services will cost you on every task.
There is no point in building a systematic work format when developing a small product. We will discuss the services you need and offer a reasonable price. Otherwise, clear and comfortable for everyone rules of the game should be prescribed. At this stage, we already have a clear understanding of the final product you need, the main risks, and the difficulties. Therefore, we prepare the first version of the cooperation agreement and then finalize it with you. This is usually a few pages of plain and simple text that is easy to understand. Of course, this document can be changed in the process, if necessary.
Since we focus on complex products' development, it is essential to get all the inputs of each task right, quickly reformulate the requirements in technical language, eliminate uncertainties, and start our work. Proper problem formulation that considers all business goals, interrelationships, and extreme cases are often the biggest and the most challenging part of the job. We are well aware of the cost of mistakes at the design level, so all our managers have a technical background.
We focus on the discussion productivity when communicating with customers and third parties. We are always well prepared for meetings, have enough knowledge of the subject area, understand what technical issues will be discussed, and do not waste our partner's time. Our managers know when it is better to give an estimate immediately, to save time, and when it is better taking time to study the question. We know how to guide you along the way and give rough but reliable estimates on the deadlines and costs.
We have a systematic approach to handling edge and non-obvious cases. We are ready to ask all the necessary clarifying questions right on the spot and immediately orient you when you can wait for the final estimate on the tasks. Of course, we do all this by taking into account the architectural constraints and requirements of the product. Finally, we know how to document facts well for internal use and can share these artifacts with you.
Due to the high quality of the documentation, the business analysis and design processes are transferable within each team, which optimizes the time spent. Moreover, we believe that every problem specification must be validated, and we do this without exception on every product. That's why the final estimates are as close to reality as possible. Many of our processes are standardized and we have developed templates for them. This option gives us and our clients more confidence in the stability of the processes.
From the very beginning, we build quality communication with the client. Therefore, at the production stage, we have already understood the most critical aspects of the product in most cases. At this stage, the optimal set of utilities for monitoring is already in place, and we have agreed on control points and priorities.
We've prepared troubleshooting procedures to respond quickly to a potential or actual incident. We have all the tools we need to solve incidents efficiently: technical error tracker (Sentry), vital metrics monitoring (atop in the basic version, or custom dashboards on Grafana), product metrics monitoring (it is usually a slack channel for alerts, plus a technical board for engineers), informative logs (just in the file system in the basic version, on ELK for a more solid product).
We base our decisions on two important things: our agreements with the client and our understanding of product risks. Sometimes there is no option to wait for the client's response, and we need to make the decision on the spot. We don't pass up in the face of such a challenge and take responsibility. When we see a potential threat that may lead to consequences, we start investigating it quickly. Depending on the agreements, we can systematically document incidents and report all the important things to the client. With this well-balanced approach, the support price is reasonable, and the product is under our complete control.