原文链接 🔗 2 Keep a Record(opens new window)

📚 合集|社会科学的纯文本指南(opens new window)


# 确保知道你做了什么

对于形成学术论文过程中有条理的数据分析来说,无论倾向于哪种模式,都有一些基本原则需要遵守,也许其中最重要的就是以一种能够记录整个过程的连贯方式开展你的工作。例如,你应该将你所做的工作使用一段文档化的代码记录下来,而不是做完一些数据统计工作之后仅仅保留下最终生成的表格和图片。与其找出答案,而不记录你可能再次出现的问题的解决方案,不如将答案写下来,作为一个明确的步骤。不要复制一些没有太多上下文的归档材料,而应正确归档源文件,或者至少能够对源文件进行精确引用。

第二个原则是文件或文件夹应始终能够告诉你它是什么。除了使你的工作可以复现(reproducible)之外,还需要一些方法来组织和记录草稿文件、代码、调研记录、数据集、输出文件或者你正在使用的任何内容。在一个易于搜索的文件世界里,这可能仅仅意味着保持你的工作在纯文本中,并给它一个描述性的名称。它通常不是投入时间创建一些精心设计的分类方案或目录,而这些方案或目录本身就是维护的目的。

第三个原则,如果可能的话,重复且容易出错的过程应该是自动化的(软件开发人员称之为「DRY」,或者叫 Don't Repeat Yourself(opens new window) ),因为这样可以更容易地检查并纠正错误。编写一个可以在需要时调用的通用函数,而不是一遍又一遍地复制和粘贴代码来对数据的不同部分做同样的事情。当把论文发送给期刊时,不要重新输入和格式化每篇论文的参考文献,而应该使用可以自动实现这些功能的软件。

有许多方法可以践行这些原则。你可以使用 Microsoft Word(opens new window) EndNote(opens new window) SPSS(opens new window) Textpad(opens new window) Stata(opens new window) ,或者笔记本、计算器、剪刀和文件夹。但软件的功能并不都是等效的,在做正确的事情上,有些软件比其他的更容易一些。例如,使用 Microsoft Word 生成结构良好、易于维护的文档不是不可能,但前提是你必须严格使用它的样式和大纲功能,然而大多数人对此都不以为意。你可以在 SPSS 中维护可重复的分析,但是 SPSS 的设置并不能自动或有效地做到这一点,它的设计也不鼓励这种良好的习惯。因此,花一些时间来了解替代方案可能是个好主意。后面提到的很多软件都可以自由尝试或使用,而你正处于可以捣鼓这些工具的阶段,即使没有什么结果也不会有什么麻烦。

你写的论文、书籍或文章通常包括主文档、数据分析结果(可能通常以表格或图片形式呈现)以及注释和参考文献部分。因此,当你把一个文件或整个论文放在一起时,你希望在编辑文本、数据分析和结果呈现过程中记录你的操作非常轻松而方便,并且以一种可重复的方式。在下一节中,我将介绍一些让你完成所有这些工作的应用程序和工具。我比较关注那些具有良好的设计、能和其他工具很好地结合,并且可以免费运行于三大桌面操作系统:Windows、Linux 和 macOS 的软件。无论如何这些工具都不完美——实际上,其中一些甚至可能很难学会,但是研究生水平的研究和写作通常也是比较难以掌握的。特定的任务需要特定的工具,不幸的是,虽然有些人非常擅长他们的工作,但这些工具并不总是对他们很友好。

# 使用版本控制

写作涉及大量的编辑和修改,数据分析涉及清理文件、可视化信息、运行模型,以及反复检查代码是否存在错误,你需要跟踪记录这项工作。随着项目的发展和变化,当你有了不同的想法和观点时,在特定的代码片段中记录你的工作或编辑到单个文件中的段落的任务,可能会随着时间的推移而变得更加复杂。最好的办法是建立某种版本控制对单个文件、材料的文件夹或整个项目的更改的进行完整的记录。好的版本控制系统允许你「倒带」到之前的笔记、草稿,论文和代码,可以让你不断探索项目的不同方面或分支,在更高级的操作中,它提供了一些与其他人协作的强大工具,有助于避免目录文件夹中充斥着令人 眼花缭乱的文件(opens new window) Paper-1.docPaper-2.docPaper-conferenceversion.docPaper-Final-revised-DONE-lastedits.doc

在人文社会科学中,你最有可能是通过 Microsoft Word 中的「修订(opens new window) 」功能无意中用到了系统版本控制,该功能可让你查看你和协作者对文档所做的编辑。通过 Google Docs 或 Quip(opens new window) 等工具,也可以对单个文档进行协作编辑。但是,真正的版本控制是一种以全面和透明的方式为整个项目而不仅仅是单个文档执行这些操作的方式,如果需要的话,现代版本控制系统,如 Mercurial(opens new window) Git(opens new window) 可以管理非常大的项目,其中许多分支分布在多个用户之间。Git 已成为版本控制「事实上」的标准,而 GitHub(opens new window) 则是一个提供给软件开发者和社会科学家工作的地方,在那里,你可以为正在进行的项目做贡献或者公开自己的项目。

现代版本控制需要熟悉一些与跟踪文件相关的新概念,并了解版本控制系统是如何实现这些概念的。学习它们有一些 很好的资源(opens new window) 。由于它们的强大功能,这些工具对于个人用户来说似乎有点过于极客了。[1] 但是版本控制系统可以简单地以基本方式使用,并且它们通常可以很容易地与文本编辑器集成,或者可以通过友好的图形化应用来使用它,让你远离命令行。Git 的核心思想如下图所示,你将工作保存在仓库中,这可以保存在本地,也可以保存在远程服务器上。在你工作时,你会定期暂存所做的更改,然后将它们提交到仓库,并附上一些关于你所做的修改的说明,你或其他人可以复制、克隆、合并和贡献这个仓库。

git-basic

Git 工作流程示意图

上图描述了 Git 工作的流程,你可以从远程仓库(例如 GitHub)获取项目的最新版本,然后「签出」项目以进行处理,编写代码或文本,可以像平常一样在电脑上的文件夹中处理文件。但就项目而言,它是「真实的」仓库。一旦你对文档所做的更改感到满意,你就将这些更改暂存。在看不见的后台,这些更改被添加到 Git 用于跟踪文件更改的索引中,但这些更改尚未永久记录。为了使它们永久化,你提交对仓库所做的更改,同时附上执行操作的注释说明,Git 就确认记录下了你所做的更改。然后,你将更改推送到远程仓库,这实际上也可以看作对工作文件的备份。随着时间的推移,仓库将包含项目的完整记录,可以根据需要重新访问其中的任何步骤。在最简单的情况下,没有远程仓库,只有检出并提交更改的本地仓库,你可以从命令行执行所有的这些操作,或者使用一些前端应用程序来帮助你。

修订控制具有显著的优点。Git 这样的工具将「修订」的优点与备份的优点结合在一起,每个仓库都是一个完整的、独立的、经过加密签名的项目副本,其中包含所有参与者在其开发过程中记录的每个步骤的日志。它会让你养成在处理文件或项目时对其进行零碎更改的习惯,并(简要地)记录这些更改。它允许通过创建项目的「分支」轻松地创建替代的开发路线。Git 也允许协作者同时处理项目,而无需通过电子邮件来来回回发送无尽的拷贝版本。它提供了强大的工具,允许自动合并或在必要时手动比较你或其他人所做的更改。也许最重要的是,它可以让你随时重新审视项目开发的任何阶段,并重建你正在做的事情。无论你是编写定量分析代码,管理调研笔记还是撰写论文,这都非常有用。虽然你可能不需要以这种方式管理一切,但我强烈建议你,至少构成项目的核心文件应该以这种方式来管理(例如,数据分析生成表格和图片的代码;数据集本身;你的笔记和工作文件;学位论文的各个章节等)。随着时间推移,你将生成一个全面的、带注释的操作记录,这也是项目在其开发的每个阶段的备份。GitHub(opens new window) 等服务允许你存储公开或(收费)私有项目仓库[2],因此可以成为异地备份工作的方式,也可以是协作和记录工作的平台。

下载并安装 Git(例如通过安装 Apple 的开发人员工具安装[3]),启动和运行它们的最简单方法是创建一个 GitHub 帐户,然后 配置 Git(opens new window) 。虽然 Git 是免费软件,但 GitHub 是一个具有免费套餐的商业服务。

你为什么要费心去这样做呢?因为你做这件事的主要目的是为了你自己。论文需要很长时间才能写出来,当你不可避免,必须完全地从你 9 个月前的表格、图片和引用从头开始时,未来的自己将会省下几个小时的时间,花在思考你认为自己在做什么,以及你从哪里得到了它。

# 备份你的工作文件

无论你是否选择使用一种正式的修订控制系统,都应该有一种跟踪文件版本的系统方法。如果将仓库保留在工作电脑以外的某个位置,则可以在某种程度上备份版本控制的项目,但是这还远远不够。例如,苹果的时间机器(Time Machine)可以备份和修复磁盘上的文件或本地硬盘驱动器,从而可以退回到所需文件的特定版本。但这也还不够,你需要定期、过剩、自动、异地备份你的文件。因为你很懒惰并且老是有侥幸的想法,所以你不会自己主动做这件事。这就是为什么最有用的备份系统需要最少量的工作来设置的原因。一旦有了条理,就可以自动备份所有内容,而无需记住手动来做。这就需要为 Crashplan(opens new window) Backblaze(opens new window) 这种安全的异地备份服务付费,异地备份指在你的电脑和本地备份被盗或被破坏的情况下(虽然不太可能,但也不是闻所未闻),你仍将拥有文件的副本。我听说过有人的办公楼被龙卷风击中,她回来找她的文件和电脑,不得不坐在一英尺深的水里。你永远都不会知道,从个人工作的角度来看,不那么引人注目,但同样具有灾难性。我也听说过那些因丢弃笔记本电脑,电脑或硬盘(或者说是「备份硬盘」)被偷而丢失了数月甚至数年工作的人。表面上看,他们并不应该为丢失文件背锅,但就像安全带一样,在真正需要它们之前,你不需要备份。正如 Jamie Zawinski 所说的那样(opens new window) ,当涉及到丢失你的数据时「整个宇宙都会是最大的讽刺,不要备份」。


  1. 但是,很多人发现一旦开始使用 Word 的「修订」功能,就离不开了。 ↩︎

  2. 译者注: GitHub 的收费模式可以在 这里(opens new window) 查看。此外,在校学生可以通过认证,获得 GitHub Pro(价值 $7×12),同时也将拥有超多福利的 GitHub Education(opens new window) ↩︎

  3. 译者注:苹果推出的用于开发 iOS、iPadOS、tvOS、watchOS 和 macOS 软件的 Xcode(opens new window) 自带 Git。如果想要单独在 macOS 上安装 Git,最简单的方式是通过 Homebrew(opens new window) 来安装,一行代码即可实现:brew install git↩︎