I have been engaged in mobile development in the status of IP for the past year and a half. During this time I had to work with different people. After one unfortunate event, I decided that I needed to strengthen the skills of communication with customers and upholding my interests. I tried to collect my experience and the experience of my colleagues. The result was something like guidelines for freelancers. Beginners and not only.
Introduction
When it becomes necessary to create a service in general or a mobile application in particular, the customer has three approaches to implementing his idea:
- Creating jur. persons and hiring employees in the state (in accordance with the Labor Code of the Russian Federation);
- Work order from the development studio;
- Order of work from freelancers (individual entrepreneurs).
Section 1. compares the costs for each of the three approaches. And it says the formation of the cost of development.
Section 2. discusses the nuances of communication with the customer and the project life cycle.
Clause 3 states what you should pay attention to when communicating with the customer and making a decision on work or on refusal to work.
Clause 4 talks about controversial situations, how to prevent them, and what to do when they arise.
In the conclusion summarizes the work done.
Also available is a
video report from the @CocoaHeads confession.
1. How much does a developer’s labor cost?
The customer is interested in the terms and cost of the work. It so happened that the cost of development is measured in terms of hours. How to calculate the cost of one hour of development? To answer this question, you need to understand how much such work costs (would cost) on hired work, and also to find out the cost of work from the development studios. That is, you need to determine the amount in which the developer costs your employer, and hence the customer. In other words, you need to determine the cost of the developer.
1.1. How to estimate your cost
Consider the taxation of hired employees.
We all know that in our country there is a personal income tax (PIT) equal to 13%. However, not everyone knows, or pretends that they do not know that an employer, in addition to 13% of personal income tax, also pays a number of extrabudgetary funds (pension - PFR, medical insurance - FFOMS, social insurance - FSS). Read more
here .
• pension insurance in the PFR 22% to 796,000 per year (less than 60,000 per month net) + 10% of the excess amount;
• medical insurance in the FFOMS 5.1%;
• social insurance in the FSS 2.9% to 718,000 per year;
• contributions for insurance against accidents and occupational diseases 0.2% -8.5%.
It should be noted that further calculations are somewhat simplified. There are a lot of comments, “but”, preferential activities, just benefits. For example, for Skolkovo, contributions to the PFR are 14%, and there is generally no need to pay to the FFOMS and the FSS. These cases are not considered. Another point is also important: a 100% white salary is considered.
So, the cost of an employee is:
<Gross salary> + <PFR deductions> + <FFOMS deductions> + <FSS deductions> + <Accident insurance>
And the employee receives
<Net salary> = <gross salary> - 13% personal income tax
For example, as an employee, a developer earns 100,000 rubles a month or 1.2 million a year.
<Net salary> = 1,200,000
<Gross salary> = 1,200,000 / 0.87 = 1,379,310
<Deductions of the Pension Fund of Russia> = 796,000 * 0.22 + (1,200,000 / 0.87-796,000) * 0.1 = 233,451
<DFOMI Deductions> = 1,200,000 / 0.87 * 0.051 = 70 344
<FSS deductions> = 718 000 * 0.029 = 20 822
<Accident Insurance> = 1,200,000 / 0.87 * 0.002 = 2,758
The cost of such a developer per year is
1 379 310 + 233 451 + 70 344 + 20 822 + 2758 = 1 706 687
This is not all. An employee has many rights under labor laws and the kindness of the employer:
- Vacation 28 days a year;
- Awards;
- At least double the salary for work on weekends and holidays;
- Payment of sick leave. Usually at a loss wage;
- Voluntary medical insurance;
- Lunch compensation;
- Travel compensation;
- Compensation (partial or full) stay. Actually for tenants;
- Sports compensation
And all this affects the amount in which an employee costs the employer, and, therefore, the customer. In the case of an ordinary, non-socially oriented employer, we consider only item 1 and the case when the salary has not changed over the past year, and the bonuses have not been paid. Then for 28 vacation days the employee will receive a little less than 1 salary. If we slightly round up the calculations, then we can say that working a year for hire for 1.2 million, the cost of the developer is 1.7 million.
There are several other approaches for calculating the load on the business when hiring an employee. They take into account that the employee can be ill at the expense of the employer. But the number of days missed due to illness is difficult to predict, you can find some average number, but I did not. In many respects, because from my own experience I see that developers are reluctant to take sick leave and try not to get sick because of the monetary losses associated with the gaps.
To calculate the cost of an hour of development, you need to
know the number of working hours per year . In 2016, their 1974. Subtract 28 vacation days - 28 * 8 = 224 hours. Then the cost of an employee’s hour is
1 706 687 / (1974 - 224) = 1 706 687/1750 = 975
')
Now consider the simplified taxation system for individual entrepreneurs.
Tax and FEI Fees:
- Income tax 6% + 1% for income exceeding 300,000 per year;
- Contribution to the FIU 19 356.48 rubles / year;
- FFOMS contribution 3 796.85 rubles / year.
We determined that the developer’s prime cost is just over 1.7 million / year. SP, earning 1.7 million, gets his hands
1.7 million - 6% - (PFR + MHIF) - (1% of 1.7-0.3 million) = 1.56 million
In terms of the clock will be 895.
Calculations for different white salaries:

Now consider the cost of work in development studios (
from here ):

Thus, the development in successful studios costs 1500-3200 rubles per hour, and the average value is 2290 rubles. There is a lower entry threshold of 0.5 to 3 million (average 1.28 million). However, this threshold is presented for the entire project (not always on a single iOS platform). However, the customer does not always need a lot of work for a large amount. Sometimes the whole project will cost less than a million. Or he needs only mobile development. Cases where mobile development is cheaper than a million are not at all rare.
It is not clear what is included in this cost. Indeed, in addition to the development is the development of TZ, management, discussion, design and costs. Often the customer is provided with a part of the work “as a gift,” for example, a TK. It is clear that in such cases the cost of creating the TK is smeared over the remaining work. In addition, the cost of different specialists is different. In general, it cannot be said that the backend, web frontend and mobile frontend are the same for an hour. Nevertheless, even if this cost includes management and discussion, the freelancer combines these directions.
There are cheaper options. The cost of an hour of work in such companies is cheaper, but cheap qualifications may hide low qualifications or, worse, low qualifications that are submitted and sold under the guise of high.
Studios usually allocate from 10% to 50% of the time and money for management. By combining these 2 directions (and maybe not only these 2 directions), a freelancer can raise his price tag.
Here I would like to mention one more advantage of individual developers over studios. The absence of a complex hierarchy “developers - managers - top directors”, no spoiled phone, no links requiring additional payment, no bureaucracy. But there is transparency.
In addition, being with the performer in the same city, the customer has the opportunity to meet with him. This is a great opportunity to resolve many issues. Such a possibility is not available for studios from other cities and countries of the CIS. It is not always convenient to communicate electronically, live communication is wonderful, and sometimes irreplaceable. For example, when a customer wants to show something on his device in debug mode.
Example:The customer claims that his application is “slowing down”. I checked on the iPhone 5 - no brakes. At the meeting, it turned out that under the brakes the customer had in mind the long loading of the list structure, and not lag when scrolling.
1.2. What to include in the price
Everything you spend your time on:
- software development;
- counseling in this area (talk and discussion);
- writing TK;
- time spent on the assessment;
- time to create an application in the AppStore, maintenance in iTC;
- screen shots;
- time to establish accounts in various systems;
- time to add devices to TestFlight, HockeyApp And so on;
- other costs.
In addition, you need to remember to use paid services and software:
- github from $ 7 / month;
- Photoshop from 300 rubles / month;
- Illustrator 1500 rubles / month;
- Sketch $ 99 forever.
Working as an entrepreneur, you can include the costs of a manager, director, cleaning lady, electricity, the Internet, and anything else. Do not forget about the workplace. Computer and test devices also cost money. In calculating the cost of an hour developer, these costs were not taken into account. This means that the price tags presented above are below the minimum level.
There are other items of expenditure:
- Office rent, it is the rent;
- Internet payment;
- Other.
If you compare with companies, then for organizations there are items of expenditure subject to VAT. It can be rent, utilities, telephone and more. These costs are also included in the cost of services.
Should I include such costs in the cost of their work - you decide. Everyone knows that renting an office and the cost of the Internet for legal entities. individuals high. But I just want to show that working with individual developers, the cost of work is lower compared to studios or in comparison with hiring employees in the staff, even if you include all these costs. At the same time, the performer's profit is higher.
The customer does not need to be reminded of all these costs for which to pay him, but the contractor cannot forget about them.
1.3. What to include in the price is not necessary
- Apple developer program $ 99 / year, if you have your own published applications;
- Sketch if you already have one;
- time wasted with other customers;
- time to search for a customer.
2. How to behave the performer
2.1. Do not repeat the mistakes of others
From an economic point of view, working with freelancers is beneficial. But many customers do not work with freelancers.

Having understood why this happens, you can become a very valuable performer.
Customers from and from the Internet with negative experience working with freelancers note the following features:
• Laziness, lack of discipline, inability to manage their own time, disruption of terms, procrastination;
• Loss of communication: the phone is switched off, lack of access to the freelancer via email, skype, slack, etc.;
• Not bringing the project to the end. Even at the expense of payment;
• Lies, evading;
• Excessive promises. They vow to make beautiful and cool;
• Desire to appear better than it actually is;
• Floods in the apartment, trips to the hospital, commemoration of grandmothers, Internet disconnection, death of hamsters and other problems;
• Behave as small: they are offended, do not admit guilt, do not warn of troubles;
• Rarely are good managers;
• Surcharge for any sneeze;
• Do wrong, refuse to redo;
• Work on several projects;
• Work on a permanent, freelance in the evenings.
The fact is that the economic side of the issue is not the most important. For the customer is much more important:
• Effectiveness;
• A responsibility;
• honesty;
• Maturity;
• Flexibility;
• Focus.
Simply put, the customer needs a professional.

And the legal status of the performer plays a smaller role. But since it is officially the most profitable for the contractor to work in the status of an IP, only the relationship between the customer and the executive entrepreneur will be considered further.
2.2. What vocabulary to use
Communicating with the customer, you are a manager, not a programmer. You need to talk in pure language, using high-level vocabulary instead of jargon. In the words of A. N. Tolstoy, to treat the language in some way means to think in one way or another: approximately, inaccurately, incorrectly. The customer may not be aware of IT terminology and may understand you incorrectly or not understand at all.

Example:Communicating with the customer, he used the term MVP. I thought it was a Model-View-Presenter and wondered why he was crawling into design. After 2 minutes, I asked what MVP is. “Minimum viable product” - responded the customer. That is a product with a minimum of necessary functions.
2.3. Acquaintance with the customer and the project
The project may be completely new, and may already exist in some form. If you have to maintain the existing code, scold the work of other programmers is not professional. Especially when you have already agreed to work. It looks like an excuse for your own powerlessness. When discussing, you need to find out what happened to the previous employees, why they were abandoned. If the problem is that previous performers did not perform well, then you need to explain that labor costs when working with someone else’s dirty code are comparable to working from scratch. In any case, working with someone else's code implies a period of retracting.
If you see yourself as a user of a developed product, you like the project, be sure to express your thoughts. Perhaps one of your ideas has already been written to the customer in the list for the future. Or maybe it will just be noted by the customer as a good idea. In any case, you will demonstrate yourself not just as hands, ready to do only what they say, but as an involved person, and that you are on the same wavelength with the customer. Being in the subject of the project is your big plus.
If you do not see yourself as a future user of the service, do not rush to give advice and even less to criticize. However, questions of the target audience of the service, which problem the application solves, are always relevant.
If the customer does not understand something, for example, due to weak technical knowledge, do not think that he is stupid, bad or something else. The customer is usually a person who has managed to build his life in such a way that he can hire someone like you. Your task is to explain incomprehensible things briefly and clearly. If a scientist cannot explain what he is doing, a cleaner cleaning the floor in his laboratory, then he himself does not understand what he is doing (attributed to E. Rutherford).
If you notice that the customer wants to choose or chose the wrong technical solutions, be sure to point this out and explain why this decision is wrong. At the same time do not forget that the last word always remains for the customer.
At the end of the first meeting, it is advisable to leave your contact information to the customer. Often there are several people at the meetings. And the one with whom you made an appointment may not be the decision maker. It is best to communicate with the most important, with those who make decisions. If an investor is present at the meeting, it is simply necessary to give him your contacts.
If for any reason you do not want to take on the project, you need to be able to refuse and say "no." This is a very necessary skill, the absence of which persistent customers can use.
No need to take on impracticable projects. You should separate the tasks that you did not do, but you can do, from those that you can accomplish in an adequate period of time.
Two examples:You did not work with web sockets. This technology is many years old, it is run-in, so you will find a suitable library and learn how to work with it. Just to review existing solutions and study need to lay extra time. Or you were offered to develop a two-dimensional or three-dimensional game. If you do not have the relevant experience, it will take so much time to implement such a task that it is better to immediately contact a game developer.
2.4. Estimate of time and money
The more fuzziness in the requirements, the higher the cost. If you are asked to rate roughly, feel free to over-estimate. When fuzziness is resolved, the customer will be much nicer to hear less time and cost than increased by 30, 50, 200 percent. Anyway, it is often appropriate to mentally prepare customers for expensive work.
Try to bring as much clarity as possible into the understanding of the scope of your work. If you ask a lot of questions before the work begins, the clarity will appear both for you and for the customer. The more the customer sees your understanding, the higher his loyalty. It will be unpleasant in the course of the project to remember that you need to add more push notifications, add metrics for marketing and a lot of other little things.
A problem is common when the customer and the contractor do not fully understand what they want from each other. The so-called gap of expectations. For example, you rated only the mobile client, and the customer thought that the price also included a backend. Or the customer wants to register by thinking about the username and password. And the artist thinks about the email and password. Or about registration through social. network. To reduce the risk of being misunderstood or not understanding the customer, it is appropriate to rephrase your questions and answers, making sure that everyone understood everything correctly. But since everything is not foreseen, there should be some margin in the artist’s assessment.
If the customer does not have a clear understanding of what he wants, you can offer him to fix a certain amount of work, which is estimated as a whole. And additional functionality will be paid by the hour. Such a scheme encourages the customer to exert his forces towards the specification of requirements, and insures the contractor against free work.
There are cases when the customer wants to make changes to the task, but remain within the budget. Such cases should not be included in the assessment. Because the changes are very different, and if you try to insure to the maximum, the valuation will be transcendental. Correctly record the work in the contract, and evaluate additional improvements separately.
It happens that TK is not explicitly available, and the assessment is formed only on the basis of design layouts. It happens that there are no layouts either.
Example:I made a client for the loyalty program of one shopping center with one customer. When they needed a similar application for another shopping center, they asked me to give a rating for the case when only the user interface changes: the backgrounds, the location of the buttons, the icons change. In this case there was neither a TK, nor a layout.
But this is a rare case when you need to perform 2 almost identical work. Therefore, the design should be required.
The layout of the application takes about half the time from the entire development, but depending on the complexity of the layout, the effort may vary in any direction. And without the layouts, you can not guess much in the assessment. In addition, other clients (Android, web) also dance from design, as well as server development. In turn, the design dances from business requirements and functional requirements, i.e. from TK. Hence the need for TK. And the earlier the project is, the more obvious is the need for the TK. That is, when the service has neither a site nor a design, nothing can move on without TK. And when, for example, there is a website, a server part, and a mobile application is required, the need for the TZ is not so obvious to the customer. But it is better to short TZ, than his complete absence. It is enough to describe what is required from the mobile client and is ready.
Writing TK can be done by the customer, or the performer. For the performer this work is paid. And you need to immediately say. What are you ready to write TK, adjust according to customer requirements, and it will cost money.
When evaluating a project, you need to ask questions about the design:
• animation transitions between screens;
• blank screens (for empty lists);
• load indicators;
• indication of error messages;
At the same time, no matter how carefully you evaluate the project, no matter how transparent it may seem to you, take some reserve for unforeseen events. The size of this stock ranges from 15 to 50 percent and depends on
• your understanding of the project;
• the number of places that you have not encountered before. Additional time is needed to review existing solutions and study;
• assessment style and some subjective factors. For example, you can spend a lot of time refining the details and take a smaller margin, or you can multiply the labor costs by 1.5 and be ready for any turn.
Example:
This is a piece of design. Need to choose a date and time. It would seem nothing difficult:
• the time until 16 o'clock has already passed, so it is inactive;
• the time that can be chosen is highlighted in black;
• The selected time is highlighted with an orange background and white font.
However, it turned out that the list of available time needs to be requested from the server. For days there are also weekend or inactive dates. Thus, the task of choosing the date was not just a layout, but also hid in itself some logic and work with the network.
Example 2:
This is also a piece of design. There is an entity Task (Task), you need to display its attributes. In appearance, the usual property list of a certain entity turned out to be a dynamically generated property list, and not a static set. In addition, I learned about some of the TaskAttribute attributes very late (dontShowIfNull, dataType).

Such moments are very difficult to predict, so the time reserve should be, and be rather big.
It is important to understand that you will have to spend much more time on some parts of the program than you thought before the project began.
A separate song - the interaction with someone else's IPA. String type Id, passing parameters as multipart data, getting “json string” instead of json and other problems. In order to avoid problems with the API, it is very useful to inquire about its work at the stage of project evaluation. Is it possible to change the issue to fit your needs, or the API will not change? If it changes, how should we build interaction with the server developer: set tasks directly or through someone? All this affects the time required to run the update on the combat and test servers. And here it is necessary to say about the simple.
Very often, client developers have to wait for server-side developers. If this happens at the beginning or middle of a project, you just need to switch to another task, for example, layout. But when this happens at the end of a project, idleness occurs.
Example:You need to implement push notifications. The iOS developer creates certificates, talks about openssl to convert certificates into the required format, orders a method to update the token, orders payload and implements payload processing. And after that the waiting process can begin.
Simple should not be free. This need to talk. You can offer the customer to go forward and make payment, without waiting for the completion of server work. When everything is ready, the performer will finish it for free.
One more example:The customer wants to implement some functionality that requires work on both the server and the client. The client is ready, but the server is not. You can offer to release the application, without waiting for the server. And that add functionality in the update.
When you are offered to solve a difficult task that you have not encountered, you have the right to offer a blitz study of the problem in a short time. For the money, of course. Based on the results, you will be able to assess or adjust requirements or refuse to work by providing a detailed consultation.
If the customer is not satisfied with the cost of work, bargaining is possible and necessary. The customer can say - expensive. And ask to drop the price. But it happens quite rarely if he understands the value of the result, and it is above the named price. If the performer’s load is low now, or oh, how good the customer is, then the performer will have to take the risk, cut off the “pillow” and agree to a lower price. If the load is high, or you like the risk, you can say: “No, this is the price and only this, below any way”. Or you can bargain. The main thing to understand is that if the results of your activity have value, then the customer will easily agree to your conditions, and will persuade to do this, sometimes raising the price. And if the value of what you are doing is lower than the named price and even the cost price, then the customer should think about why it should be done at all.
But if the customer wants you to be strongly dumped, politely refuse: he can still come back to you when he realizes that your price is normal. Or will not return, apparently due to lack of money. No need to cling to every counter customer. If you do not like the customer for any other reasons, which will be discussed below, then in this case you need to be able to say a firm no. In general, refusing is a useful skill that I personally began to form quite recently and continues to be formed with experience.
2.5. Documents
Prior to the commencement of work, it is always important to observe the formalities: draw up and sign an agreement. The contract describes the relationship between the customer and the performer. In particular, it specifies:
• Subject of the agreement;
• Deadline;
• The order of execution, delivery and acceptance of work;
• Amount and order of payment;
• The term of free support;
• Responsibility of the parties;
• The procedure for early termination;
• Confidentiality;
• Details of the parties.
The existence of a contract plays a crucial role in the prevention of disputes. Nobody likes formalities and bureaucracy. In this regard, the TK is greatly simplified, and sometimes it is purely formal. And the less you asked questions when evaluating a project, the less specifics, the less understanding each piece of the project you and the customer have, the more problems will arise during implementation.
The contract must contain as an application technical specifications and design. The technical task consists of at least the following items:
• scope of work;
• Requirements for software and hardware;
• Functional requirements;
The design allows you to avoid breaking the expectations on the part of the interface.
2.6. Prepay
. . 50%. : .
– 50%? – , . , , . , , . : – , .
, , iTunesConnect . , , .
, . , – . – .
, iTC . . , .
50% – . – . , . , . , , . , , – . , 100% .
, 50% . , 10 000 , . -, , , .
, , , , . . .
2.7. Job
. , . . – . , , , .
, .
:
- , ;
- , ;
- . , . , , . . , , , .
: . , . , , , , , , , , , . , , , – . , , .
2.8.
, , , , . .
, , LinkedIn Facebook.
3.
« ». , . , . . , , .
, . , , . , . , .
, . . , . , , . 20%. , .
( - ), . , , . , , , , ( ) . .
, . , , 100% .
. . , . .
- . , . Why? -, . , , . -, . - . . , . -, .
, . . , . . , . , «» , .
, , , - . ? . , «-» . , . , - . , . : « ? PHP 2 ». « C++, , ». «» . , , . , -, , .
-, , . , . .
– , -. . . , , .
. , . , , , . , . . , . . – , . , .
, . , , . , - .
. . , , .
, , , . , , . , , . , , .
, – , – . , , . , – . , . , . , , ? ?
4.
2 , :
- ;
- .
. . 2 : . , .
, . . - , . , , . , , . , , . . , . , . , . . – .
, ? . , . . . , , , , . , , -, , , -, .
Example:. , , . , . . , . , . , .
: – , : .
Of course, problems may arise with the presence of a copy signed by the customer. The customer may announce any problems, for example, the server part does not have time to do something or there are non-technical problems (setting up an account in iTC, extending the Apple developer program, money problems, finally). In such cases, you can meet the customer and wait. And you can ask for payment under the contract, and complete the completion, when possible, for free. The question is how long to wait. Be careful: the customer, feeling your weakness, is unlikely to miss the opportunity to take advantage of it.
In general, you should try to solve problems so that you do not look like a stubborn ram, but at the same time you should not be allowed to bend yourself too much or too often. In other words, you need to be able to negotiate.
If you intend to use ready-made components (for example, chat or storage for media files) to implement any part of the project, the decision on the choice of component must be agreed with the customer. Again, giving him advice on existing solutions in the market. In order to conduct such a consultation, the executive will need to familiarize himself with such decisions, find out prices, restrictions and so on. The performer, who has not agreed his choice with the customer, takes full responsibility for possible problems on himself.
If you have taken a large project, and the people for whose work you are responsible, do not cope, disappear or break deadlines, a controversial situation arises. Who is to blame and what to do? If you are a responsible person, then you take the blame. Because you typed this command. Sometimes you have to work with less profit or even at a loss, but without losing your reputation and face. To complain about someone in such situations is extremely unprofessional. A decent person always fulfills his obligations to others and is not afraid of responsibility. If problems arise on the other side (the customer refuses to pay), you are also responsible to your colleagues, because they agreed with you, and not with your customer. To do this, prepayment is taken, steps are introduced in order to minimize the risks of gaining courage in front of colleagues.
Conclusion
Individual developers can earn more than wage earners, while still remaining cheaper performers for the customer. Therefore, customers often turn to freelancers. But often the customers are more important to the professionalism of the artist, than the opportunity to save.
The activity and area of ​​responsibility of such a developer goes far beyond the limits of technical work only. The freelancer is financially responsible for his words and the decisions made, which are fixed in the contract. Therefore, its decisions must be approached very carefully. Measure seven times - cut one.
The decision to start work with the customer or the refusal to cooperate is the main decision in every job. This decision should be well weighed. Do not be afraid to say no. Better than 2 weeks of inactivity than 2 months of hemorrhoids. Look at the customer better.
If you take on work, then you are responsible for the result not only with money, but also with your reputation. Took a tug - do not say that it is not a lot.
Papers play an important role in the relationship between the customer and the performer. Especially their role increases when problems arise. The seriousness of the relationship to the contract, annexes to the contract, TZ, act on the performance of work does not depend on the degree of closeness with the customer. Be it a friend or a person from another city. These documents bring clarity, not only in controversial situations, not only have a preventive effect, but also simply streamline the development process.