We have written a lot of letters on the
fence paper on how to manage projects. As much, if not more, of the squiggles are devoted to what success stories came out of it. Nauseous, uninteresting, zadolbalo. Consider the story of one failure, because it is always more interesting and more attractive (apparently, due to the nature of a human being, gloating more than being happy). Let's get started
In the beginning was the desire
Ordinary project. Not simple, but not particularly difficult. In order not to go into the jungle of the fingers, let's call it project 1. With company A. Which is the executor of one important task of company B. Very large, but also specific in its products, and as a result, very loving for its big money to bring a big bag of joy in the form of improvements and approvals on the head of those who worked with her. And there is a representative of company A named B, and there is his boss G. Tuman was let in, sadness was instilled into the reader’s head, one can move on.
Stage 1
What can I say. Quite an interesting stage, interesting because in the open spaces of outsourcing is ordinary in the classic sense. TK is some kind of mishmash of bukavok on some third-party resource, providing something like a flip chat galactic scales, which can be scrolled to infinity, wandering through the intricacies of arrows, dependencies and signatures. A bunch of documents, decorated for some reason in the form of presentations and Excel files, but oh well, we are not used to.
Quickly acquainted with this zoo, I go to the office of company A, to talk to B about what they really want. For 4 hours, a set of interface sketches, the program's logic, is formed, and an understanding emerges that the jumble of multiplications, subtractions, divisions and other brackets in Excel pretends to be the role of calculating a business process. And even there is an understanding of how to do it. Agreements are reached on the implementation, timing, payment - to the battle. After some time, a program appears.
')
Off-season
A simple project gradually begins to complement the autumn. Autumnism is a requirement that appears to the customer during the work on the program. As a rule, it is a given. I have not yet met a single project of more than 120 projects for the development of web, desktop, embedded systems and code for microcontrollers, in which it would clearly correspond to the original TK. If you believe in Martians coming and in three elephants on three whales - then please, you can also blindly believe in a fixed TK. But, as a rule, while working, nuances, ideas emerge, and simply “forgotten” - I, at least, got used to it. But at some of the stages of the development of debugging, I began to realize that they are increasingly affecting the business logic, and began to actively turn off this process. Business logic is the cornerstone of software, and if it is not there, then this problem is akin to a meteorite falling compared to spilled kefir, which is “the first button here”. We agree on the second stage.
Stage 2. The path to collapse
At this stage, B suggests, and I agree that B, being a programmer who wrote software for company A, and then moved to the staff, would write a new business logic in a programming language. On which - it does not matter, it is important - different from mine. Yes, and this, in fact, does not matter if it’s just not brainfack - the languages ​​are about the same, and if you have documented code, it’s quite simple to figure out what the program does, the essence of which is to shortcut user actions. As it turned out, it seemed so to me, excuse the pun. I will not condemn the style of software development. Happens all seen different. I personally read the comments on the firmware engineering of the control unit of one very large automaker, which made me laugh a little, and some of the solutions used in this software were horrified. And nothing - apparently, in the production (since I read it), and travels in millions of cars sold. Another thing is important. Debug code rewritten by the rules, took 4 times longer than planned. There was even a seditious idea to copy the code and make a converter from the data structure into that set of variables, and after the code was tested, convert it back.
Let me go back to the beginning a little. Company A makes a product for B. Very large B. To which they periodically show intermediate results. Why - it is not clear. For after each meeting, I get a bunch of requirements for visual design and the logic of user interaction. With the introduction of new logic in the code that has not yet been worked out. With even more reduced time after each meeting. The flow of deterministic chaos is growing.
As a result, officer B is dismissed by manager G from work, and G takes matters into his own hands. Also controversial. I received the business logic in the form of an as is code. There was a lot of round eyes on the transmission during the transfer - from what I found out that they didn’t give me the trivial software requirements, which were and, most importantly, were not “super_top_secret”. In G - when he delved into the meaning of the business-going logic, which was complicated several orders of magnitude from what was required.
Bida, longing and chagrin.
Total?
I am a great programmer. I give everything on time. Is always. I do not make mistakes. I am writing the perfect code. All customers are livestock and oligophrenic, not knowing how lucky they are.
It seems nothing is forgotten. So it would be necessary to finish this story. If I wanted to cry in the waistcoat. But remember the beginning of the article? Let's take an example of a fakap, not a success story, to sort out what should have been done. We are all strong backward mind, because the banal "it was necessary to write down all the requirements in the TK, sign the contract and sit on the ass exactly after doing the TZ" I will not write. This error is obvious as a day, and it is difficult to call it a mistake - we remember the Martians and the elephants.
Errors
No arrival before the start of the second stage. Remember - on the first one I arrived and we talked about the work. On the second, I did not do this, being sure that this is the same thing, only in profile. As a result, I received a lot of improvements “move it, and add it here”.
Consent to the code instead of the text task. One of the key mistakes, even worse than the first. Oh this is a glorious "I once ...". Everybody has this “sometime”. I also once repaired cars. Even had its own service. And it does not help me a little when, at the service station, they begin to carry frank nonsense. But the quality of our memory is such that we remember the good, and the bad is erased. Yes, I threw cars because I gave all the time to work, and just burned out. Feeling sick. But do I remember that feeling when I feel sick? Nope This is just a set of bukav. Fact. Naked. And that's all. But Bukhalovo in the evenings in the company of children, pokatushki, interesting projects on tuning, funny cases - I write a smile on my face, really. It will take another five years, and maybe I will re-enter the cars. How to know?
“Once upon a time” is very closely associated with pleasant memories. And therefore - it seems simple, funny, interesting. And when the model that he promised to transfer to work, suddenly does not work, when reality pokes your nose at the fact that the code needs to be debugged (which, by the way, was discovered already after the vulnerability of boundary conditions) - then yes, as for this work and no priority. And there is no joy. No. Therefore, the logic was sent to me with a delay of 6 times from the declared.
And I - a lop-eared fool. Perfectly aware of what "I once kodil." Perfectly knowing that this is the worst customer. But, nevertheless, behaved once again.
Consent for revision. Or rather, the lack of their control. When working, I try to carry out no more than 10% of alterations from the original task before the intermediate or final delivery. Here the bill was lost, by me.
Consent to shorten deadlines. "Planning-design-writing-testing". Miracles do not happen. If the terms of the declared are reduced by 2 times, then this leads to their increase by 2 times. Since something is in any case will be omitted, and will only lead to an increase in the resulting term (and not the period when it reports on the "readiness").
That's all for today. I hope the experience will be useful comrades. Goodnight.