4.7.1 pairing project cases and papers
In the course of modern software engineering teaching, the students have already summarized many experiences. For example:
Conclusion 1 [I]:
That was the key stage of project creation. for a whole day, we sat in front of the computer in the chair and talked about the general coding. Then we realized that pairing really could bring efficiency. Coding for a whole day is easy to get distracted. Fortunately, with pair, I always keep telling me the name of the member variable before I knock on the variable, when data is modified, it helps to check whether there are any missing ones. When variables and function definitions are used to get their names together, I feel a little confused and I changed my role, I also started to point to him. A person coding and a person review can indeed reduce unnecessary errors and vulnerabilities. After the algorithm is implemented, I will perform some simple tests together, after seeing the bug and analyzing it together, I can clearly feel that unlike my previous Personal programming, we can quickly find the initial bug point and propose a comparative modification method. Especially when you see the further implementation of the function, you are very happy. More importantly, you may share this feeling with you.
Conclusion 2 [II]:
So we performed the most critical Pair Programming in the project. We completed the class design and program structure design of the entire project in the machine room using the Compilation Time. Let's analyze the class together, find the attribute, write the method header, start with WG using the keyboard, and then I use it. One obvious benefit is that after writing a statement that you are not sure about, you can immediately share your thoughts with pair. After one afternoon, I felt very fresh, because I finally understood the practice of this project.
There have been a lot of research on Pair Programming in academia and industry. Please read at least two related papers or papers [III].
4.7.2 influence of personality on cooperation
People and people are different. When working with others, you must note that the ways in which each person expresses his or her views are different from the ways in which he or she thinks. Please refer to the online MBTI article [IV], test and share their respective MBTI types, and discuss how different personality types affect cooperation, in each phase of cooperation, how should we deal with [v]?
4.7.3 whether code specifications are required
Consider the following arguments and refute/support the need for code specifications [VI:
- These specifications are all the things produced by the bureaucracy that waste everyone's programming time, affect people's development efficiency, and waste time.
- I am an artist and a craftsman. I have my own specifications and principles.
- Rules cannot force uniformity, and many exceptions should be allowed.
- I am good at coding standards. You can just listen to me.
4.7.4 code review
Xiaofei: Wow, so many cool C ++ functions are not available. So what C ++ do we learn? I have learned operator overload and Polymorphism to meet the test requirements, why not let me use it?
A Chao: We write programs to solve problems, not to "give new words a strong Sorrow". These advanced language features should not be used, but should be used with caution, do not write three or five classes at will, but set one class to focus on whether the problem can be solved in a concise way.
Xiao Fei: I don't know how to write the first line of the program with so many specifications.
A Chao: self-review is also very important-putting the code in front of me as written by other cainiao. You can ask all the questions you ask and what others will ask you. In this way, many problems can be found.
Xiao Fei: If the developers are very powerful, the reviewers will have no effect. Maybe these reviews will all go through?
A Chao: Likewise, it can be inferred that if developers are very powerful, the testers will have no effect, and they will also go through the field and simply deliver them home. Do we dare to do this?
Xiao Fei: These specifications and suggestions are all minor things. Are we going to be a world-class software? Is it so cool to develop these things?
A Chao: First, world-class software may cause world-class problems due to small flaws. For example, we often hear security vulnerabilities and emergency patches. Secondly, software development is a social activity with its laws. One rule is the broken window effect (broken windows theory) [VII] [yeka1] [xz2, should I strictly execute the unit test? The other member saw that this module did not even have a unit test, so he could modify it at will. In this way, the quality of the entire software can be imagined.
[I] See: http://www.cnblogs.com/ustc_msra_ase/archive/2010/11/28/1890424.html
[II] See http://www.cnblogs.com/xinz/archive/2010/11/27/1889978.html
[III] See: http://c2.com/cgi/wiki? Pairprogrammingcasestudy and http://www.thefreelibrary.com/Case+study%3a+using+pair+programming+in+development+of+a+complex+module.-a0246014267 and http://www.cs.utexas.edu/users/mckinley/305j/pair-hcs-2006.pdf
[IV] See: http://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator
[V] also see 10 misunderstandings of introvert: http://blog.jobbole.com/12488/
[VI] See http://www.vaikan.com/the-conventions-we-follow/
Http://www.aqee.net/things-everyone-should-do-code-review/
Http://scientopia.org/blogs/goodmath/2011/07/14/stuff-everyone-should-do-part-2-coding-standards/
[VII] See http://en.wikipedia.org/wiki/Broken_windows_theory
[Yeka1] the previous chapter has provided comments. delete comments here?
[Xz2] Move all