What we need for a perfect collaboration

Which barriers do we encounter?

Many of the projects where we have worked are controlled by politics, either a power group is the one who decides or the one that has money.

Is the language use in a project decided before hand? Or it’s not given enough importance at first? If there are many programming languages, how do they integrate?

Is it a priority in the project planning to the workflow to follow during the collaboration? What about to training on the tools to be used before the project starts?

Guidelines for project planning

  • Include the people who are going to do the work. More voice, more trust!
  • Use Previous projects experience (use people from external projects as advisors)
  • Set the rules about publishing, it’s going to be Open Access? will the code be open source? and the data?
  • Set a policy/code of conduct for the collaboration. Instead of having a assumption that there’s no need for one, it’s not a bad idea to write it down and explicitly say what’s not acceptable.
  • Set a tool list to be used in the project, including:
    • System for version control
    • The programming languages to use
    • Define the communication channels
    • Decide the build system
    • Establish the code quality standards (Testing/CI)
  • Organise training session for the decided tools for the collaboration and set a knowledge resources separate levels of difficulty.
  • Be flexible to change. Include a mechanism to allow changes (e.g.: PEP for Python).

Other problems we can foresee.

What do we do when a new partner joins? Is because the new partener wants to form part or is because we need them? Is clear that the first type would have to accept the rules set. However, some rules need to be set for what’s acceptable to relax for the ones needed.