Guide: Do software "right" from the start
You can greatly improve the quality of code and of your research by following established practices of the language of your choice from the start. Spend a little bit of effort in (a) setting up a reproducible dependency and build system in the beginning and (b) documenting the software all the time. This is a lot easier than trying to add documentation or "overhaul" when the code is "finished". Code is never finished. Seemingly simple information, such as how to set up the environment, or versions of used libraries, is simply lost after code is unused for a few months.
- Read a minimum of software development principles so that you know where you can find help. No need to learn something you can look up!
- Don't reinvent the wheel, use established libraries.
- Use established build and dependency management solutions for your language of choice. Even if you don't plan to publish your code in public repositories, do package it for them because it will enforce good practices.
- use Maven</a> or Gradle for Java
- write an extension package</a> for R and load required packages from CRAN
- write a PyPi module when using Python
- use Grunt</a> and Bower for JavaScript, and package your code in an NPM module
- Document constantly
- use "future you" without any previous knowledge as the recipient to judge level of detail of documentation
- use a common documentation solution - see Documentation
Do you know typical frameworks for other languages used in open source development?