For my friends who are interested in the past, please read the Ten-year summary Series
---
After officially returning to the original position of the company, the development management team formed a three-pronged situation,
Tian, who has more than a decade of work experience, does not know much about specific technologies, is responsible for pure management, and coordinates development and marketing,
Lele, 8-10 years of work experience. In the second half of 03, he led the development of a 2.0-version framework with a Java C/S architecture. He will migrate to Australia by the end of the year,
Lele and I took several developers together to host the development work.
Although multi-headed leadership is not a good thing, it is not a bad thing for me,
Since I have been in Beijing for several years, I have dominated development. In many cases, I do not know whether my decision is correct,
I believe everyone has this kind of feeling. Although I believe it is correct, I still hope it can be confirmed by other means,
This is often said to be "The Stone of his mountains, you can attack the Jade", "Foreign monks will read the scriptures ".
I now think that when someone else needs to prove myself, it is just when I am not mature, but I have to go through this stage to become mature!
In, my course credits are almost the same. Because my major is software engineering, the courses include process improvement, software measurement, algorithm design, and object-oriented design,
At that time, I felt like a person familiar with the secret of martial arts. I was eager to prove the advantages of kung fu through practice,
Tian and Le are more experienced than me. I naturally enjoy learning well.
I have several years of software development experience and have already experienced many problems. I often think about how to organize development more rationally,
My goal is somewhat idealistic. In my opinion:
1. Management should achieve "nothing but governance". That is to say, the manager's energy should not be managed. Instead, the manager should look at the results and the future.
2. The software development process should be visible and controllable.
3. The results of software development are predictable.
All the management courses I have learned are vowed to ensure that the standard process can meet my requirements (except for the first one ),
So when Lele proposed that the development team should adopt the RUP, I responded positively and expressed strong support.
As a result, we cut documents, installed Rational Rose, recruited testers and configuration managers, and formulated version management specifications.
During this period, I also read many related books, such as man-month myth, IT project management, and UML.
However, the problem quickly emerged.
In small companies, although we are a product R & D team, we cannot completely isolate them from projects. The versions we release cannot be stable, like Windows and Office, out of the box,
Under the role of the process, the implementers complain that the response to the problem is too slow (because everyone is used to looking for development directly if there is a problem, now we need to review, modify the document, and then release the code ),
The user's "urgent" requirements are arranged for the next version, but the market uses the boss to change our version release plan and insert more urgent requirements.
Due to the implementation of regulations, the development and implementation + market have a certain degree of opposition (I do not know whether this is a special case of our company or a general situation ),
Because customers in Chinese companies are always in a hurry and there is a lot of pressure on the market, when the conflict is intensifying, Tian calls us to a meeting with the person in charge of the market and implementation,
The results of the discussion are often as follows:
1. To solve this problem, we need to further "optimize the process" and hope that the process can solve the problem.
2. We are not strong enough in development, and we need to add new talents (but the company's strength is limited)
3. Implementation guarantees that the current situation is facing a special situation. The development compromises temporarily to solve the problem as soon as possible (there are always enough "special" reasons for a project)
4. Either there is no conclusion, and the problem persists (in fact, it is a compromise on implementation)
During Repeated frictions, although Lele has always insisted on his "RUP" and attributed many problems to "insufficient Process Optimization" and "insufficient personnel,
I am wondering and reflecting on it.
What kind of development process is reasonable in a small company?
Is the path to productization available in small companies?
How many small companies can afford the more thorough the implementation of RUP and the greater the management consumption?
Just as I was so depressed, I heard the word "XP.
At the end of the first semester of, I went back to the school to report my graduation thesis to my tutor,
She mentioned her recent participation in an international conference where someone explained the emerging idea of software development abroad: Extreme Programming (XP ).
I feel deeply touched by the fast delivery capability and huge code Quality Improvement depicted by the teacher by XP, but I am confident that I will doubt it.
When I got home, I immediately went online to search for related information and read XP best practices,
From XP, I found agile modeling and agile thinking, and learned the names of some masters.
These advanced ideas gave me the feeling that "Lin's sister fell down in the sky, like a light cloud, just came out of the dark,
I vaguely felt that what I sought was embedded in the ideas of these masters.
After preliminary analysis, I think XP is too radical for the development team, and the "agile" principle is more valuable,
So I did not hesitate to buy several books written by masters, including:
Agile modeling and test-driven development.
After reading these books as quickly as possible (you need to know that the problem-solving learning is too different from the objective-less pure learning ),
At a team meeting, I proposed the idea of making the development team agile.
After I introduced XP and agile core ideas, Lele said that he did not believe this would work, while Tian did not believe it was necessary to confirm that,
As a result, I suggest you share the relevant materials for study and then hold a meeting to discuss the matter.
After learning, I doubt if some developers really care about these things,
At the subsequent meeting, I discussed agile and which of the following is more suitable for us, just like Zhuge likes.
After a hard debate (this is much harder than my thesis), we finally reached an agreement to test the "agile" Development Method in the development team.
In practice, agile modeling or XP programming is far less simple than imagined. In my experience, the success or failure of agile depends on the following points:
1. Members' cognition and recognition of this idea
2. High levels of participants
3. To prevent XP from becoming liberal
Although our team's "agility" has not achieved the "claim" effect, it has played a significant role in improving the code quality and improving the team's response speed,
Therefore, in the days to come, RUP will not be mentioned any more.
In the next few years, I have experienced several companies with CMM qualifications, but I found that "qualifications are from the company, not from the team ",
That is to say, although the company has been certified, the style of the team is more dependent on the leadership of the team when developing.
In the actual software project management process, I gradually formed the following belief:
1. It is better to leave provisions that cannot be implemented.
2. Code quality should be the first goal of developers when everything is possible.
The transition from focusing on methods to focusing on results (code quality) is a task in the second half.
---
I do not deny the great significance of RUP, but in my current experience, not every company is suitable, at least a project-based company is not suitable.
However, agility or XP also have a high implementation threshold, so implementation is not easy.
However, for individuals, improving the quality of their submitted items (whether code or documents) is an important measure to manage their brands.
I have also discussed the issue of reading and not reading research. The school's courses are not of no value, but if we do not consider diploma, we can learn the same thing if we do not go to school,
However, a school is a place where thoughts are converged. With your mentor and classmates, you can discover valuable knowledge or opportunities, which is hard to achieve.
Just like I have access to XP.
Do not use processes or systems as an excuse to shirk responsibility at work.
I think that when I first started to get started with XP, I had more thoughts than I do now (maybe I used to feel more extreme). Today I have seen words such as RUP for XP, I feel a little sad,
The idea of "engineering" software development and management, represented by RUP, is very important to compare software development with architectural development, hoping to build software like building a house.
However, the biggest difference between building a house and building software is that the measurement of software quality is much more complex than that of building quality.
The traditional software engineering idea is to stabilize the demand and ensure the results through the process of attention,
The agile camp, represented by XP, focuses on the developers who participate in the development and the quality of submissions, emphasizes communication and collaboration, and advocates embracing changes.
I personally think it is really difficult to integrate the two.
Many people say that I write too slowly, and I write too little in each article.
Oh, no way. I have my family, I have a job,
I write something in my spare time. every article of mine usually takes 2-3 nights. Can you tell me that I often post a post in the early morning?
I want to recall, I want to make a choice, I also need to pay attention to the smoothness of the text, the most important, I also want to think about and summarize from it.
I cannot write all my energy into this series. I have to capture the inspiration of my thoughts at any time, because my current topic in my life is "thinking ".
This is not about writing novels.