在我丰富的空闲时间里,我与许多科学家(主要是生物学家)合作,他们开发软件,数据库和其他与他们工作相关的工具.
通常这些项目是一次性构建的,在内部使用,最终有人决定"哦,这可能对其他人有用",所以他们发布二进制文件或将一个PHP接口打到它上面并将其推到网页.但是,他们通常不会为其他开发人员提供他们的源代码或数据库转储而烦恼,因此在实践中,这些项目通常在编写代码的项目即将结束或失去资金时死亡.几个月(或几年)之后,其他一些实验室需要使用相同类型的工具,他们必须重复第一个实验室所做的工作,该项目最终会死亡,起泡,冲洗,重复.
有没有人对如何说服主要工作不是编程的人有任何建议,这对他们的社区有益,因为他们对他们建立的工具更加开放?
同样,关于如何传达版本控制,错误跟踪,重构,自动化测试,持续集成以及我们专业开发人员认为理所当然的其他常见做法这一想法的任何建议都是值得花时间的好主意吗?
不幸的是,许多科学家似乎认为编程是一种枯燥乏味的工作必需品,他们的研究更重要,没有意识到现在,软件开发是科学研究的一部分,如果社区是整体提高了发展标准的标准,每个人都会受益.
你曾经遇到过这种情况吗?什么对你有用?
软件木工听起来像是符合您的要求:
概观
许多科学家和工程师在他们的大部分时间里都在编程,但只有少数人学会了如何做好这一点.结果,他们花时间与软件搏斗,而不是做研究,但不知道他们的程序是多么可靠或有效.
本课程是对科学家和工程师的基本软件开发实践的深入介绍,可以将编程花费的时间减少20-25%.所有材料都是开源的:任何人都可以自由地用于教育或商业目的,并积极鼓励学术界和工业界的研究小组根据他们的需要进行调整.
让我先说这是一个生物信息学家,所以我一直在看你正在谈论的事情.有一些事实是,这些人中很多人都是生物学家,他们只是没有接触过最佳实践.
也就是说,核心问题不在于这些人不了解良好做法,也不在乎.问题是他们没有动力花更多的时间学习软件工程,或者清理代码并发布它.
在学术研究环境中,您的声誉(以及您未来的就业前景)几乎完全取决于您所贡献的出版物的数量和质量.关于方法或新算法的出版物没有像报告新的生物学发现那样受到尊重.因此,在对数据集进行快速分析之后,当我可以继续使用下一个数据集并进行更多生物学发现时,我很少有动力花大量时间来清理代码并发布它.
我还要注意,计算机开发的资金可用性比生物学的可用资源低几个数量级.在只有10%的提交资助得到资助的环境中,科学家们没有时间来清理和发布他们的代码,这样做并不能帮助他们保持实验室的资金.
所以,简而言之就是问题所在.作为一名生物信息学家,我认为这是有悖常理的,往往令人沮丧.
也就是说,未来有希望.特别是第二代和第三代测序,生物学正在进入高通量发现领域,数据挖掘和固体计算管道成为科学成功不可或缺的一部分.当这种情况发生时,您将看到越来越多的计算项目资金,以及越来越多真正的软件工程正在发生.
这不完全简单,但示范的例子可能是最有效的驱动点回家-找一个任务研究员需要做,找人谁没有花时间做一个工具瓦特/可用的源,并指出有多少时间研究人员因为有了这个工具可以节省成本 - 然后指出他们可以以同样的方式回馈社区.
实际上,除了他们选择的职业之外,你要求他们做的是成为专业开发人员(他们有大量的空闲时间).他们的不情愿是可以理解的.
有没有人对如何说服主要工作不是编程的人有任何建议,这对他们的社区有益,因为他们对他们建立的工具更加开放?
放弃.说真的,这就像教猪唱歌一样.(我可以这么说,因为我曾经是一名物理学家所以我知道他们是什么样的.)
真正的问题是,您的同事因出版物而非软件测量的科学成果而获得奖励.计算机科学很难获得建筑软件的认可; 在其他科学中,这几乎是不可能的.
您不能以"对您有益"为理由向您的生物朋友出售良好的开发实践.他们会问"我应该努力学习好的软件实践,还是应该投入相同的努力来发表另一篇生物学论文?" 没有比赛.