Talk about software development cooperation

Source: Internet
Author: User

I posted an article on my blog about four years ago.Article-- "More than five years of development experience tell me: Software Development-almost impossible cooperate work", address: http://www.cppblog.com/guogangj/archive/2009/05/14/82909.html

My point is:Software development is highly dependent on mental work, and highly intelligentProgramHowever, "one mountain is hard to accommodate two tigers" and cannot cooperate.Of course, writing this statement out of context alone will certainly be opposed by many people, but if anyone who has carefully read this article, it is estimated that the probability of disagree is much lower. I found a point in this article after I read "software recording" last year (2012), which is exactly what I want to say:

There is only one thing in the world that is more difficult than designing your own software, that is, designing software together by a team.

This is what I want to say!

My experiences over the past few years have also confirmed this point. About three years ago, when I was in my previous company, I had a new project to design a new product, there was a wide range of problems, and there was no specific product definition. There was only a rough idea. The big boss gave me a very short time and asked me to come up with a solution. We also held a meeting several times, but the progress is very slow, especially me. I feel that I am an outsider in this project and cannot be integrated, because in that team, I am the youngest, I have the lowest qualifications in the company, and I think "Where can I get my own speech "? As a result, I am a little absentee, and others are not so motivated. Maybe everyone feels like this. However, a person can't make a picture, and the things they designed may not be accepted at the end, so I was very motivated until I left the company, and there was no final decision on what solution the project was using. This is a typical failure case of designing with a team.

In the days that followed, I worked on some projects and teams. I gradually summarized some rules and gradually understood how to operate a software development team.

I have to say that the battle of one person is still quite effective. If the project is not large and one person can cope with it, it is the most efficient for one person to do it, because there is no need for so much communication, this is equivalent to saving communication costs.

From the very beginning, this person was responsible for the design of the solution. The design of the solution was done by him.The leader only needs to confirm the function points and cannot intervene in the design.Because the intervention will reduce the enthusiasm of the person in charge and lead to a certain "frustration", and gradually feel that this project is not his project, so he began to neglect.

Maybe you will say: What if the owner is not competent enough to write anything that does not meet the requirements? You must still lead a lot of participants. -- I can't,The key to project success is to select the right person first. If you select a person with insufficient ability, it will be useless for the later leaders to "give advice" to him.The leader should learn to release the project and let competent persons take charge of the project. The leader should be responsible for the design of the entire project, there is no difference between a single person and a team, that is: design work is always done by one person, who is the project owner.

Software development is more similar to "Artistic Creation", rather than scientific research. People who have worked in the software industry for many years must be aware of this,Programmers are "artists", not "scientists"My personal professional competence tends to be tested in the form of art + Engineering (my professional competence tends to be divided into six categories: Art, scientific research, engineering, social networking, enterprise, and affairs ), it is also art-oriented. If you think of a software project as a film, the project owner is the film director. So far I have never seen a team act as a movie director, the leader is the investor of the film. The investor looks for the Director to prepare what kind of movie to be made, then the director will execute the film, how to make the specific movie, and how to write it, how to Design scenes and personas is the work of directors. Do you think investors should intervene? What investors need to do is to select the right director. Then they will jump their feet to their desks, take a newspaper in one hand, and hold a cup in one hand, waiting for the benefits of the film.

Just as a movie cannot be completed by a single director, many slightly larger software projects won't be able to work alone. This involves cooperation, what I said on my blog a few years ago is "no cooperation". In fact, it means that design work cannot cooperate, while other aspects require cooperation.

The first thing the project leader needs to do is to plot the framework of a project. This is the overall design (or "Outline Design"), such as determining the platform and database to use, what technical framework is divided ......

Depending on the scale of the project and the maturity of the team, the subsequent work may be somewhat different. If this is a new team with only two or three people, so this person in charge may need to do more detailed work, and he has to write the foundation of the project.CodeStandardized coding may also be responsible for training business and technology to project members. Training seems inefficient. But if you build a team, you will find that the training expenses are worthwhile, of course, I am not saying that you must go to the training classroom, open the projector, and play a PPT. training can take place at any time and provide one-to-one guidance at work, which may be more effective, this requires the "director" to have solid basic skills, be proficient in technology, master the business, be able to cope with leadership, be able to build a team, and adjust the strategy of the project according to the actual situation, solving various problems encountered in the project at any time is indeed difficult to find, but this is the key to a successful project.

That's not to say, we need a "Superman" to take charge of the project? This "Superman" is dedicated to everything, and everything, big and small, must be in place everywhere? Of course not. Just like how powerful a director is, it is impossible to grasp all the details of film production. Even if he has mastered it, there cannot be so much time, the director must know that he is the designer of this movie and that he must give some work to more professional people to do, therefore, with costumes, lighting effects, sound music, actor makeup, martial arts guidance, and computer special effects ...... With the participation of professionals, the Director should have an understanding of these fields and cannot be completely unfamiliar. Otherwise, he will not be able to arrange his work to implement his own design, but he must need the assistance of these professionals, this is cooperation.

To a certain extent, a project needs to be subdivided and divided into several small projects. What remains unchanged is that the same design can only be handed over to one person.

With the development of the team, some of the team members may gradually show their talents in "design, at this time, the project owner can split up some small projects and hand them over for design. This reduces the workload and gives him more time to think about the overall situation, on the other hand, it can stimulate the enthusiasm of the team members and make the project develop in a benign direction.

This is the method of cooperation in software development.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.