This is an instructive story about how, after many years of work on the side of the performer, I happened to be on the other side of the barricades and order the development on the side. This is a story about why there is nothing worse for a developer than an ideal customer.
As I have already said, I have been working with customers in a software company for many years. So - I had to work with different customers - with domestic and with foreign, with international corporations and with single startups.
I saw everything that only happens. I saw the pretentious Moscow managers, to whom I had to come once a week, because talking on the phone is a bunch of people, and I saw a simple American guy who picked up and flew to Siberia for a new year for us in order to personally explain to the developers what he wants.
')
I worked with strange people who made up the TK in half a page, with inadequacies who copied the specification once a week, with assholes who considered themselves slave owners. We made features that were not supported by iron, we developed applications for the axis, which had not yet come out, and adapted the design drawn by the child in the Paint editor for the retina. I worked with psychos who threatened with millions in penalties for the day of delay in the interim release.
I dealt with dealers who had no idea what the end customer wanted, I met inadequate people who understood how it was necessary only after we did what they asked for.
I worked with customers who “I'm actually a programmer too” and tried to teach us to do our job. I know what it means to redo everything from scratch three times per project.
Once I had a customer who jumped off the project because his office burned down with all the hardware and data. Once we had to make a clone for 200 bucks, although not - an advanced clone of the native apple application at a time when they had not yet opened access to many of their features for third-party developers.
In general, I worked with all kinds of impossible and impracticable. I understand what it is to do, I do not know what, so that yesterday was ready.
So - every time when I met another client, “why work there, do it like on Facebook”, I promised myself a word, not even - I swore by the graves of my ancestors that I really wouldn't behave in his place. I would work in his place so that the developer would pay extra for the pleasure of working with me. I’d be in his place simply the best customer. And once I became one.
Like any software company, once we wanted to make "your product". And as in any software company, we did not have free developers. Therefore, it was a heroic decision to apply fashionable outsourcing. Well, I already became a designer and a project manager.
After a bit of bargaining, we found a performer, signed a real contract, and I officially became a customer. As I swore, I became the best of all customers.
- I paid normal money. Those for which we ourselves would work.
- I had a real backlog, containing clear, specific and, most importantly, consistent requirements.
- I did not change the requirements during the project, did not interfere in the sprints and did not ask for a remake because I thought badly.
- The contractor could choose the development technologies, architecture, and write code by his own rules.
- We didn’t have a spoiled phone, I was the main contact person and I also formed requirements.
- No language barrier or accessibility problems.
- I had a distinct speck - each screen was drawn by a professional UX designer, the behavior of each button was painted.
- I myself conducted acceptance tests.
- I knew the realities of development, I understood that everyone has bugs and delays.
- I was not a programmer who knows how to.
In general, in all respects, I tried to be such a customer, which I always dreamed of. But over time, I began to notice that my contractor did not share my enthusiasm. It began to seem to me that for him I was just a nightmare. He probably considered me his worst client and cursed the day he read my ad.
A lot of time passed before I understood why it was so hard to work with me. And this understanding has completely changed my understanding of the relationship of the customer and the contractor in the field of IT.
First, I was too familiar with the requirements. Accordingly, it was hard to convince me that some details need additional explanations or examples and thus gain additional time. Any explanations and examples were cited immediately.
Secondly, I was the final customer - it was the customer, not even the representative. Therefore, it was impossible to agree with me not to notice any bugs or sign acts on parole to correct everything later.
And most importantly. I was too well aware of the result I wanted to get. This is the most paradoxical, because usually the problem is just the opposite. The fact is that in my case all the design was on our side. The contractor received ready-made and folded pages with detailed explanations in the style of "if you click here, this popup appears."
I think anyone will agree that the more abstract the requirements, the easier it is to work. And my requirements were so concretized that the developer was completely deprived of space for maneuver. And if he could not realize something (especially at the front end), then he simply did not have the opportunity to do something differently - to do it as he can. As a result, any problem had to be solved in the most difficult way, because the workaround was always cut off.
So it turned out that my most important advantage turned into the most important disadvantage. What is the moral in this? Such that it is impossible to separate design and development. The ideal customer should not specify in detail the behavior of each control. The ideal customer should describe the tasks that the application should solve and the conditions in which it should do this. The developer should do the rest himself - only then there is a chance that he will be able to embody his own ideas. Because with other people's ideas everything is much more complicated.