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

Development technology set (including Qt practical technology, raspberry PI, 3D, OpenCV, OpenGL, FFMPEG, OSG, SCM, soft and hard combination, etc.) continue to update… (Click on the portal)

Others (programming related)


preface

Having been engaged in the IT industry for many years, I have grown from a small soldier to a large team Leader. I am quite clear about the whole system of R&D. In fact, most people have experienced IT but have ignored a key point of R&D cost control, which is the difference between project level and product level in the r&d process.


Basic market conditions

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

  • One type is soft and hard development companies: most of them are project-oriented companies, such as some international companies and some outsourcing companies. Most of these companies are outsourcing companies, and a small number of companies also do some product-level customized development (generally solutions or shipment according to the license).
  • One type is product provider (service company) : there is a specific product, continuous iteration, at a specific time, the subject of this type is product company. At the same time, there is no lack of product companies to do some customized project development.

In fact, the above two are not necessarily distinct, and will change according to the needs of market development. Most companies support 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 GPU factory in China. (PS: In fact, the business of a slightly larger company is as complex and diversified as the business of going home for Chinese New Year to deal with the elder siblings, which is only roughly distinguished here.)


Please consider the following questions (answered at the end of the article)

  • Question 1: Boss 1 (your boss or client of Party A) wants to build an instant messaging software, which can realize chat function, file transfer function, check who is online, can publish information, etc., can you do it? How long is the period? How much does it cost?
  • Question 2: Boss 2 wants to do a 3D engine development, and hopes to render 3d point clouds for the pictures given, and show the demo point clouds and basic 3D scene functions. Can we do that? How long is the period? How much does it cost?
  • Thinking problem 3: Boss 3 wants to make a whiteboard software, hope to have the basic functions of a large factory whiteboard, can do it? How long is the period? How much does it cost?
  • Question 4: Boss 4 wants to build an Internet of things server platform to realize MQTT communication. Can we do it from the front end? How long is the period? How much does it cost?
  • Thinking question 5: Boss 5 wants to make a data processing platform, to achieve the given hundreds of file data processing, to achieve the function, can do it? How long is the period? How much does it cost? (Please read on, with the above questions in mind)


The key point

What is the difference between products and projects? Most people are still vague about this problem, and even simply think that there is no difference between the two. They are all program development. But that’s not the case. There’s an essential difference between making a product and a project.


Different emphases

Focus of the project: time and basic functions

In order to reduce the cost, we should compress the time. In terms of functions, we should strive to be agile, easy to use and friendly. If the project is pressed for time, we should at least ensure that every function can be basically used and the main process does not have bugs. The project is based on the needs of customers, and customized development should be carried out according to the agreed needs of customers. If there is no clear demand, we should communicate with customers in the first time, and there will be late wrangle phenomenon if it is not in the communication.

Product focus: time, basic features, experience optimization, solution optimization, code optimization and requirements iteration

Product making focuses on functional experience, and the time for product making is relatively sufficient. In the early stage, the project-based management and control mode with product-oriented thinking can be adopted. After meeting the project requirements, non-functional bugs can be repaired by iterative optimization. (In terms of team management, it can be called the project-level Demo stage, namely the first stage) To develop competitive and popular products as the principle, the function response speed should be relatively good experience, easy operation, beautiful interface, is the result of multiple efforts, and the cycle is usually calculated in half a year. (In terms of team management, it can be called product-level Demo stage, namely the second stage, and the period of this stage is 0.5~3 times longer than that of project-level Demo stage.) Product development is to develop a software package or a product to meet the needs of a certain application market, with higher requirements for product performance and rapid iterative expansion. The requirements of the product are not as clear as the software project, and there is the situation of the later iteration and upgrade according to the 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

Project quality requirements

The first criterion for a project is the customer’s demand. The developer of the project needs to customize the development according to the customer’s demand, and the project needs to ensure that the function is suitable for the current customer’s usage habits, stable performance, and there is no functional bug in the main function process; Project quality is more focused on the specific needs of a customer, to ensure that the delivered software project program can be run, maintenance, to achieve basic functions. In simple terms, the project code how convenient how to, generally do not consider the coupling degree, code specification problem, research and development as soon as possible to complete the corresponding task, of course, good technology even if the project type will 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 product logic, code operation and maintenance of higher requirements. The performance of the product must be continuously optimized, because the product must be better and more agile than similar products in order to enhance competitiveness. Moreover, the product is a process of continuous improvement and upgrading, which has higher requirements on the framework of the code and maintenance. To put it simply, the code of the product both considers the later development and the overall framework, the unified code specification of each developer, good readability and so on, and the code is more robust and logical.


time

Time input of the project:

The time invested in the project is generally evaluated according to the needs of the project. Usually from project initiation, requirements research, functional design, business development, test run, acceptance and delivery for a cycle. Projects have clear time constraints, when to start and when to end, and each node needs to be clear. Usually, the project’s acceptance sheet is used as the milestone of each item and the overall acceptance sheet is used as the proof of delivery of the project.

Product time investment:

The time to make products is relatively long, and products usually pay more attention to the planning, development, promotion and maintenance of the whole product. Generally speaking, the start time can be clearly defined but the real end time can not be clearly defined, because the product is always in the process of iterative improvement, usually through different product versions to distinguish maintenance, optimization, upgrade. It can be divided into three stages:

  • Project Demo phase: Consider architecture waits longer than pure projects
  • Product Demo stage: Start the stability, experience, various non-functional bugs and minor optimizations of the first version based on previous features
  • Product optimization iteration demand upgrade stage: various optimizations were carried out on existing functions, such as player codec performance optimization. For example, the original delay of 500ms was increased to 400ms. The seemingly small optimization often paid longer than the development cycle of Demo functions.


Analyze the questions before the text

Think question 1

Boss 1 (your boss or client of Party A) wants to make an instant messaging software, which can realize chat function, file transfer function, can check who is online, can publish information, etc., can you do it? How long is the period? How much does it cost? This problem requires further communication requirements, specific function points achieved by the communication software, listed in some form, and similar functions of several similar products, specifically confirm the degree to which their functions need to reach. In order to further determine whether it is feasible, cycle, cost, etc., the following lists several common situations: – Case one: boss 1 requires timely communication is to meet the basic requirements, relatively easy to talk, the company’s internal use, can basic chat to achieve basic functions, complete acceptance. – Situation 2: Boss 1 requires timely communication to meet the requirements of Flying Q and achieve the basic requirements. To reach 200 people online group chat and communication at the same time, emojis, GIF and file transfer need to reach 10MB/S, while not affecting the chat, so it is basically difficult to accept. – Situation 3: Boss 1 found after using QQ, QQ can do multiple group chat online, why not you, QQ can do screen interaction at the same time, voice, these are basic functions, the basic functions mentioned before include these, cannot be accepted at all. – Other situations: List only three situations in which the relative results were good, medium, or poor (all questions later). Above the first kind of circumstance is general cooperation is happy, 2 more thorny, 3 finally general is disagreeable, one party suffers a loss or may see on the court.

Question 2

Boss 2 wants to do a 3D engine development, and hopes to render 3d point clouds for the pictures given, and show the demo point clouds and basic 3D scene functions. Can you do that? How long is the period? How much does it cost? – Situation 1: After boss 2 requests the engine, it can type the point cloud it gives to the display effect, and use the point cloud to evaluate and complete the acceptance. – Case 2: Boss 2 required the engine to hit the point cloud it gave to the display effect. When further testing, it was found that tens of millions of point cloud loading was slow, and hundreds of millions of point cloud surface rendering was stuck. We further discussed the feasible solution and decided whether the situation was accepted. – Case three: 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, Before the project, the evaluation of tens of thousands of point clouds will be different, including the cost, which cannot be accepted at all.

Question 3

Boss 3 want to do a whiteboard software, hope to have a large factory whiteboard basic function, can do? How long is the period? How much does it cost? – Situation 1: Check the white board and basic functions of a large factory in the early stage, meet the basic functional requirements and complete acceptance in the later stage according to the project evaluation cost cycle. – Case 2: The basic functions of the white board of a large factory were checked in the early stage. According to the cost cycle of the project evaluation, during the acceptance inspection, if certain white board was written smoothly and naturally, four 4K videos could be played at the same time, and various drawing operations could be carried out with various resources. Boss 3 still understood the situation and discussed it to see whether the situation could be accepted. 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.

Question 4

Boss 4 wants to build an Internet of things server platform to realize MQTT communication. Can we do it from the front end? How long is the period? How much does it cost? – Situation 1: In the early stage, we can talk about a single sensor, which can be realized. MQTT can support thousands of sensors to achieve basic functions. Whether MQTT can support is not within the scope of responsibility. – Case two: 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 bear the server, the basic acceptance “. – Case three: 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, Let Party B write an interactive server that can support tens of thousands of people online at the same time, this kind of bloody plot is real, only accept the basic function of the money (several thousand), but also let the consequences of hundreds of thousands of projects can not be realized (there are problems in the program itself, not actively solve), but also inform Party B, basically can not accept.

Question 5

Boss 5 wants to make a data processing platform, to achieve the given hundreds of file data processing, to achieve the function, can do it? How long is the period? How much does it cost? – Case I: In the early stage, the processed data shall be taken as the theoretical basis, and the function shall be basically satisfied, and the acceptance shall be completed. – Case 2: In the early stage, the data processed was taken as the theoretical basis to complete the function, and the test was carried out with tens of thousands of thousands of data, but it was found that it could not bear the load. The communication between the two sides was basic money, and it was impossible to optimize the big data. – Case 3: In the early stage, the processed data was taken as the theoretical basis, the function was completed, the test was carried out with tens of thousands of data, and it was found that it could not bear the load, so it was said that the requirements had not been met before the acceptance, and basically it could not be accepted.


Suggested solution: The most critical phase of needs assessment communication

Requirements assessment stage, as detailed as possible to the function, explain in advance, actively cooperate

Many things look simple, with many single functions and long pure workload. As a result, the estimated cost of the simple things is lower than the actual pay too much, resulting in loss. How can the enterprise lose money? For example, the calculator of Windows is not simple to use, but please look at his function carefully, found that the calculator of Windows is not simple, completely copy a no ten days and half a month can not do, and reach the optimization degree, and pay ten days and half a month, do not believe you try yourself. For example, Windows drawing, Windows drawing seems simple, but please take a careful look at its filling function, filling function is based on algorithms to do, rather than simply drawing. Therefore, the specific function points should be understood, and the vague function points should be communicated well with Party A, and the possible situation should be reached by both sides. It is not important to win or lose, but to keep the business going for a long time.

Requirements assessment stage, as far as possible to refine the performance, explain in advance, actively cooperate

Many things seem simple, such as THEORETICALLY MQTT can carry tens of thousands of points, QChart can carry tens of thousands of points, NIGix server can carry hundreds of stream media delay within 500ms, all of these are theoretical, the gap between the actual and theoretical are mostly quite large, and some cases actually conform to 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, Both of them have done specific tests, and the result is that the official plan is between 3-10s, but in practice, according to the network situation, sometimes there is nothing, sometimes 5s, within 500ms must use its RTC service. The corresponding delay optimization requires a large number of professionals to optimize the server, codecs and player, and even the private protocol. For example, a cloud is optimized and upgraded based on RTC for three years, and its delay is lower than that of the big factory. For example, some local area network cotransmission development, software known as LAN dozens of MB per second, 1 to 60 cotransmission, can indeed, ignoring network conditions, such as wireless, P2P or good, transmission 120MB file cotransmission, the actual time is nearly 2 hours, including a large factory fly screen, come to test 1 to many is also directly can not see the shadow, Finally, the RTP + FEC + multicast scheme is developed, and the 120MB cotransmission file can be completed in 2 minutes. This also has a problem. Several years later, the peripheral test environment was removed and replaced with a new one (with large interference), so it took 5 minutes to complete the transmission.


The latter

I have been thinking about writing this article for a long time. The above questions are all personally experienced by the blogger over the past nine years. Especially in the last five years, I have been trying to sum up and sort out the 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: blog.csdn.net/qq21497936/…