Master of Management and freelancer. Tale in three parts

For those who just scroll further, a brief summary: “google: freelance sign a contract” thanks for your attention.

A slightly more complete description: How I discovered new management tops thanks to one customer, while working on a joint freelance project.

The first two acts are essentially introductory, the culmination of the action and the appearance of the skeleton in the closet occurs in the third act. Those who like to watch only the final of the film, can squander immediately to the third part .

Act One: Tolerant


Characters: I, a friend of C, Company X, CEO1

September:


- do you want to write a program for android for X?
- come on, but we are not engaged in the development of design, testing, or administrative part, by the way, let's write on React-Native.

October:


Having talked with CEO1, we designated the terms - ~ 3 months, we agreed how the application will be released - initially we will issue to a limited number of users, if everything is fine, we give to a large number, then we finish the payments, we decorate the design and we release, after the release we finish some, not very important , questionnaire (testing user material). Everything ends with six months of support. React-Native technology was a little discussed - CEO1 feared that the technology was new, but we assured that in case of any critical problems we would take the blame, which could of course affect the deadlines. The fears were in vain, React-Native + Redux proved to be a good one. The idea that at the same time it is possible to replace the iOS application with one, also liked the other side, although this task went beyond the framework of agreements.

As soon as it was agreed, within a couple of weeks we issued a prototype and a document listing the main functionality, after which the customer unexpectedly wished to start testing in December to come in the new year already with the release. We were a little surprised that we hadn’t really begun yet, and the deadlines were already tightening, but in any case we didn’t intend to delay and said that we would try.

November:


I fill the application with functionality, not forgetting about the beautiful animation, I even take a few days of vacation on the main work to meet the deadline, fasten the themes so that the design can be changed quickly and conveniently later. At React-Native, everything is created quite easily and simply. At one point, there were still problems with Redux, but, following the results of the one and a half days of the trial, I came to the conclusion that I had prepared it a little wrong - you cannot do “a page with redux <=> many components”, but you should “a page <=> many components with redux ”, everything starts to work fine, but since then I start to periodically run the application on Redmi-2 with 1GB of memory to prevent such incidents. The result of November - a few days before the beginning of December, everything promised is ready, the application is quite functional and can be given to the first round of testing.

December:


About three weeks, the other side is trying to make a list of 10 people to whom you can send the application, after that it disappears altogether, in general, you can understand - the new year is soon. I correct minor problems, improve and optimize something.

January:


Mid January. A letter arrives that the list is ready and, finally, is sent to the first testers. There are two rather detailed reviews that are generally positive about the application, and I immediately fix noncritical comments. But something is wrong - complaints started that other users cannot log in with their usernames and passwords. Without even thinking too much, we assume that the problem is somewhere on the side of the customer’s test backend, and most likely the data on it does not coincide with the fact that on the main server, for a couple of weeks, this becomes clear and corrected by simply reloading the data from prod to test.

I screw the payment functionality to google-play, although its implementation is not yet on the backend, I do the interaction by analogy with what is in the iOS app for the apple store, I write the backend emulator for this functionality, I test it.

Action 2: incremental.


Characters: I, a friend of C, CEO2 manager, tester T, director D.

February:


Let me remind you that February has already begun. But what about the timing? Why did I hurry? Well, okay, the stage is passed, and the application, even with a delay, is in any case better than none. We look forward to when the top ten will be asked to test again, but re-sending does not occur, as so, we are surprised, we are looking for D companies. After a couple of weeks, a letter arrives stating that CEO1 is replaced by CEO2, nothing comes to mind except a trivial “this is a turn”. Of course, we nod our heads, thinking that we understand the reasons why CEO1 was removed, and now everything will probably get better. CEO2 will start work next month.

March:


In the middle of the month, a new CEO2 appears, which, for the first week, speaks in general the right things: it takes the tester T to follow it, tells us that in no case should we spend any time either on testing or setting up the console or on others administrative things, and all this will be handled by tester T. The main thing is that now we have a common JIRA for interaction and coordination. Good and even excellent, we say, but the deadlines have already been missed so much, and the project is essentially put in a long box, so now, to remove it from there, let's mark some deadlines for both parties + then it must also be maintained for six months . Well, they say to us, let’s consider the first day of May to be the beginning of warranty support and payment, even if we are not unreleased by this date. No problem, we answer, let's decide what is left of the critical.

After a week or two, it turns out that there are three main critical things:

1) For some reason, the first was a questionnaire, although before that we were told that the least important of the entire application.
2) Verification of login-email validation on the client side.
3) Payment, although it should also be only after the first stage of testing.
4) login via facebook, although in January we were asked to remove it.

The list of blockers and criticism of problems includes such things as:

4) Vertical separator between login and password on the registration page.
5) Minimize the keyboard on the change password page in the user account when switching between fields.

During the week, point # 1 is made, in parallel, about three hours twice a week, the importance of point # 2 is discussed, as it turns out there are application development standards known to all ( except for me, of course ), I nevertheless insist that this is not only not necessary, but in no significant way does not affect the backend, moreover, it requires duplicating the same logic on all applications and the site, moreover, there are corporate users in the system whose login is not email. The other side says that it will understand this issue in great detail, after a week and a half, a multi-page document appears where all the login options are described in all applications and on the site (and they are the same), while it’s still not clear how to align the points for different types of users. . I will skip the details, I will just say that at the end of many hours the other party finally agrees to my proposal. Finally, CEO-2 gets the implementation of the functionality of payment # 3 - google-play for backend.

April:


I do everything critical, major, and even minor ( even those that, in my understanding, are not ), as it is not very difficult - it's easier to do than discuss. Backend makes the payment, but it does not quite return something at one of the steps, which is generally normal for the development process.

Here comes the first strange call, CEO-2 unexpectedly offers to make sure that the application is working “as fast as possible”, which I do not really understand as quickly as possible, the tester T says that in general everything is fine, no previous user mentioned performance problems, but I, naively, voiced that on the oldest phone that I found, I noticed that the exit from the search page, when all 300+ books are shown on it, is delayed, but there is no problem for some more relevant hardware so critical in this I see nothing.

Until the beginning of the next month, there are two weeks left, everything that was promised at this stage has been done (in fact, everything except decorating the design, including what it wasn’t communicating to do), and even, I think, much more - hours of useless sozvonov, like nothing can happen anymore. Everything that was on me in JIRA is closed, but ... the blocking of the telegram begins, where we have a general chat. In general, with interruptions, but it is clear that all participants appear online, but do not respond and do not write only - CEO2 and T, after a week it is finally clear that something is wrong here, and we are again looking for D.

Act Three: Final


A week later we are offered to phone. Something completely new is being voiced about the fact that the application was decided to be minimized, since their backend supposedly had performance problems, the reason seems somewhat dubious, I still say that I have not observed any problems with the backend, and the application caches everything and it cannot influence him either. But we are offered to pay only a part of the work, although it also turns out that the application has already been given to one corporate client. Frankly, I don’t understand why on earth I should agree to the part when we did everything we promised, never breaking any deadlines, unlike ..., and it would have been okay in January, and this is offered a few days before the scheduled day. payment To which CEO-2 unexpectedly states that the application also has performance problems (what a convenient and universal reason it turns out), although two weeks ago during testing this was never voiced. But that’s not all; they are immediately blamed for the fact that when testing in January, most users couldn’t log in to the application at all. Of course, I recall the reason why it was, but it’s somehow not particularly taken into account. D offers to understand the details of what is implemented, but asks not to go into technical details, it is not very clear how this can be done without going into technical details, but I make a detailed report with what is implemented on items with elapsed time, in addition, I record video as the application works and shows all the functionality, the video is accompanied by the application log, so that requests and responses from the backend are visible.

After a week and a half, we get our report of CEO-2, from which my head hair moved a little, and then my mood dropped - because of what it all happens. I note this is not some kind of misunderstanding, or, funny to think, the technical naivety of the other side, a couple of weeks ago, we completely spoke in a language that was understandable to each other.

I will list the main points:


But in general, these are all the little things that one could try to discuss, but against the background of the following, this does not make sense:


And the culmination:


Items in some strange way multiply, I tried to do it in different ways, but did not get such a result, and it is concluded that we should be happy if they pay 40% for the work. How does D respond to such arguments? - no way - pretended to be a fish.

Well, the final, after it became clear that there was nothing more to find out and prove there, we were already explicitly stated that what we agreed with before was only our problems, but what we wrote in JIRA and some statuses there too, in general, do not care, as the development of the application is minimized.

To admit I the first time I face similar rudeness in IT. I was ready to prove my case and even admit that I was wrong if I pointed it out, but what I didn’t expect from a company that positions itself as a product for professional managers and even had a blog on Habré is just a fool.

Epilogue


It has been a decent time, I decided to ask the backend whether they know about their performance problems, it turns out not - they didn’t tell them anything. I decided to ask those involved in the iOS application, and here, it seems, there is a similar drain, but the application is already running: all they are doing at the moment is changing the colors of the shadows and the minimum password length from 6 to 8 characters and back, while I They said that there was a payment problem, which requires an urgent release, users are boiling over from this, the app evaluation is going down with a shovel, but it seems that CEO-2 is not going to release fixes. Of course, I shared with them my difficulties, for which I was told that they were not surprised by the current situation, and told a story about which they knew from one former employee:

A long time ago an employee appeared in the company who was not related to the development. But, having worked a little, he decided that the site (as there was nothing else then) needs to be redone as it seems to him correct ( apparently so that everything is “as fast as possible” ), but in the end, it seems he was not able to complete the job and was asked to the exit. However, after several years, which we have already witnessed, after the change of directors, he again appeared in the composition and continues to actively try to introduce his own, unfinished site. And since the site, apparently, does not even have a primitive API for working with applications, and the noodles about its readiness are already hung on the ears to the new management, these applications also interfere with the implementation plan, and you need an excuse to get rid of them and remake already under the new site.

In general, the mosaic has developed, one thing is not clear - and here is my payment. So here on the delivery I decided to describe this incident. Maybe someone just have fun, and someone will help to be more vigilant ( new future application developers under android probably :) ), well, and probably just wanted to speak and put an end to this story.

PS:
If I’m ready, I’ll try to write a technical article about React-Native, because I don’t want to take out the same yellowness at all.

Source: https://habr.com/ru/post/412785/


All Articles