Software Development
Process
Whether you work alone or in a team, it is worth understanding the software development process you apply. Knowledge about software development lifecycles can help organize your research better!
Please read about the software development processes (about 30 mins. of reading):
If you skipped the list, then simply use Scrum (and read this or get it here, and this).
Our recommendation: Everything but an agile and iterative approach will eventually fail, cost a lot of money, take a lot of time and therefore does not work in research. State which agile approach you apply, then you have a common language.
Collaborative Software Development
Software development is an endless line of "collect, compare, decide". To successfully employ this process, you need a few features, all of which are provided by the GitHub platform:
- Source code versioning
- Documentation platform (wiki)
- Issue or task tracking
- Website
- (mailing list only if you still use emails...)
There are other source code versioning systems (e.g. Mercurial, Bazaar, SVN), but Git is the real deal. Go with the flow - it makes it easier for new developers to join your project.
There are many task management systems. Trello, for example, is great and integrates very well with GitHub. Does your institution host Jira, Trac, Redmine, or Basecamp? Go for it.
You can host websites anywhere. If you need a blog, hosting with GitHub is possible but might not be your first choice. (see marketing...)
There are also alternatives to GitHub (see http://alternativeto.net/software/github/</a> and http://toppersworld.com/top-10-free-github-alternatives-for-private-repositories/), for example BitBucket, or R-Forge. Go with the flow of your language/domain. It lowers the barrier for collaboration. You can get commercial support and private repositores, or deploy an Open Source copy using GitLab
What platform works best for you? Would you like to learn about dependency management, build management, release management, or bug trial?