This article is to share in the software development process, personally experienced "strange phenomenon." Why say strange, people more powerful, seems to be in line with common sense, but often in the process of software projects will appear more people, less, the workload of the situation, which is different from our previous cognition.
First, explain the meaning of the next heading. People, refers to the same project team, the same group or the same department within the scope of the matter is less, refers to the effect, the real output is small, heavy workload, refers to the long working hours, busy work, the actual investment.
In fact, people do a lot less work, white is inefficient, and the impact of efficiency, the reasons for tens of thousands of kinds, there are personnel problems, communication problems, process problems, management issues, technical issues, the following scattered to list the Bo master personally experienced problems:
Article basic plain text, need to idle time, carefully read OH.
First-line staff, do not let professional people do professional things, resulting in low efficiency
Do not let professional people do professional things, is the work of the big bogey, in the industry, has already proved everything, in the factory production, workers running water operation, a person only focus on one thing, will become more skilled, the more do the more quickly, the more efficient.
The Division of software Development is becoming more and more clear today, so that the back-end personnel to rob front-end staff of the rice bowls, to write Web pages, style, high efficiency can? Let the back-end personnel to rob the DBA's job, to do database optimization, efficiency can be high?
Unprofessional people do unprofessional things, it may be related to the company's development process, organizational structure, personnel planning, may also be related to the task arrangement.
The early development of the company, can not afford a lot of professional people, may need more "full stack" engineer, what all a catch; the transition period of the company development, a little money, but also realized that to let someone do professional things, but the personnel have not been recruit, that no way, you also have to do all kinds of things part-time. If the company has money, development is also mature, not belong to the above two stages, in IT organizations, even front-end, back-end, testing, architecture, DBA, network, server operations, technical support, security, products, these functions are not distinguished, will have an impact on productivity. It frontline staff, each pit, need a professional screw.
Developers do not focus on code quality, resulting in late rework, resulting in low efficiency
Sometimes, fast is slow, for inexperienced or bad habits of developers, early development, forced or not aware of their own, in order to pursue progress, logic did not consider thoughtful, do not do self-test, code can run up even if the task completed, the surface of the task completed quickly. But in the late phase of the project, the test stage, the problem of large-scale outbreak, even to rework, due to the late test, from their own code, may be separated for a period of time, some things themselves have forgotten, and then back to re-"familiar", efficiency can not be low? The more serious consequence is that the progress of the project is not controllable. Therefore, even if the progress of the tension, but also to resist the pressure, you must do the most basic test, and then go to the next task point.
The expansion of individual organization, the problem of high communication costs, resulting in low efficiency
The cost of communication is the first problem exposed when people inflate.
To give a simple chestnut, a lot of companies have every morning habit, if a group has 5 people, the morning will report the work, on average a person reported 2 minutes, it takes 10 minutes, now a group to increase to 10 people, a person reported two minutes, it will be 20 minutes to report finished. The time has passed.
Another chestnut, 30 people/day of work, divided to 2 people to do, it may take 15 days, a total of 30 people/day, but to 5 people do, 6 days to complete it?
Information in the process of communication, transmission, may be "distorted", you think, not necessarily can 100% say, you say out, others may not be able to 100% understand, and everyone's understanding ability, knowledge system are not the same, understand easy to produce deviations, the deviation is easy to do wrong things.
Therefore, if the person expands, the project should be the unit, the reasonable separation of the project, personnel split. It is best not to have more than 4 people in charge of the same "small project". When communicating, it is recommended to use Verbal + written + retelling to reduce the distortion of information in the communication process.
Distrust between the subordinates, the obstacles or the duplication of work, resulting in low efficiency
The mutual trust of subordinates is the basis of all work. If the superior does not trust subordinates, do not dare to empower subordinates, usually have to go through their own, and the superior is often a one-to-many relationship, this time, the work bottleneck will appear in the superior body; if superiors do not trust subordinates, make a pile of supervision mechanism, in order to subordinates do not do wrong things, and let others colleagues over again, Costly, and subordinates can not get trust, work is hindered, over time will be afraid of the foot, difficult to independently, or feel that they have the ability to make, simply leave.
Superiors should fully trust subordinates, rest assured authorized to let subordinates to do things, but these are a prerequisite is to have a good software management process, including the development environment and testing team and in the process of completing the task of some coaching and important node control and supervision.
Superiors do not trust subordinates, often encountered, and subordinates do not trust the superiors are also very deadly. Programmers are very personality types of jobs, not good management, often particularly many ideas. As if the wheel into the mire, the superior said the car pushed forward, some people said, pull back, their respective force, estimated that the car will never get rid of the mire, but also talk about the efficiency?
Therefore, if there is an opinion, can be mentioned earlier, but once the solution is fixed, it should be one mind (even if there is a suggestion buried in the bottom of my heart), to the goal to work together.
Gaps and obstacles in communication between different departments
Software development process, in the context of it, different departments inevitably have intersection, such as development and operations, development and testing, the responsibilities of different positions, the knowledge system, the perspective of the problem is often not the same, resulting in the handling of things blocked.
For a chestnut, one time, a developer needs an OPS person to help restart a site in order to verify a problem. For developers, this site, with less people, and restart is also an instant thing, the risk for the basic 0, but because the operation and maintenance personnel grasp the knowledge system is not the same, afraid of restarting will cause great influence, and even afraid of the problem to take responsibility for themselves, obviously can be instantaneous operation to solve the problem, Wait until noon or after midnight when no one dares to restart, the efficiency is so reduced. At this point, you need ops, to learn about the knowledge, or to introduce a new process, such as restarting the site, requiring the verbal consent of a professional to execute immediately.
Therefore, people between different departments should learn from each other, to better communicate, to do things, as far as possible to do lightweight process, standardization.
The superior work arrangement is not in place
Superior work arrangement is not in place, also can lead to low efficiency. Sometimes there is this strange phenomenon, there may be a lot of things did not do, but the following people have nothing to do, or some people are busy, some people are very busy.
Software Development division, not like moving bricks, a person to move a car on the line. Software development, the workload itself is a difficult place, if the project manager did not do the project plan, no work point, task-point splitting of the job is difficult to arrange in place. In particular, just from the programmer transformation of the project manager, process thinking, will not be the overall grasp of the project, the overall planning, where to do the idea of what to do, what to assign what work, the final mess, a will put the following people exhausted, a will let the following people idle dead.
The need to communicate unclear or understand deviations lead to rework
It is difficult to identify the potential needs of the customer, and when the requirements are determined, the media of the information transmission is often a requirement document. Language and text such things, the process of transmission easily distorted, lost the original meaning. This situation is as comparable as possible, and demand delivery spans too many levels to reach the developer at the end. If this structure, each layer of information loss 2% is very bad, done wrong, the efficiency and cost of rework is huge.
Often it is this way of conveying:
What we need is this way:
The final research and development staff, should be accepted after the demand, should be reverse and users, product managers, research and development manager communication, the final can be determined.
The technical architecture is too backward and too complex
Advanced technology architecture, unified and efficient development of standards, is the cornerstone of system construction, will greatly improve the productivity of software, so that developers focus on the realization of business, business logic, to do more valuable, higher output things.
When you are still tangled page compatibility, tangled this interface must fill how to achieve, people through the tool simple configuration, the interface is automatically generated; When you're still tangled in the amount of concurrency, how distributed transactions are implemented, someone else's message mechanism, two-paragraph submission has been used to fly up; When you're still tangled in distributed systems, database splitting , if the crash Library query, others ORM Automatic Library routing, the data distribution mechanism has been used rotten; when it is not clear, the call relationship between the various systems, guess the impact of the single point of change, operation and the pressure is huge, people service governance framework came into being .... All of this relies on advanced software architectures that are readily available or self-developed. All of this can make developers more powerful and more inefficient.
Why software development, more people, less things, but also a lot of work?