These three articles originally published in my own application domain name yishan.cc above, later this domain name was wall.
(originally written in December 2008)
A few weeks ago, I gave every team in the "Modern Software engineering" Class A Chinese version of "Dreaming in code" called "Dream Break Code" and asked to write the book. This book tells the story: a group of very experienced code cattle in the Advanced software development model, under the guidance of no financial pressure, under the leadership of more Daniel, the original plan to spend one to two years to develop a highly anticipated personal information management software (PIM), it took seven decades to complete this initiative, But no one was cheering. I read the English version in September, and then I looked at the Chinese version, and some thoughts are as follows.
1) Drive
What is it that drives programmers and managers and testers into a software project over the ages?
There is a theory that traditional software companies use wages, jobs, performance appraisals and so on to allow a group of people interviewed and trained to work together under a strictly defined process (Cathedral/cathedral mode). In fact, using open source, community, shared mode will be better (market/bazaar mode) perhaps better. As mentioned on page 26th [All page numbers refer to English version]
... It maps an alternate universe for programming in which time are simply less important because the work is cooperative Rather than corporate, the workers was all volunteers, and the motivation was fun and ego, not financial reward. [p26]
The theory sounds good, but I think of two stories:
1) A soap opera in the United States Seinfield in a episode, said a gangster Kramer enthusiastic to join a company, the obligation to work, at first his verbal humor and enthusiasm moved the team, the leadership entrusted to the task, but Kramer simply can't do things well. Finally the leader had to talk to him, Kramer admitted that he could not, he said-but I am obligated to work for you! The leader said, yes, this is the place that makes us embarrassed ... In the project came a "duty to work", supposedly, only help for the project, and others are "obligations", how can you have the nerve to drive others away?
2) I used to participate in a nonprofit organization when I was in Seattle, and members are passionate about serving the community and paying for them. But then some of the members were gradually unable to find, and some things did not. Because everyone is obligated to contribute, you can't ask for someone else.
In the Chandler project, Andy Hertzfeld is such an obligation to contribute to Daniel. But he also encountered the same "volunteer problem" –
They don ' t know whether to count in you or not. And because you ' re not getting paid, there ' s lack of control. [p167]
Later the Hertzfeld also took a pat on the hip to leave, you can work for fun and ego, but if fun and ego are not satisfied, or, that motivation will fall sharply.
2) the responsibility and the drive are closely related, is the responsibility –accountability.
In the hard drive book, which tells the story – due to Windows ' repeated delays, Billg finally told STEVEB – if Windows hadn't come out before the snow this year, you wouldn't have done it here. The book does not tell the details of SteveB back to his team, but the next day an employee carried a sleeping bag into the office.
Many years later, Windows Vista had a long delay, and after another delay, it was discovered that a well-known VP of the Windows team had rolled up and gone.
We looked back on the 7-year delay in the Chandler project, and did the project managers resign? I don't think so. [A lot of people left, but no one was directly responsible for the project extension] since my last delay was nothing to punish, then why must I fight my neck to avoid the next delay?
In the traditional sense of the software company, if the project is postponed, the project will not get the original revenue, delay longer, the staff will have to leave, or the entire company has been dragged down. In the "market", community, shared mode, everyone is the obligation, everyone in the ensemble, we all contribute, but the final project is not directly responsible, then who is directly responsible?
In the way of moving mountains, I have described the following example:
Chiu: I see in "Ball" Internet cafes today Daniel his father in chess, onlookers a lot of ideas, some said on the horse, some said the arch, some said the car. Daniel his father a while Gongfu disorderly, see the situation is not spiritual, onlookers hubbub, old Cui later also can't, had to concede. A go national champion after an important game, he heard the onlookers have a lot of different views on the course, he did not argue too much, but said: "The non-responsible bystanders and the authorities with significant responsibility are naturally not the same." Without the responsibility of the bystanders after the weapon, if not, he can batting an eye to continue to the weapon, even to another game, regardless of who win, no matter who wins, bystanders at any time can safely leave, go home to eat. After a loss or defeat, the most responsible authority is likely to throw in the towel and lose the prize and title of the game. |
I am in Tsinghua University this time "Modern software Engineering" class, I found that some students do not seem to be special input, and later learned that, because the application for school GPA only calculates the first three years of results, the fourth year of the curriculum is not related to the application of the school, so the comparison of "chicken." One classmate said that if this course is in the third semester, then many students will be very care about the score, ranking. Now, as long as it can be done. This may explain the mentality of "spending the least effort on the line" in many projects.
A software team can work out a moving vision/vision, but if you don't understand the various factors that drive the project and the responsibilities that each role is dealing with, vision is just a word.
Time and communication: Time is fair to everyone, as is the case with every software project.
Nearly all software projects require only 1/6 of their time for the writing of code and fully in their schedule for Te Sting and fixing bugs. But it is rare project manager actually planned to allocate developers ' time according to such a breakdown. [P17]
The book cited theorists as saying that the most efficient software team size should be one person, because this will not communicate. As the number of people increases, the complexity of dependencies, the difference between novice and veteran staff, the cost of communication increases with the geometric progression. Here's a prize-winning guess:
How many e-mail conversations are in the team every day when the Windows Development team is developing Windows 2000? A) 90 b) 900 c) 9,000 D ) 90,000 |
For each team member, he or she will not only complete the work at hand, but also report on their progress (via email or other form), answer other people's questions, and understand the progress of others. Everyone's time is limited, how can we ensure that after all the communication/communication, we can have time to complete the "work at hand"?
A colleague from Microsoft told me two days ago that they didn't write any code recently, focused on "planning", and they wrote a lot of PowerPoint and changed a lot of PowerPoint. Then to the VP, General Manger Two rounds of reporting, and then according to the VP of the comments to revise, and then report ... The style of PowerPoint became very professional and fancy, but they still did not complete the planning, into the substantive development phase. Gorgeous PowerPoint every entry, also need to spend a lot of time to write understand, let VP understand, but also to spend a dev/test a lot of time to realize, but vp,pm and Dev/test face the same article, they think the same thing?
External communication
Fortunately for the Chandler project, they did not have so many VP to report (the real Vp–al Gore only had a small face), but I noticed that they had a lot of time to communicate. For example
every day the developers shared a chat guest via Internet Relay chat (IRC) [p139]
1 internal and 4 external email list set up.
Blogs, wiki ' s ...
These are all time-taking! I see the team members also have to reply to the various problems of amateur lovers (such as asking why they do not use such a framework, etc.), of course, this transparency also satisfies a lot of people's curiosity, open source, the advantages of the community ... On the other hand, project managers find that they have no time to complete a large number of tasks. Like the first chapter of doomed's opening, it says:
John is doomed, he had hours of work scheduled between now and the next release ... [P11]
The rest of the team is not a better place to go. In this case, is it time to continue to participate in various discussions, blogs, to provide transparency (Transparency), to satisfy the curiosity of the masses, or to concentrate on the "things at hand"? I did not see from the book What measures the seasoned managers took at this time. In fact, after the release of the product, there is no evidence that enthusiasts who have made a lot of comments on Irc,email,bbs may not actually download and use the software that you developed based on their opinions. So busy with the communication is why?!
In fact, so much communication and information does not help people to answer one of the most important questions –
What had each programmer accomplished in the past week, and what task is next? [p141]
My story – After Ms Outlook97 was released, there were a lot of comments and expectations on the V1 version online. Many of these users have made strong suggestions at newsgroup BBS, which requires Outlook to support direct reading of Newsgroup/bbs content, which was only available in Outlook Express. The development members of Outlook once thought that the user's requirements were too strong, and if we didn't have this feature, it might be V2 unpopular (several dev has already done an initial release). But after careful analysis, we found that in BBS, the strong speech, is that a few people, because they used BBS, so their demand is particularly strong, and seems to be huge, but the other majority of users are not on the BBS, so there is no chance to express their views. So Outlook decided not to do newsgroup functionality until now.
In-house communication
In addition to external communication, there is internal communication, with the increase of one's experience, there will be a lot of other people to come to you, for big and small things to consult your opinion. However, you also have countless tasks to complete, how to do? Microsoft employees are not unfamiliar with this situation, the Microsoft team allows some people to "Go Dark", they can shut the door to their own work, knock not to accept, do not answer general email, not attend meetings and so on.
It is said that long ago, billg to develop the task of OS/2 API to a cow, the predecessor after accepting the task, and did not open a press conference, set up an email distribution list, or QQ group, but hung A and the following similar brand outside the office door, the door a close, One man went to the development.
Don't disturb, feed the animals in the office
We know that communication is very important, but the software is not in the QQ group to communicate (of course, someone in the QQ group to communicate the software written by others), but some people write a line. This process needs to focus and avoid interruptions. In a "market" style, "shared" in the development of the atmosphere, how can you ensure that closed doors to develop it?
Foresight and Immediate worries
Kapor's team seems to attach great importance to the "vision" that they do not seem to immediate worries – which may be fatal.
They are very concerned about the basic architecture of the software/infrastructure, for example, for storage systems, they present the following requirements: [p103]
- It has-make life easy for the Python programmers
- It has to operate efficiently over a network
- It needs to being able to handle very large individual date items and very large numbers of items
- It has-to-be reliable, using the database "transactions."
- It has-to-support searching and indexing
- [0] User Experience//kapor later added, seemingly irrelevant to a vision.
Later, for data Storage, there are the following ideas: [p109]
- Provide programmers with as revolutionary a data model as users
- Data can live anywhere.
- Data is safe from corruption.
- Data is a quick to get.
- Data can be large.
A very admirable foresight. If a project can achieve 3 of these goals at the same time, it can be practical and attract customers and start making money. But the comrades in the Chandler project are not content with just two or three, and they want to achieve all 5 dreams.
A group of cattle in the "no immediate worries, only foresight" under the conditions of discussion problems, finally can only indecisive. During the discussion that lasted until late into the night, there was a sigh of emotion – "How was this night different from all other nights?"//[p110]
There is no immediate worries, or no responsibility for immediate worries – "It doesn't matter if our goal this month is not done, but our vision must be discussed." Causes the project to fail to converge – one milestone in a project, the uncertainties should be less and fewer, and fewer bugs will be available until the product is released.
Making firm technical Choices was hard at the absence of a settled design, and settling on a design is hard in the Absenc E of a technical roadmap. [p150–151]
Because we do not have immediate worries, so we can continue to wait, design to wait until the technical decision to do, and the choice of technology to wait until the design decision to start. In this way, when we were in the 2005, they came down from the high-foresight cloud and had the first down-to-earth plan:
But for the first time, at least, they could see they had a plan grounded in reality, rooted in estimates ... [p232]
Kapor, after all, was a wise man, and many years later he spoke of the lesson:
We ' ve consistently overinvested in infrastructure and design ... [p342]
Another feature of convergence is that decisions that have been made are carried out and not repeated. In fact, the Chandler team is wavering over many decisions. Architect Hertzfeld returned from his vacation and found that he led other colleagues to fight a summer to get the Document Architecture was thrown aside, the original Kapor decided "We'll have to come back and realign things" [p168]. If you were a hertzfeld in voluntary labor, would you still be able to do it?
Returning to the "vision", I believe that there is almost no suitable solution to meet all the requirements of the "vision", it is difficult to find the "M.F.B. S" solution (the book mentions that Fast|cheap|good can not be combined, this is the MSF time | Resource | Feature three elements of the contradiction). However, there are several schemes, which approach the best from different angles, but have their own unpleasant shortcomings. Can we have the wisdom to choose such a scheme, the immediate worries, foresight all slowly solve?
I am doing an innovation project myself at Microsoft and a few days ago a good developer who joined the project said to me that we had too many database problems designed last year, and that if we had been designing like me, it would have been much better. I'm not a database expert, I can only tell him that if we insisted on being released today, this project might not be today.
In other words, it is because of the imperfections of the early days, but the timely design, that the latter have to be picky about these imperfect luxury opportunities.
Every one of us should be thankful that the designers made the right decisions when using these imperfect software (Windows, Outlook, and even Linux), and where are the projects that stick to the perfect design vision?
"Dream Break Code" Reading-drive, responsibility, communication, foresight