Pros and cons of custom development without TK

At the end of last year, an order for small automation came to our company. My boss’s friend, an entrepreneur tired of the abundance of errors due to the human factor, wanted to automate the process of preparing layouts for subsequent machine processing. Layouts were performed in AutoCAD and Photoshop. The task seemed solvable and interesting. The entrepreneur received a positive response. And what came of it, read on.
The most impatient can skip the narrative part and immediately go to the conclusions, for everyone else ... I’ll tell an instructive story.
To begin with, because of the lack of confidence in the fundamental possibility of solving the problem and how to solve it, the customer did not have a clear algorithm for achieving the desired result. Simply put, he wanted the layouts to be cut, preserved, and located on the cutting table. But he did not have criteria that the result meets his requirements. These same requirements did not exist. In fact, all the necessary data was, but passed between the employees by word of mouth and were not documented. The issue was resolved by a large joint Skype meeting with a consistent demonstration of the work of designers in both programs. It was decided to write two separate scripts. One, for exporting geometry geometry data to XML, for AutoCAD on Lisp. The second, for generating a layout template and subsequent slicing, in JavaScript for Photoshop. A work flow chart was created with a description of key points that played the role of TK. It all started so well.
By the way, for writing a script in AutoCAD, a trial version for 30 days was installed. It turned out that it is impossible to buy an auto cad via the Internet and you need to go to an official distributor. Photoshop was purchased with a monthly payment.
Next came the winter holidays, agreeing on the time and cost, prepayment ... In general, any boredom from the point of view of the programmer. But the lack of clear TK already played a role here. More about this later.
In general, when we started directly to work, the trial period of AutoCAD ended. Another attempt was made to buy a subscription to Auto Quarter for the quarter. But she again crashed on physical delivery in a period of 7 to 14 days. This question does not apply to the topic of TK, but I really want to throw a stone in the direction of Autodesk. I had to put the probe of the previous version.
As for the task within the AutoCAD, there was crystal clarity, since the customer’s designer selflessly helped and answered all the questions. Decided how to separate the grain from the chaff (details from the narrative). The code was written in just a couple of hours. Aw, autodesk, and you wanted to make us wait 2 weeks. We were still euphoric about how things were going well.
It came to Photoshop. While the preparatory work was ongoing, a discovery was made that you can write not just a script, but a whole extension. On the one hand, we kind of promised nothing like that. On the other hand, it’s cool to do better than promised. Immediately an unexpected conclusion: if the client has a poor idea of what he will receive, he will not appreciate that he has received more from you. Opportunities were studied on the go, ideas were invented and swept away during layout and programming. Something because of complexity, something because of laziness. There is one more conclusion: if the client has a poor idea of what he will receive, he will not notice that somewhere you gave slack. In our case, this did not concern functionality, but rather design.
After the first release, it turned out that some layouts didn’t want to form normally in Photoshop. After parsing the XML, it turned out that some of the details consist of several unrelated lines. Accordingly, they are perceived by the program as separate parts. If there were TK, we could say that under the conditions at the entrance we have a part limited to one closed polyline. And so I had to agree. As a result, they wrote a method that combines the selected segments into one part. Easy to get off of course. But an hour of programming time and even some time before that were spent searching for the reasons. And if the customer rested and said that the search for the part is our problem and the designer wouldn’t highlight anything ... Here we would go to search the lines, search for intersections, solving T-shaped intersections and sharing one line in two adjacent shapes. In general, they would also decide, but the price would be completely different for us. Hence the conclusion: TK is your best lawyer.
Further more. Despite the fact that the document is formed according to pre-agreed requirements, the customer did not really trust the program. Therefore, he insisted on adding to it a check for compliance of the document with the requirements before cutting. Apparently, he was afraid that the designer could change the parameters of the document during the design process. This, too, was not in the original arrangement. The task seemed trivial, and we decided to meet the client. As a result of some surprises and unhealthy perfectionism, writing a test took 4 hours. Hence the next conclusion: TK will protect you from yourself, well, or at least help to ask for extra money.
The most important and most expensive lesson was learned at the very end, although its roots are at the very beginning. At the stage of formation of the agreement, a document “flew through” the correspondence explaining how the part should be placed on the cutting table. It was accompanied by the phrase "this is for general information, you most likely will not need it." It was “most likely” that it was necessary to pay attention. The document was made in Word and on every new computer it crawled out as it was convenient. It was very difficult to understand what exactly was painted there. In the end, we read the explanation as “you won't need it.” In fact, the essence of this drawing was reduced to the fact that the designer can, at his discretion, arrange the part along one of the faces of the material. And a couple of typical examples. Naturally, all that should not happen must happen. Therefore, the main conclusion: describe in TK the most incredible option and the cost of its solution. Perhaps the customer would prefer to do this manually.
Why am I writing all this? And to the fact that work without TK has both a bunch of minuses and several advantages, the main thing is to be prepared for everything.
Minuses:
- A large degree of uncertainty. If you are accustomed to follow clear instructions, and not come up with solutions on the go - then require a detailed ToR;
- High probability of "extra" work. Invented on the go solution may not like the customer. If you do not have his signature on this decision, then the hours, or even the days of your work, can go to the trash;
- Indefinite dates. After all, new tasks and corrections constantly appear. I hope you even took the advance? Who knows if the project will be able to close;
- Everyone knows the saying "time is money." But time can turn out to be uncertain. And you probably signed up for a specific amount. So you can jump out in the negative;
- Most of us are people who are fond of, including work. Clear TK will save you from excessive zeal;
- The client does not value gifts. Any work beyond what you originally planned to do is taken for granted;
- The client basically underestimates your work. As a result, your objections are perceived as a desire to evade work.
Pros:
- Freedom of decision making. You are not limited by the rigid framework of TK. The more optimal solution found may not be agreed upon;
- Responsibility and initiative. When solving non-trivial problems, a solution may come at the most unexpected moment. If the client is ready to trust you as a specialist and looks only at the final result, then the absence of TK is at your fingertips;
- The absence of TK can justify the increased uncertainty and lay the budget for all sorts of “surprises”. But take care of this in advance, after the start of work it will be too late;
- Formation and verification of TK requires an investment of time and effort before the start of the main work. The absence of TK allows these efforts to be postponed to a later date. True, paying for it with interest;
- The ability to “replay” poorly agreed points in their favor. Especially if your tongue works better than your head.
Of course, the listed "pluses" are a joke. I urge everyone not to repeat our mistakes and always work on a clear and distinct TK. If you want freedom, write it in TK. Write responsibility and initiative there. Better ask for more money for your reputation as a reliable and honest performer, as well as for the compilation of TK. Time and effort spent on the compilation of TK will pay off with health and nerves saved at the stage of completion. Well, I don’t doubt that the heads of the readers of Habr’s are “cooked” perfectly.
Interesting to all projects and competent ones. tasks!