If the paper is original articles, reprint please indicate the original source This article blog: https://blog.csdn.net/qq21497936/article/details/116087039

The development technology set (including Qt practical technology, Raspberry Pi, 3D, OpenCV, OpenGL, FFmpeg, OSG, SCM, hard and soft combination, etc.) in the continuous update… (Click the portal)

Others (programming related)


preface

Engaged in the IT industry for many years, I have grown from a small soldier to a large team Leader all the way. I am quite clear about the whole system of research and development. In fact, a key point of research and development cost control that most people have experienced but all ignore is the difference between project level and product level in the process of research and development.


Market fundamentals

With the rapid development of IT industry today, IT companies can be broadly divided into two categories:

  • One category is software and hardware development companies: most of them are project companies, such as some international companies, some are outsourcing companies, which are also outsourcing companies. A small number of companies also do some customized development at the product level (usually solutions or shipments under license).
  • One category is the product provider (service company) : with a specific product, continuous iteration, at a specific time, the main body of this category is the product company. At the same time, there is no lack of product companies to do some project customization development.

In fact, the above two are not necessarily so obvious, and will be changed according to the needs of market development. Most of the company’s route is to feed the company at the project level, gradually move to the product level, and eventually become a product provider and do some product-related project development, such as a domestic GPU factory. (PS: In fact, the business of a slightly larger company is as complex and diverse as going home for the Spring Festival to deal with the wives and grandmothers, which is only a rough distinction here)


Please first consider the following questions (answers at the end of the article)

  • Think question 1: boss 1 (your boss or party a customer) want to make an instant messaging software, can realize the chat function, file transfer function, can check which people online, can publish the situation and so on, can you do it? How long is the cycle? How much does it cost?
  • Question 2: Boss 2 wants to develop a 3D engine, and hopes to render the given graph with 3D point cloud, so that the demo point cloud can be displayed and the basic functions of 3D scenes can be performed. Is it possible? How long is the cycle? How much does it cost?
  • Question 3: Boss 3 wants to make a whiteboard software and wants to have the basic functions of a big factory’s whiteboard. Can he do it? How long is the cycle? How much does it cost?
  • Question 4: Boss 4 wants to build an Internet of Things server platform to realize MQTT communication, just look at it from the front end, can you do it? How long is the cycle? How much does it cost?
  • Question 5: Boss 5 wants to build a data processing platform to realize the given data processing of hundreds of files and achieve the function. Can it be done? How long is the cycle? How much does it cost? (With the above questions in mind, read on.)


The key point

What are the differences between products and projects, most people face this problem is relatively vague, or even simply think that there is no difference between the two, are just program development. But that’s not the case. There’s a fundamental difference between making a product and making a project.


Different emphasis

Project focus: time and basic function

Projects focus on time-driven, because time is the cost, to compress the cost to compress the time, and strive to operate agile, easy to use, friendly in the function, if the project time is tight, at least to ensure that each function can be basically used, the main process does not appear bugs, if there are functional bugs will be fixed. Do the project is based on the needs of customers, customized development in accordance with the agreed needs of customers, unclear needs to communicate with customers in the first time, not within the communication will exist in the late quarrel phenomenon.

Product focus: time, basic functions, experience optimization, scheme optimization, code optimization and requirements iterative upgrade

Product development focuses on functional experience, and the time for product development is relatively sufficient. Proproject-based management and control mode with product-oriented thinking can be adopted in the early stage. After meeting the requirements of the project, non-functional bugs can be continuously iterated and optimized to repair and optimize. (In terms of team management, it can be called the project-level DEMO stage, namely, the first stage) The principle is to develop competitive and popular products with relatively good experience, simple operation and beautiful interface, which is the result of multiple efforts, and the cycle usually starts from half a year. (In terms of team management, it can be called the product-level DEMO stage, namely the second stage. The period of this stage is 0.5~3 times longer than that of the project-level DEMO stage.) To develop a product is to develop a set of software or a product in order to meet a certain application market, which has higher requirements for product performance and rapid iteration and expansion. Product requirements are not as clear as software projects, and there is a situation of later iteration and upgrading according to requirements. (In terms of team management, it can be called the product iteration and upgrade stage, namely the third stage)


Architecture and code quality requirements

Quality requirements of the project

The first criterion for the project is the needs of customers. The developers of the project need to customize the development according to the needs of customers. Moreover, the project needs to ensure that the functions are suitable for the current customers’ usage habits, with stable performance and no functional bugs in the main functional process. The quality of the project is more focused on the specific needs of a certain customer, to ensure that the delivered software project program can be run, maintained, and achieve basic functions. In short, the project code how convenient, generally do not consider the coupling degree, code specification issues, research and development as soon as possible to complete the corresponding tasks, of course, good technology even if the project will also have a unified code specification and low coupling degree.

Product quality requirements

Product quality requirements are more focused on a particular application scenario in the field of industry, in addition to main function process, optimize the other details such as experience, optimize the code, the start will be a basic framework of the overall, including coding style, module partition, etc., at the same time have good readability, maintainability, and continues to develop, So that its matching application is more extensive, and the requirements of product logic, code operation and maintenance are higher. The performance of the product must be continuously optimized, because the product must be more usable and agile than similar products in order to enhance its competitiveness. Moreover, the product is a process of constant improvement and upgrading, which has higher requirements on the framework and maintainability of the code. To put it simply, the code of the product takes into account both the later development and the overall architecture, the unified code specification of each developer, good readability and so on, and the code is also relatively robust and logical.


time

Time investment in the project:

The time commitment to a project is generally assessed according to the needs of the project. Usually, it is a cycle of project start-up, requirement investigation, functional design, business development, test operation, acceptance and delivery. The project has clear time constraints, and each node needs to be clear when it starts and when it ends. Usually, the acceptance sheet of the project is taken as the sub-item milestone and the overall acceptance sheet as the delivery proof of the project.

Time investment of the product:

The time to make a product is relatively long, and the product usually pays more attention to the planning, development, promotion and maintenance of the whole product. Generally speaking, the start time can be defined but the real end time cannot be defined, because the product is always in the process of iteration and improvement, and maintenance, optimization and upgrade are usually distinguished through different product versions. It can be divided into three stages:

  • Project Demo Phase: Consideration of architecture and so on will take longer than pure project
  • Production Demo Stage: Start with first release stability, experience, various non-feature bugs and minor optimizations based on previous features
  • Product optimization iteration demand upgrade stage: various optimization of existing functions, such as player codec performance optimization, such as the delay of 500ms originally used to be upgraded to 400ms. The seemingly small optimization often takes longer than the development cycle of its Demo function.


Analyze the question before the text

Think about question 1

Boss 1 (your boss or party a customer) want to do an instant messaging software, can achieve the chat function, file transfer function, can see which people online, can publish the situation and so on, can you do it? How long is the cycle? How much does it cost? This problem needs to be further communicated in detail, to achieve the specific function points of the communication software, to list in some form, and to list the similar functions of several similar products, and to confirm the specific degree of their functions. In order to further clarify whether it is feasible, cycle, cost, etc., several common situations are listed as follows: – Situation 1: Boss 1 requires timely communication to meet the basic requirements, people are relatively easy to talk to, internal use of the company, can basically chat to achieve the basic functions, to complete the acceptance. – Case 2: Boss 1’s requirement for timely communication is to meet the requirements of flying Q and realize the basic requirements. It requires 200 people to communicate in online group chat at the same time. Besides, emoji text, GIF and file transfer need to reach 10MB/S without affecting the chat, which is basically difficult to accept. – Situation 3: Boss 1 found that QQ can do multiple group chats and multiplayer online after using it, why can’t you do this? QQ can do screen interaction and voice at the same time, which are all basic functions. The basic functions mentioned above include these, which cannot be accepted at all. – Other cases: List only three cases where the relative results were good, medium, or bad (questions follow). Above the first kind of situation is generally happy cooperation, 2 is more intractable, 3 is generally parted in displeasure finally, one party suffers a loss or may see on the court.

Think about problem 2

Boss 2 wants to do a 3D engine development, and hopes to render the given graph with 3D point cloud, so that the demo point cloud can be displayed and the basic 3D scene functions can be performed. Is it possible to do this? How long is the cycle? How much does it cost? – Case 1: Boss 2 requires the engine to print the point cloud it gives to the display effect, and then use the point cloud to evaluate and complete the acceptance. – Situation 2: Boss 2 requires the engine to be able to make the point cloud it gives to the display effect. In further testing, it is found that tens of millions of point clouds load slowly and hundreds of millions of point cloud surface render lag. Further discussion on the feasible solution depends on whether the situation is accepted or not. – Situation 3: Boss after 2 required engine, able to give, the effect of the point cloud to show further tests, found that tens of millions of point cloud load slow, hundreds of millions of point cloud surface rendering caton, point cloud rendering BuKa original requirement, take the industry a good software, such as use opengl display only BuKa, why use of the existing open source engine card, The point cloud before the project gives thousands or tens of thousands of point clouds, and the assessment is naturally different, including the cost, which is impossible to accept at all.

Think about problem 3

Boss 3 wants to make a whiteboard software and wants to have the basic functions of a big factory’s whiteboard. Can you do it? How long is the cycle? How much does it cost? – Situation 1: standard the whiteboard and basic functions of a large factory in the early stage, according to the project evaluation cost cycle, and meet the basic functional requirements in the later stage and complete the acceptance. – Case 2: At the early stage, the basic functions of the white board of a large factory were marked. According to the cost cycle of the project evaluation, during the acceptance, for example, the white board of a certain factory was written smoothly and naturally, and four 4K videos could be played simultaneously, and various drawing operations could be carried out with various resources. Boss 3 still understood and discussed everything to see whether the situation was accepted or not. Early – case 3: a giant in the whiteboard, basic functions, in accordance with the project cycle assessment fees, acceptance, such as so-and-so whiteboard comparisons and creamy natural, can play four 4 k video at the same time, can be all kinds of drawing operation with all kinds of resources, this can’t acceptance, talking about the project, do is product, cannot check and accept.

Think about question 4

Boss 4 wants to build an Internet of Things server platform to realize MQTT communication, just look at it from the front end, can you do it? How long is the cycle? How much does it cost? – Case 1: in the early stage, a single sensor can be achieved, and MQTT itself can support thousands of them to achieve basic functions. Whether MQTT can support them is not within the scope of responsibility, and acceptance is completed in accordance with the cost cycle of project evaluation. – Situation 2: Early to talk about a single sensor, can be implemented to achieve the basic functions, in accordance with the project cycle assessment fees, subsequent said MQTT can carry tens of thousands of, single real cannot bear, sip is said before about this plan will work, is your code, otherwise the plan won’t work, project meaningless, not pay, this dog blood plot, only has the basic function of money, Also let the bear server, basic acceptance “. – Situation 3: Early to talk about a single sensor, can be implemented to achieve the basic functions, in accordance with the project cycle assessment fees, subsequent said MQTT can carry tens of thousands of, single real cannot bear, sip is said before about this plan will work, is your code, otherwise the plan won’t work, project nonsense, don’t pay, at the same time, offer other options, Ask Party B to write an interactive server that can support tens of thousands of people online at the same time. This kind of story is real. Only charge for the basic functions (several thousand), but also ask Party B to bear the consequences of hundreds of thousands of projects that cannot be realized (there are problems in the scheme itself, which must be actively solved), and also accuse Party B, basically unable to accept.

Think about question 5

Boss 5 wants to build a data processing platform to achieve the given data processing of hundreds of files to achieve the function, is it possible to do it? How long is the cycle? How much does it cost? – Situation 1: In the early stage, the processed data will be taken as the theoretical basis. After the function is basically satisfied, the acceptance will be completed. – Scenario 2: In the early stage, I took the processed data as the theoretical basis to complete the function, and went back to test with tens of thousands of data, but found that it could not be carried out. The communication between the two sides made it impossible to optimize the big data for the basic money, and it depends on the acceptance. – Situation 3: In the early stage, I took the processed data as the theoretical basis to complete the function. I went back to test with tens of thousands of data, but found that it could not be carried. Therefore, I said that it did not meet the requirements and could not be accepted until it met the requirements.


Proposed solution: The critical communication phase of requirements assessment

Requirement assessment phase, as detailed as possible to the function, explain in advance, actively cooperate

Many things seem simple, with many single functions and long pure workload. As a result, the estimated cost of the original simple things is too much lower than the actual cost, resulting in a loss. How can the enterprise do a good job at a loss? For example, the calculator of Windows is not simple to use, but please carefully check his functions, found that the calculator of Windows is not simple, completely copy a not ten days half a month can not do, and to achieve its optimization degree, but also to pay ten days half a month, do not believe you try yourself. For example, Windows drawing, Windows drawing seems simple, but please carefully check its filling function, filling function is based on the algorithm to do, rather than simply draw. Therefore, the function should understand the specific function points, and communicate well with Party A about the vague function points. The possible situation should be reached by both sides, so as to be beneficial to both sides as far as possible. It is not important to lose or win, but it is important that you are right for me, so that the business can be long.

Requirement assessment phase, as detailed as possible performance, in advance, actively cooperate

Many things seem simple, for example, in theory MQTT can carry tens of thousands of points, Qchart can carry tens of thousands of points, and Nigix server can carry hundreds of people and media delay within 500ms. All these are theoretical. There is a big gap between practice and theory, and some are indeed in line with the theory. Nigix streaming media, for example, in the local area network (LAN) can reach 500 ms, but in many terminal, then the delay will gradually increase, such as on the public network, the delay is more than 3000 ms, please don’t doubt, the author deeply studied a certain for, dispatch, a cow, a structure, a cloud, a certain degree of each of the streaming media server solutions as well as open source, Specific tests have been done, and the official result of the scheme is between 3-10s. In fact, according to the network conditions, sometimes nothing is available, sometimes about 5S, and the RTC service must be used within 500ms. The corresponding delay optimization requires a large number of professionals to carry out various optimizations at each end of the server, codec and player, and even the private protocol. For example, a cloud is based on the second three-year optimization and upgrade of RTC itself, and its delay is lower than that of Dachang. For example, some LAN co-transmission development, the software claimed that the LAN dozens of MB per second, 1 to 60 co-transmission, indeed, can ignore the network conditions, such as wireless, P2P is good, send 120MB file co-transmission, the actual time is nearly 2 hours, including a large factory flying screen, come to test 1 to more is also directly can not see the shadow, Finally, a scheme of RTP + FEC + multicast is developed. 120MB simultaneous file transmission can be completed in 2 minutes. This also has a problem. A few years later, because the peripheral test environment was dismantled and replaced with a new environment (with relatively large interference), it took 5 minutes to complete the transmission.


The latter

I have wanted to write this article for a long time. The above thinking questions are all experienced by the blogger in the past nine years. Especially in the last five years, I have been trying to summarize and sort out my thinking about projects, products and my successful experience in building a team from 0 to 1.


Time is short, this article only represents personal views, do not like spray.


If the paper is original articles, reprint please indicate the original source This article blog: https://blog.csdn.net/qq21497936/article/details/116087039