Project management 研究环境中的软件项目和开发
当您或项目不清楚最终产品(如果有的话)是什么时,可以采取哪些有用的策略 让我们把“研究”理解为对一个领域的探索,在这个领域中,许多事情是未知的或未实施的,并且在项目开始时无法指定一套正式的可交付成果。这在STEM(科学(物理、化学、生物学、材料等)、技术工程、医学)以及信息学和计算机科学的许多领域都很常见。软件的创建本身就是目的(例如新算法)、管理数据(通常是实验)和模拟(例如材料、反应等)的手段。它通常是由小团体或个人创建的(我省略了大型科学,如望远镜和强子对撞机,它们非常强调软件工程。) 研究软件的特点是(至少):Project management 研究环境中的软件项目和开发,project-management,Project Management,当您或项目不清楚最终产品(如果有的话)是什么时,可以采取哪些有用的策略 让我们把“研究”理解为对一个领域的探索,在这个领域中,许多事情是未知的或未实施的,并且在项目开始时无法指定一套正式的可交付成果。这在STEM(科学(物理、化学、生物学、材料等)、技术工程、医学)以及信息学和计算机科学的许多领域都很常见。软件的创建本身就是目的(例如新算法)、管理数据(通常是实验)和模拟(例如材料、反应等)的手段。它通常是由小团体或个人创建的(我省略了大型科学,如望远镜和强子对撞机,它们非常强调软件工程。) 研
- 未知结果
- 未知时间尺度
- 很少有正式的项目管理
- 预算有限(至少在学术界)
- 第三方工具和库的不可预测性
- 项目期间外部世界的变化(例如,新发现可能是积极的-省力的-或消极的-被挖掘)
编辑:我很感谢dmckee(以下)指出了一个类似的讨论。这都是好东西,我特别同意版本控制是我们可以为科学家提供的最重要的东西之一(我们提供给我们的同事,并得到了很好的采纳).我也喜欢这里提到的软件木工课程的方法。我建议你/他们阅读“干净的代码”
这本书的基本思想是,如果你不保持代码“干净”,最终混乱将阻止你取得任何进展。我将告诉你我的经验 毫无疑问,许多软件在学术界被创造和浪费。事实是,很难将专门为特定研究目标而创建的研究软件适应更一般的环境。此外,学术界的产品是科学论文,而不是软件。软件在学术界的价值为零。你生产的数据一旦你在上面写了一篇论文(这需要很多编辑时间),使用该软件的ce就会被评估 然而,在大多数情况下,研究小组已经认识到了频繁的模式,这些模式可以作为内部知识进行润色、测试和存档。这就是我使用个人工具包所做的。我根据我的研究需要进行扩展,只使用那些“跨项目”的功能.开发个人工具包几乎是一项要求,因为你的科学需求很可能在某些方面是独一无二的(否则你就不会做研究),而且你希望有尽可能少的外部依赖性(因为如果某件事情发生变化并破坏了你的东西,你就没有时间修复它) 然而,对于一个给定的项目来说,其他一切都太具体了,无法具体化。因此,我倾向于不封装一些显然是一次性解决方案的东西。但是,如果以后其他项目需要相同的代码,我会返回并改进它 项目跨度短,研究热度高(例如,发布或销毁愿景如今如此重要),需要灵活、快速的语言,一般来说,需要能够快速掌握的语言。基因组学和量子化学的博士没有正式的编程背景。在某些情况下,他们甚至不喜欢它。因此,语言必须快速、简单、干净、灵活,并且以后易于理解。后一点是资本,因为没有时间去学习制作文档,并保证在学术界,每个人迟早都会离开,每三年左右你就会将团队经验烧成零。学术界是一个高风险行业,定期解雇所有硬组织的执行者,只保留一些管理者。拥有一个可维护的代码,可以让一些人轻松掌握因此,ne else是资本。此外,永远不要低估谷歌搜索解决您问题的能力。使用部署良好的语言,您更有可能找到您可能遇到的难题和问题的答案 管理层