Set the priority from the Joel on software translation projectjump:
Navigation,
Set Search priority
By Joel Spolsky)
Wednesday, October 12,200 5
Belongs to Joel on software,
Http://www.joelonsoftware.com
We have just launched a large service pack to remove a large number of bugs that no one will find (which leads to several new bugs that no one will find ). Now it's time to end fogbugz 4.0 and add some new features to fogbugz 5.0.
Before getting started, we wanted to add many new features so that we could allow 1700 programmers to become a programmer for decades. Unfortunately, we have only three programmers in total, and we hope to ship the products in the next fall. Therefore, we must prioritize these tasks.
Before I start to talk about how to sort new functions, I have to tell you twoShouldn'tMethod used.
Method 1. If the development of a new function only promises to a customer, beep! Your mind should be lit upRed Alert light. If the function is always targeted at a specific customer, it is either a salesperson or a risk that you are putting the product in the consultingware. The consulting software itself is fine; you can easily go in that direction, but it can't make that much money like shrinkwrap software.
The characteristics of the development model such as software package are all needed, and all needs are not. After you finish writing the software and wrap it with a plastic film, the customer will buy it if they want it or not. They won't say that you have to add a feature before they can buy it, nor will they call you to discuss what features they need. Just as you won't call Microsoft and say, "Hello! I love the bahttext function that can be used to spell numbers in Thai excel, but I can only use the English version. If you can add this feature to the English version, I will buy your product .」 If you call Microsoft, you will probably get the following reply:
「 Here is Microsoft. We are very glad to have the opportunity to serve you. If you have a four-digit Promotion Code, press 1. For product technical support, press 2. For bulk authorization or related information, press 3. Press 4 to dial the extension number. To listen again, press the asterisk .」
See? No option is "to discuss the new features required before purchasing Microsoft products, press 5 .」
The world of custom development is unknown. Generally, the customer will tell you what features to develop, and then you ask, "Are you sure you want to do this ?」 Then, the customer will say yes. Then you go back and open a beautiful spec book and confirm with the customer: "Is this what you want ?」. After the customer tells you that it is correct, you need to sign the contract in black and white. No, the specifications are guaranteed by the head of the project. In the end, you will quickly develop the products they sign. The customer will be amazed when they see the finished product, and then you have to take the time remaining this week to study your error and omission insurance (E & O Insurance) is it enough to pay your legal or settlement fee. Or, if your luck is really good, the customer will smile pale, and then put your painstaking efforts in the drawer, no longer use your product or call you back.
When developing software, sometimes you lie to yourself in developing a software package, but in fact you are doing customized development of the consulting software. The following is the development process of the consulting software:
- For a small salary, you can help a shoes company develop software.
- This shoe company now needs a set of shoe shining Software
- So you wrote a set of shoe shining software with VB 3.0. The software also uses JavaScript, Franz lisp, and a FileMaker database that runs on the old Mac tower and uses applescript to connect to the network.
- Since people who have used it say yes, it's nice if you dream of opening a software company of your own, even if Bill Gates can be Larry Ellison.
- Therefore, you have bought shoes Liangliang 1.0 and asked venture capital to raise some money to open a "Shoes Liangliang limited liability company" to start selling shoe shining software.
- Unfortunately, this software does not have a beta tester who can get it up, because it is not clear with applescript and the IP address is written to the source code, therefore, it takes a month for a customer to install a set.
- Again, you have encountered problems in attracting customers. Because the software uses system 7 of the antique Macintosh iici, you can only search for it at the eBay computer Museum. These installation costs make the product expensive, and your investment in venture capital is also getting nervous.
- Venture capital began to put pressure on sales staff.
- At this time, a salesperson finds that a potential customer does not need shoe shining software, but has the need for ironing trousers.
- Because the salesperson's job is to sell things, the eldest brother sold the ironing trousers software to the customer with USD 100,000.
- Now, for this customer only, you have to spend six months developing the ironing trousers module 」.
- Since no other customers will use this module, technically speaking,
- You spent a year funding from venture capital, just to help a trousers company develop programs and get a meager salary; Back to step 1.
So I strongly recommend that you stick to the software package. The reason is that there is no extra cost for each added customer of the software package, so you can sell the same set of products to different customers in essence to earn more benefits. In addition, because the development cost can be transferred to more customers, the price can be further reduced. The price reduction will make everyone suddenly find that your product is more cost-effective, andAttract more customers. From then on, you will live a happy day.
Therefore, if you find that you have added a new feature because you have already agreed to a customer, it means that you are drifting to the consulting software and the island of customized development. This is also a good world for business, but it is not as profitable as ready-made commercial software.
Don't make a mistake. I'm not saying you shouldn't listen to the customer's needs. I actually think that Microsoft should learn Thai for those of us who have not yet joined the global economic circle, and also write a function similar to bahttext for those who sign checks in other currencies. But in fact, if you want to convince yourself that the best way to allocate limited resources is to let several of the largest customersVoteYou can also decide which features to add. However, you will soon find that the functions required by rich major customers are different from those of the general public, therefore, adding the processing of baht does not really help you sell EXCEL to Scottsdale's health spa in Arizona ). In fact, if you really do this, the result is just to let your developers help the sales staff earn a large commission.
If you want to be Bill Gates, you cannot use this trick.
Now I want to start talking about the second one.Shouldn'tThe method used to determine which features to add: Do not just do it because you have. This standard is not high enough. Please refer to the following explanation:
During Fog Creek's first year of operation, I found that blue folders were used up during archiving.
My archive system is like this: Put customer information in the blue folder, put employee information in the light green folder, put the receipt in the red folder, and put other materials in the yellow folder. Now I want to use the blue folder, but there is no more.
So I thought, "What is it! Anyway, I always need to use blue folders. Instead, I can buy a few at Staples .」
Of course, this wastes some time.
When I think back, I find that I have been doing some boring shit for a long time (this is a technical term) because I have to do something better than it is now.
I used this excuse to help the courtyard with weeding, repairing holes on the wall, and organizing msdn CDS (by color, language, and number, what I should do at that time was to write or sell programs. This is the only thing entrepreneurs Really Need To Do.
In other words, I found myself pretending that everything I had to do is equally important. Since these things have to be done sooner or later, the order of doing so does not matter! That's it!
But to be honest, I'm just dragging my feet.
What should I do? Well, in the beginning, you can start from the root Root of the folder with a specific color. There is no difference. You don't need to add a color code to your file.
Well, what about the msdn optical discs? Just copy all the data to the same big box. Like!
More importantly, "importance" is not so clear as black and white, it is better to say that it is a kind of comparison. Different things have different importance. If you want to eat them all, nothing can be done in the end.
Therefore, whenever you want to accomplish something, you must understandCurrentThe most important thing is what to do first. If you do not do this, the task cannot be completed in the shortest time.
I gradually quit my own procrastination. The way to quit is to leave less important things alone. I had a bad-tempered lady from an insurance company who had been entangled in me for two months and asked for some information to update our insurance policy, but until 15th requests, and severely warned us that our insurance was invalid within three days, so I really gave the information to her. I think this is a good thing. I am mature enough to think that keeping the desktop clean is probably your ineffective representation.
This is a shame! (How'sThatFor a mortifying thought !)
So. Do not do the functions derived from the fact that the business accidentally promises to a customer, or do the unimportant or fun functions first because "it is always done at the end of the day.
All in all, go back to the topic selected by the fogbugz 5.0 feature. The following is a preliminary priority method.
First, I took out a 5x8 card, wrote a function on each card, and then called the entire team. In my experience, this method can be used by a team of about 20 people at most. The more different opinions, the better: programmers, designers, people who communicate with customers, businesses, managers, document writers, testers, and even customers.
I asked everyone to bring their desired function list to a meeting. The first phase of the meeting was to quickly browse everyone's functions to ensure that everyone had a very rough understanding of each function itself, and also confirmed that each function had a corresponding card.
The idea at this stage is not to argue about the quality of each function, or design the function, or even discuss the function, but to have a vague and rough idea about the function itself. Some functions of fogbugz 5.0 are as follows:
- Personalized homepage
- Painless software schedule
- Tracking the billable hours
- Copy a question (fork a bug)
- (46 other functions ...)
Something very vague. Remember that we do not know how each function is implemented or involved at the moment, because the only goal is to get a rough priority for starting development. This process will give us a list of 50 functions.
In the second stage, we should vote for each function one by one. It's just a quick "approve" or "disagree". Don't discuss it or do nothing, as long as you quickly say yes or no for each function. This process shows that about 14 features are not supported by anyone. I removed the feature that only gets one or two tickets, with 36 possible functions left.
Next, we will set a cost of 1 to 10 for each function. 1 indicates a function that is quickly available, and 10 indicates a huge monster function. At this stage, you must remember thatNoIt is to schedule these functions, but to separate large and small functions. I only ask developers one by one for each function and ask them to say "small", "medium", or "big 」. Even if you don't know how long a feature will take, you can easily see that copying a feature is a "small" feature, while the big and vague "personalized homepage" is a big feature. We estimate the price of each function based on the common cost estimation and my own judgment.
I once again stressed that this method is indeed scattered and inaccurate, but it does not matter. You don't want to schedule it now, but are trying to prioritize it. The only thing that needs to be roughly correct is to roughly know whether to finish two medium functions or one major function or ten minor functions at about the same time.No need for accuracy.
The next step is to list the functions of these 30 suggestions and their "cost" into a menu. Send the menu to everyone in the team and give each person 50 yuan to order food. They can choose at will, but they can only spend 50 yuan. If you want to, you can buy only half of the functions or double the functions. People who really like the "tracking recordable hours" function can spend 10 yuan or 15 yuan in this project. People who don't like it can only spend 1 yuan, check whether someone else has invested enough money.
Next we will sum up the money that everyone spends on each function:
Finally, I divide the money I spent by the cost:
Sort the numbers to find out the most popular features:
Finished! A list of functions that may be intended for this purpose, which is roughly arranged based on your best ideas about the most important features.
Now you can start to think carefully. For example, you can set the functions that should have been put together. For example, running software schedules makes it easier for you to report the number of hours, so maybe we should do both or both. In addition, you may find that some items are clearly wrong after you view the list in the prioritized order. If yes, correct it! Nothing cannot be moved. You can even change the priority during development.
But what surprised me most is that the final list we output is indeed a very good priority for fogbugz 5.0, it also reflects our collective consensus on the relative priority of each function.
With this priority list, we sort the list by item in sequence until January 1, March. We plan to stop adding new features and start the integration and testing phase. We will write specifications for each (not obvious) feature before it is implemented.
(The nagging bduf/agile beauty contest runners are probably confused now. 「 Does that mean bduf gets a ticket? Or to agile? He exactlyYesWhat?Can't he just select one site at a time ?!」)
The entire planning process took three hours.
If you are lucky enough to have the ability to issue new software versions more frequently than we do (refer to picking a ship date), you must also list the items in sequence, however, you can stop for release more frequently. The advantage of frequent release is that the priority of the function list can be rescheduled based on the customer's actual feedback, but not every product has this blessing.
Mike Conte taught me this system when planning Excel 5. Although there were 20 or 30 people in the conference room, it took only two or three hours to complete. What's cool is that about half of the features we don't have time to do are really stupid, and Excel is even better because it doesn't have these features.
This method is not perfect, but I will tell you that it is much better than buying a blue folder with staple.
The content of these web pages is to express personal opinions.
All contents copyright 1999-2006 by Joel Spolsky. All rights reserved.
Retrieved from "http://local.joelonsoftware.com/wiki/%E8%A8%AD%E5% AE %9A%E5%84%AA%E5%85%88%E9%A0%86%E5%BA%8F"