Wiki Software Development Oriented Methodology (WiSDOM)
At least you were outside the planet for the last 10 years, is sure you are familiar with Wikis.
We have Wikipedia, many of you perhaps use wikis at work, and many open source projects uses Wikis for documentation, and community support.
All started with Ward Cunningham and the Portland Pattern Repository, the first wiki ever.
A wiki is a collaborative tool, for web publishing.
Uses on software development
The original wikiwikiweb objectives, are to collect patterns. Today many projects uses wikis for documentation, internal documentation, and users guides and handbooks. Even wikis, are used to track enterprise software development process, like Confluence.
There are few experience where the wikis are used to obtain feedback from users.
Wikis are an opportunity to allows users to collaborate with your product improvement. Indeed, when you publish a wiki for feedback from your costumers, you can obtain very interesting proposals, even innovation you never tought about.
Why this happen? because of their nature, wikis tends to a consensus of the comunity of users.
Imagine a wiki where users and developers interact in the design of the product, this could lead to a refined list of requirements, where users would be happy about final product, because will reflect their opinions. And, if they dislike it, you can show them the wiki discussion, where they had written their intentions.
I propose to the comunity of developers to extends the wikis and build as a collaborative development tool.
I see a tool based on wikis, that integrates requirements, analysis, design, models, even source code. A wiki where in a page describing an user feature, you can dig into the page where this feature is implemented (a wiki user interface), even, the developers can dig into the source code that implements the feature.Like the original smalltalk environment, but based on the web.
I invite to you to discuss this idea, even I want to build it. I envision a cooperative environment where users writes their requirements, designers build models to satisfy this requirements, and interact with users, building rapid prototypes of the user interfaces, in the same place. Users give feedback to developers, and programmers build components to integrate into the environment (like plugins).
If you are using CMS, like Drupal, or WikiMedia, is not dificult to conceive a powerful environment like this.
Of course there is some challenges, like security, we don’t like users to alter the source code, or we like to have an history of the changes, to trace bugs, and show users how they expectation of the system changed o time. Also this infrainstructure must support unit testing, and regression testing, for example.
I believe, that this kind of tool could reduce the impedance mismatch between users and developers.
Conclusion and future actions
I invite to discuss my idea, I need feedback, I think is a simple, but powerful idea, nothing new perhaps, even if you know of something like this, please tell me, I don’t like to re-invent the wheel.
(This article is maintained and discussed also on my personal blog: http://www.darksideprogramming.org/archives/wisdom/index.html)