I remember a while ago on a Stack Overflow podcast Jeff Atwood was talking about the bounty system, and he said that they released the bounty offering code before the bounty awarding code was written as the code would not be needed for a couple of weeks.
Is there a standard term for this? Agile can work in th开发者_如何学Cis way but it doesn’t have to. I am thinking of suggesting it to a client for something and would like to use the correct terminology along with any information backing it up as a method.
Essentially the method is to release code with some functionality incomplete as the time until the incomplete functionality is needed is less that the time it will take to develop.
Just-in-time development? Analogous to the concept of just-in-time inventory in business.
Or, less charitably, "winging it".
This is IMHO more an opportunity that you get sometimes, not a method: for example delivering a feature allowing subscription to a monthly newsletter at the start of the month and releasing the code to send the newsletter one month later. Doing this is just smart release management (i.e. good priorization of work). Maybe one could call that Opportunistic Development (that's something you'll find in Agile literature).
The term is Bounty Development.
Seriously, if you're looking into a term to what you want to do in this scenario IMHO is incremental, not necessarily incomplete. If you have bounty offering code, you don't have incomplete bounty code, you have bounty offering code.
Nothing is incomplete here: it's a deliverable (shippable increment of work) submited in a stage (a regular cadence of work) in an inspect-and-adapt manner.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Source: Principles of Agile Manifesto
I would just use the term Agile, with a simple explanation (since using any term on earth you still need to explain it anyway): "create softwate in really small working pieces, in a shorter timescale each piece with continuous customer colaboration".
Here are a couple of links that may help. I think prototyping is closer to what you want, though I'll leave in the other links just in case you want to add some more phrases that may be useful when developing software:
- Prototyping
- The Last Responsible Moment
- YAGNI
Open Alpha or Beta (depending on completeness)
Basically, you know that the codebase hasn't solidified for all of the features yet but you release it to the public anyway.
The 'alpha' distinction would probably fit projects that are in their initial stages of development.
The 'beta' distinction usually applies to applications that haven't matured to their first official release number (IE 1.0).
Be careful though because there are risk inherent to releasing incomplete/untested code to the public.
In the case of Stack Overflow, releasing incomplete code/features isn't really a big deal because the platform is expected to be under constant development/revision as per the user community.
Suicide?
I don't think the potential gain can outweigh the risks.
精彩评论