It is difficult to describe several R&D leaders in the company, because some people can take the position of R&D leader, which does not necessarily mean that their programming and R&D command ability is okayOne day, our boss can't stand it, sometimes a simple project, in principle, may only take a day or two to complete. However, because the logic of our project is not reusable, projects that could have been completed in one or two days often take more than a week or more.
The boss told us, "Starting today, all projects should encapsulate common logic so that the same logic can be reused next time!"”
But several R&D leaders of our company don't seem to listen!
Our company has taken over a project of a factory computer before, this factory has many workshops, and the software interface logic has some differences, but there are commonalities. For example, the operation logic of the main interface, the logic of communication with the data bus, the logic of communication with hardware, and so on.
But when I was designing the interface, I had a disagreement with the R&D leader who was in charge of the project at the time
I think that the software interface of each workshop is different except for the image display part, and the logic of other places is the same, I think the software interface should be designed like this:
Design a main program, and then dynamically load the logic of the display image part in the form of a plug-in, so that the logic of the main interface can be reused!Because we need to distinguish which plug-ins need to be used in each workshop, we can put the plug-ins in a plug-in folder and put the corresponding plug-ins as needed.
However, this design idea was rejected by one of the R&D leaders of our company, who felt that it was too complicated to do dynamic loading, and thought that it was better to write all the interfaces in one project, and then in the project** Write if-else directly,Decide which interfaces to display by judging the workshop type,And the workshop type is configured and read through the configuration file,Not even the way of dynamic loading,He thinks that the logic is common,It doesn't take much effort to rewrite the interface of each workshop,Copy and paste!
Hearing him design the program like this, I was speechless for a while. However, his words finally let me know who is the culprit who is causing the boss a headache!
After I came to the current company, I found that many of our company's projects are judged and displayed through if-else, and the so-called reuse, which is even more exaggerated, is to copy the project that has been written before as a whole, and then add or modify it on the basis of the original **.
This strange way of reusing has led to many ** being the same in many projects, but the interface of some other projects is not deleted in the new project, for fear of deletion problems.
As a result, there are a lot of redundancies in every project, and there will be a lot of waste in them. The main problem is that if there is a problem with some of the "reuse" logic in these projects, then all the projects have to be changed!
Recalling all the discomforts of maintaining my old project, I felt that the advice of the R&D leader was not good, and said a bunch of reasons why it was not recommended to use it this way, such as too redundant, inconvenient to maintain, etc.
Seeing me say this, this R&D leader still wants to use his position authority to pressure me: "I think it's okay, you just do it!".”
So, I said to him: "I dare not say that my idea is the best idea, but the reusability is still very good, if you have to let me follow your idea, I'm sorry, I can't bear this way of writing!."”
In the end, the two of us parted unhappily, but fortunately, the project manager of our company was more valued in his speech, and after weighing it, I decided to use my ideas, but I still offended this R&D leader.
In the end, in the company, I had the impression that the R&D leader was "difficult to communicate", and I expressed this "problem" to others intentionally or unintentionally, which made me very helpless!
Because the R&D leaders of our company are all C++ programmers, and I am a C programmer, sometimes C++ is needed to do the algorithm and C to call.
Before I came to the company, the previous practice was to write a separate program in C++ to do the algorithm, because if C++ wrote a program alone to do the algorithm, it was necessary to integrate a communication module to communicate between C++ and C.
Despite this, even the communication methods are very messy, some use socket communication, some use websocket communication, and some use redis for data caching, so that you can not communicate directly.
I saw that the communication was different for each project, so I asked one of the R&D leaders, "Can't you C++ encapsulate the algorithm part into a dynamic link library?"We can directly call the library to execute the algorithm!After all, there is a time loss for communication!”
The R&D leader listened to it, but after studying for a long time, he found that he couldn't compile the dynamic link library, or after the compilation was successful, C couldn't be called, and finally he was impatient, saying that it was better to use the communication method!
And then I was stunned!
One day, I couldn't help it, so I asked an old project manager in the company how to become a R&D leader at this level
In the end, the project manager said with a wry smile: "This is all followed by the boss when the company was first established, and the initial research and development is gone, only they are left, who do not need them?"”
Roughly speaking, although they may not be technically proficient, they are very familiar with the company's business and are not so unbearable.
In the end, I could only smile helplessly, which is more similar to the situation of many companies.
The project manager also said a sentence that completely amused me, he said: "The company also recruited some big bulls before, but after looking at the company's previous projects, I shook my head and left!."”
In the end, I think that since these people understand business, then let them manage the business, and they can also manage project development, but don't get involved in R&D yourself, let alone write ** yourself!
Basically, any programmer who has several years of work experience and has a good style will have a headache when reading all the previous projects in our company.
I don't deny the contribution of some of the company's veteran employees to the company, but it may be these people who will become and these people who will be defeated!