Best practices for (research) software development