How far is the workshop from the factory (1)

zhaozj2021-02-16  52

How far is the workshop from the factory (1)

Smilemac

Workshop and factory

The so-called workshop development method refers to software development that is completely dependent on the experience and preferences of developers. In one organization, the development process of a software and another software may be completely different. This difference is not based on the careful analysis of specific projects, but is based on managers or developers. There is no program, there is no phase of sex, there is no process table, no risk assessment warning mechanism, no ..., maybe there, but shameless, where is it? After each project is completed, it is just a software product, no other, no summary, no process improvement, no source management, no ... This type of horse-wide air development is most prone to implement, but when is done, can you achieve goals, quality can guarantee that it is completely unpredictable and controlled. Unfortunately, most of China's software companies develop software, even if there is an individual implementation of software engineering management, it has passed the identification, but most of them have their shapes without their gods.

The ideal factory (engineering) means that the development process has a planned charter, and the entire development process is based on a basic goal - demand production. Generally divided into several large Phases, first of all, demand acquisition and analysis process, then the comprehensive analysis plan process of target, resources, and other constraints, including the selection of suitable software engineering methods, design reasonable software processes, then implement, Finally, user evaluation and acceptance or release. Several method methods are applied within each Phase to improve efficiency. After each project is finished, the experience of successful and failure, the software process used in the project, and the specific analysis, design, coding, management, documentation, etc., etc. It is convenient for other similar projects to improve efficiency. At the same time, for the source code, especially for reusable source code is also effective. This is a process of repeating, as the organization's accumulation is tired, (like Microsoft's development history), the software process knowledge is constantly improving and accumulating, and the source code is constantly accumulating, this will be the most valuable wealth, in this way "Wealth" is based on development, software development will become faster and faster, and it is the "software self-growth process". The difficulty of implementing this development method is that the talents must pass the key positions, and they cannot seek things in their position. This location is not set, and it will even play a reaction. These positions include management positions. "I believe it" I believe this is also an intention of managing people. In addition to the long-term benefits of the above, this development method can also make the development process can be controlled, and managers can expect the project cycle, quality and risk. This production method does not hinder the play of individual genius. In addition, since the software process is designed for specific projects, this development method does not necessarily cause the development cycle.

As can be seen from the above-mentioned rough description, the distance between the workshop and the factory is mainly determined by talents. What kind of talents have determined that the software engineering in an organization can implement anywhere, which must have a must have one Software engineering experts, because many trivial consulting companies in the implementation don't do all.

2. "Use people to have their own position" and "use people with their strength"

"Use people have its own bit" is a prerequisite for the implementation of factory management. If you don't have the right needs analyst person, don't try to use more complicated stuff in the demand engineering, because it will only give him an increase, so that he has lost watermelon. If you don't have a qualified analysis designer, don't try to use UML and design patterns, the result of use is likely to be wasteful, and over-design. Finally, all personnel use the main energy to learn UML, wait until the encoding, discovering that daily documentation drawings have exhausted everyone's enthusiasm for the project. If your software engineering expert is a dogma, it is over, you should be careful to use him, otherwise your project will be "overwork". Therefore, the main point of implementing plant development is based on the actual planning, what kind of talents, what kind of strength, what kind of strength, the strength of the programming strength, what kind of software process is designed, and what is the degree of engineering management. We said that "people who have their own position" are the foundation of software engineering, and "use people use it" is the goal of software engineering (one). What is "using people with help"? It is the ability to use each person's most expertise. Everyone has a comparative cost with others. If there is another person in the same group, everyone is doing a demand as a cow, but he has a lot of things than you, then you must be a programming life, but fly to the user every day. Chat must be your colleague, this is a cost (but this is actually implemented, and it is not possible to achieve the optimization configuration when actually executed). The main goal of software engineering is to make the project to complete the budget on time, but how can it achieve? "Many things that are not far from", you need to make everyone can use their strength.

The choice of software engineering is also related to the company's culture. If the company (including the project group) is a conflictful cultural atmosphere, then you should be careful, it is best not to openly review, and change it to a one-on-one private discuss.

3. Continuous process improvement

The goal of the software project is to produce qualified software products, and another goal is to produce software engineering products. Software engineering is also a product, his form is "process mode", document model, and reuse code base. The two are easy to understand, the key is the process mode, what is the process mode? Each software process has its applicable range and conditions, and also related to the particularities of different companies, can be continuously optimized by each company in practice, forming the company's knowledge assets, which is the foundation that CMM can implement . Every time I develop new projects, the first thing to do is to integrate targets and constraints, then select the mode suitable for different phases in the process mode library, make some modifications, form a software process suitable for this project, and don't consider when choosing This sub-process or this idea is not this process model. As long as it is easy to use, it is used, you have to consider just how to work with other choices. In the big, you use the increment or evil, use XP or a net room (of course, if you don't have enough people enough to use it, just use it, huh). Little aspects, do you want a complete risk early warning mechanism, do not design review, and so on. After each project is finished, summarize the results include verification confirmation and improvement recommendations for patterns to form a document. This is a process of continuously recovery. Of course, if your company is just a small company, it is also very satisfied with a small company, then I suggest that you don't have to happen, choose a development model to use it to use it with a rich experience. I will use him. Anyway, most of the company is a professional company, only one type of product, the person is also relatively small, and there will be one or two cattle people. For example, XP I can see it, and can control the risk, and the user is also a transparent. :), transform it with your company, use it to improve, then use, and improve it. This can also form the company's assets. How far is the workshop and factory, you only need to imagine what is the ideal factory development of your company looks like, then see which talents need it, what kind of company culture, how large software engineering libraries, then look at you Now, you know how far.

4. Excessive engineering hazard

So what is excessive project? If your project can be completed from now on coding in a week, do you need a risk warning? It is generally unnecessary, the shorter the project cycle, the higher the cost of establishing the risk warning system, and the cost of this activity is the time proportion of this activity in this project cycle. When the alarm appears, it has been half a week, but for many dogmists, risk warnings are necessary. For me, this is the excessive process, in a project, doing this project completely unwanted work.

For example, using RUP, whenever I see some people in accordance with RUP steps, I always feel very ridiculous, he may not know that when he just finished physical map, other engineers have I'm completely understanding his design, I don't know if I use Chinese to express my meaning, do you need to express it in English, for many experienced programmers, have an entity map, up to one state The conversion map is enough to start programming. Moreover, if the interface design and relationship of the class expressed by graphics and documents is easier to read than direct use programs, I don't see it. The founder of XP said: Why do you want to write a document? The code is the best document. To a certain extent, I agree with this point of view. One of the trends in modern software engineering development is that it is increasingly acknowledged reality and recognizing the finite rationality of humans. What is the main goal of the project is what is based on quality, according to the budget, and all activities should be carried out around this goal. So, if you have already done a lot of similar projects, you know what kind of development process must be used in such a time, resource constraint, then what kind of development process must be used, then you still need to pass the English written report to prove your thoughts Waiting for the other, it is not more experienced to spend a week for a week. It is the decision you can make for the process of process dogmators, and you need to spend two weeks. There are also review activities, and the review is often some so-called technical authority that is not in your project organization, and they may be technically authoritative, but I don't know anything about your project, how to review? Walking the farm, but it is behind the latter responsibility. Whether a activity should be retained or how should it be performed, it is necessary to contribute to the project objectives as a guideline. But unfortunately, do not see most of the overall lack of engineering planning, but the excessive project of this partial activity is everywhere.

So is it harmful to excessive project? harmful! The software engineering tells how many ways to control the engineering methods of risks, but did not speak how to maintain programmers' enthusiasm and work passion. Software development speaks thousands of speakers, causing the programmer's creative activities, can you hear that the excellent software does not rely on the extraordinary labor of some programmers to work overtime? A team, the most important thing is always the enthusiasm of programmers, which is also one of all engineering methods, and is one of the topics of all project management art.

Therefore, the degree of practice of software engineering is enough for projects. So how many is enough? This should consider how much failure is to bear. In other words, what is the level of control of the risk. Are you ready to run for your project? If you run, how fast is going to run? I think that all software development, all project management, moving with its kindly, farten, far less than a balance in a controlled run, which will be more easier.

Most software engineering methods are to know what happened in advance really, but there is no free lunch in the world, anything has a price, for this "knowing in advance", what we need to pay is possible Excessive project and the side effects thereof. Therefore, risk control can not be restricted, need to be trade-off.

There are also many engineering methods, such as the documentation is to communicate, but if you only have you and test engineers in a project group, do you need to use the "BUG Report -> Modified Opinion -> Review -> Reverse Report" method confirmation? Unfortunately, such an example in some software companies, even foreign companies, in truly.

And many programmers believe that software engineering is too virtual is precisely because of this. A lot of methods in the software engineering book, but did not let you do every link, you don't want to focus on it! You can use it as a textbook, you can use it as a technical dictionary, but you can't do it as a manual! The current RUP application has this trend, for RUP and RUP, "Specification" for "specification". Everything is all, the only thing is not a goal. 5. Misunderstanding of "Intoction"

Traditional large-scale industrial production is made of manufacturing products that are in accordance with established process pipelines. The ideal of the initial software engineering is probably close to this direction. But the problem is whether the software can produce large-scale production according to the pipeline? If you think that the Great Wall cannot be manufactured in batches, the pyramid cannot be produced by large-scale, then the software cannot be developed by the pipeline.

For software development, any two projects will not be exactly the same, not exactly the same function set, not exactly the same non-functional target, different time resource constraints, different corporate culture, different users, and new technologies. , New development tools, etc., all of which have made uncertainty for software development. Why software development is to be carried out in a project, because the project works in the workplace is designed for work with uniqueness and uncertainty.

But now many software organizations have developed the "project" sheep head, selling "pipeline" dog meat. In thinking that the flow is over everything, thinking that as long as the RUP or other similar procedure is step down step, it will definitely get a qualified product. Yes, if it is measured by the product's functionality, it is indeed possible, but don't forget, the project goals are a three-dimensional vector, time, budget. (In the later chapter, the importance of the software and the importance of the software and the development speed are important. Compared to the uncertainty of the marginal income of the software product, it is possible to become the least important. One ring.). If it is said from the statistical sense, it will be repeated in accordance with RUP or other similar software engineering methods, and the schedule will be out of control.

why? Fundamentally, project management is actually risk management, and the process of project management is basically based on risk control form. For software development, most of the risk alerts will only appear when encoding and testing. That is, the later the coding starts, the later the time of the risk alert appears. What does the risk alert appear? It means that you do useless in the design phase, meaning that you are wasteful, mean that your project is over-time. So this may be that XP is a warm discussion, why there will be incremental development, evolutionary development, etc., as far as possible, the method of coding the start time in advance.

What is the limited rationality of human beings? It is that people have known that smoking is harmful, but still want to smoke. For programmers, there is nothing more important than to see the program in the morning, and there is nothing more important than getting a two sentences that gets the same. Although he knows that these praises will not bring him Safer, it will not bring girlfriends to him, but he will still go to the next day to make the program as soon as possible. For them, with UML, Visio takes the mouse every day to talk to the soldiers in the paper, there is no direct use of the program to express their ideas more interesting. This is the passion of programmers, which is also the fundamental guarantee of software projects.

The design and coding is completely separated, both stupid and ridiculous, more, and the designers and codents are also cut off, and they are done by two groups. And this is now the result of the new Tang Dynasty in China from West Tian India, the software blue collar, a interesting word. I remember that when I talked about "knowledge workers" and a colleague who worked in the market, he said, in fact, the knowledge worker is also a worker. Oh, this is the case, what is the husband. I don't know India, I don't dare to say three four four, but I intuitively believe that the characteristics of the Chinese software industry are more like the United States: has a strong domestic market, software type, coverage, small company prosperity, new company has more Wait. In this case, each software development process is actually a process of studying learning learning, and in such a process, the designer is only imagined in the brain how to run, I can't imagine whether this is feasible. . Where is the difference between the factory and the workshop, it is not a strict division of labor. It is a clear process, but refers to the work factory to customize the reasonable software process, and improve it in the practice of another project, accumulate it. Not only improves this software process, but more important is to improve custom methods for choosing appropriate software engineering. Duplicate in higher levels of abstraction, implement processes in higher levels.

转载请注明原文地址:https://www.9cbs.com/read-25234.html

New Post(0)