Why another Crowd thing ?
Yet another Crowd thing ? What is Crowd Coding and why we badly need it ?
I am a big fan of Crowd Sourcing, a word coined by Jeff Howe, contributing editor at Wired Magazine, and Mark Robinson, featured editor at Wired Magazine. I especially spent a lot of time reading about how powerful this process is to solve particular problems, from business related problems to very specific tasks.
Shortly after the crowdsourcing concept started to gain popularity, we witnessed the birth of other concepts such as CrowdFunding, which is another powerful funding tunnel that can save a lot of ambitious projects that lack funding support.
The power of the crowd to solve different kinds of problems started to rise into my head, especially that we are seeing a lot of collaborative efforts making a lot of successful projects in Bioinformatics. A good paper was recently published by Benjamin M. Good and Andrew I. Su exhibits how useful this concept could be for Bioinformatics, but with the lack of support to such ideas we might just not have then applied to the field at all (I will talk about this later in another post).
That said, even though the term crowdsourcing is not applied perse, we watched a lot of projects that are actually crowdsourced, such as UCSC genome browser , GEOmnibus and others, wehere scientists contribute by submitting the results of their experiments, and put their data available to the public for further analysis and investigation.
What about Bioinformatics development
Some other examples, link bioinformatics to the crowd contribution, we may cite as an example Taverna workflow development or The Galaxy project, but are they really crowdsourcing projects ? The answer is No.
What motivates people for sharing with the public ? Reputation ? Community recognition ? Publications ? probably ! but the most important thing to consider as a scientist, is to ask yourself a simple question, each and every morning you wake up : What did you do to change your world today ? Even if your contribution is very small, what impact it can have on your microenvironment ?
I was browsing a lot of publications lately and noticed that people are racing to publish papers, getting known for that small yet rebranded discovery that will be tightly associated with the author's name, but I think personnally that this is serious and the most dangerous practices and the biggest harm one can do for science. As a result, you can count a lot of dead projects (codes, softwares) probably because the ambition behind it was driven by a time-limited goal and not a solution that can have a long term impact on people's life (jobs). How many papers you browse looking for a source code to try at and you end up on a page not found or a server error page ? A lot right ?
There are probably a lot of reasons to explain that, but the one I am thinking of all the time, is that the authors failed to make their solution a need or a must have tool for other scientists. On the other hand, all successful scientists in Bioinformatics (I am talking about software development) usually find THE niche they want to focus on, build a useful product and keep improving it through versionning and features improvements, until the day (after many years) their product becomes obselete, but by then one's scientific career is probably over, if not, they use the same reciepe, find the niche, and make a useful product.
To do that, one cannot work in a closed environment. Especially, we cannot achieve such goal by doing it the same old manner. Science is growing fast, Bioinformatics is growing fast, and so is computer science. I personnally was interested in so many programming languages in the past, and engaged in a lot of discussions (the preferred ones for bioinformaticians) on what's the best language to use or what's your favorite tool etc ... but I ended up adopting all of them, the one that's more useful is the one you know, and the most practical is the one that does the job you need to finish, rapidly (not a problem at all if you have clusters) and in as less as possible lines of codes; I, for example replaced some of my old perl pipelines with others calling awk, sed and bedtools, to the point I was convinced that you only need that to do any kind of job !
The most important thing though is to learn how to do things, and the best way to do it is to have an idea how other developers would do the same task, if by the end of the day you find a smarter way to do job, well you definitly learned something !
That's how I came up with the CrowdCoding concept (Crowd Computing).
CrowdCoding is the interaction with other programmers around a given piece of code, using a web framework that capture the original source code and all possible other implementations, in an effort to solve a bug, review a code or reimplement an algorithm
I spent months drafting the framework and working on the concept, thinking about a name for the web application and finally ended up calling it simply CodersCrowd
What is CodersCrowd ?
Everything at CodersCrowd is centered around Source Code. The application is basically bringing a solution to the bioinformatics scattered knowledge on the web. The most common source of information we have until now to solve a particular issue, is either mailing lists, forums or q&a websites. Although they can be efficient in solving a time point problem, the most annoying and damaging effect in countrepart is the generation of a massive amount of 'wasted' knowledge. Because with the time, that solved problem in particular will be the problem of someone else, and because it was not efficiently stored as a use case, you will spend a precious time looking around on the web, for a similar problem, torturing your neurons to find the right keyword to write on the browser to get the most accurate result from your search engine, sometimes you do it, sometimes you just give up and decide to break your problem into smaller tasks that you can try to align to similar cases that you can find easier on the web. What a waste of time !
What if you have a knowledge base ? What if all these solutions aroud the web are stored somewhere and easily searchable ? What if you can easily see a problem and all the related contributions that led to solve it ? What if you had a CodersCrowd account ?
CodersCrowd is divided into two blocks. First, you submit a problem, by trying to describe as clearly as possible what you're trying to do, and what problems you have exactly, then you monitor other developers contributions trying to solve the issue you have, you will see a lot of different contributions, some of them will work for you, some other wont. Once you find one or several solutions you will just have to validate them. By doing this, you will simply create a record to a knowledge base, a use case repository that others will find useful. As simple as that !
Why would others solve my problem ? and for free ?
The most important thing we all want is : Getting things done, and rapidly ! To do so, we want our problems to be solved as soon as possible, learn as much as possible and move on. If you're a CodersCrowd user, your profile will speak for you, you have to keep a balance between the number of problems you post and the number of solutions you provide to people. The more you give to the community, the more you'll recieve, and the more you'll move on rapidly, that's the main idea behind CodersCrowd.
It is an all-in-one action, at the same time you : ask, get response, learn, get reputation, increase the likelihood of people helping you in the future, get things done, get a lot of connections and probably future collaborators.
In the meanwhile you profile page will exhibit your achievements and your records.
I will be writing another detailed post on how exactly to use CodersCrowd and give you tips to maximize the chance of getting people interacting with your problems.
Thanks for your time reading this very first post on CodersCrowd's blog !