编码是不够的:投资领域知识的重要性


作为技术专家,我们花了很多时间学习最新的技术、开发实践和工具。这些对我们所做的工作非常重要,因此我们理所当然地给予它们大量的关注。有很多资源可以用来学习这些信息,无论是博客文章、会议、认证、视频等等。不过,了解技术只是战斗的一半。软件的建立是有原因的,是为了解决现实世界中的问题,为了做到这一点,对现实世界的工作方式的了解是必要的。这种关于特定行业或领域的知识通常被称为领域知识。

领域知识,虽然在解释作为一个开发者成功的必要条件时并不经常讨论,但对于在工作中取得成效至关重要。如果没有领域知识,开发人员只是一个接受信息并将其翻译成计算机语言的编码员。与那些在他们所构建的软件领域拥有深厚的领域知识的开发者相比,这种开发者能够聪明地讨论他们的工作。这个开发者能够聪明地与那些商业专家讨论软件需要做什么。他们也知道他们特定领域的限制和术语。他们不只是知道软件的内容和方法,他们还深刻理解 "为什么"。因此,他们也成为特定开发领域的专家。这并不意味着没有业务人员在推动软件的需求,但它确实意味着开发人员和产品人员在说着同样的语言。就像产品所有者对软件组件如何协同工作有一个高层次的理解一样,同样的道理也适用于另一个方向。

鉴于获得领域知识的重要性,人们如何获得它呢?关于领域知识的不幸之处在于,它很可能只能在该领域内应用。因此,如果你换了行业,甚至换了同一行业的工作,你的领域知识就可能不再有用。虽然拥有广泛的知识可能是有用的,这样你就可以把知识从一个领域拉到另一个领域,但对特定领域的深刻理解才是最有用的。

我对特定领域了解最多的地方是来自该领域的专家。如果你足够幸运,在你的工作场所有 "产品 "人员,这些人往往最终会成为 "产品 "人员。他们被雇用的部分原因可能是他们的领域知识,因此,不利用这一点将是一种耻辱。这也有一个额外的好处,那就是能够与该人建立关系,从而在未来获得红利。这可能也不仅仅是他们教你一些东西,他们可能只是作为一个向导。我有机会工作的领域之一是为FDA监管的公司建立软件。该领域的关键立法之一是21 CFR第11部分。虽然产品人员可以带领我完成这项工作,但我决定自己来阅读法规,并向他们提出澄清的问题。这让我获得了第一手的经验,同时也向他们展示了我的投入和对他们指出的重要内容的重视。

有时你不会那么幸运,有一个人在旁边指导你。在一个不同的项目中,我需要处理条形码和产品包装。虽然有当地的专家负责包装过程的一部分,但印在上面的条形码却不在专家们的专业范围内,他们只是需要它发挥作用。在从包装专家那里收集了关于为什么需要改变的要求后,我不得不去研究什么是可能的。比如Code 39、Code 128、Interleaved 2 of 5、QR码等之间的区别。我们的打印软件可以处理什么,我们的扫描软件可以使用什么,等等。这不是我之后不得不考虑的信息,但在当时我对条形码的内部结构有了极深的了解。有时候,你不会有一个指南来了解一个领域,所以拥有所需的研究技能很重要。

获得这种领域知识的另一种方式是通过初级研究。在你试图建立软件的工作中,要有一个人做影子。这对于软件的设计是非常有用的。获得这种同理心并了解它如何被使用,使你能够确保你建立的东西是有用的。

无论你用什么技术来获得这些技能,它们的共同核心是对学习的渴望。如果你从学习某一领域的愿望开始,并使用上述来源,你将能够在你的研究领域建立起你的经验和知识。获得领域知识很可能需要上述想法的组合。

领域知识在软件开发中是必不可少的。它能带来更有效和创新的解决方案,改善与利益相关者的沟通,并将使你的软件开发经验变得无价。这种投资是绝对值得的。