作为程序员,我如何加快对业务规则的采用和理解?


11

我已经有一段时间了。我离那里最好的还很远。(当我独自坐在这个房间里时,我想知道自己是否是这里最好的。)但是,我开始了解自己的工具,并且我已经相信自己的推理和学习能力。

开始新工作时,我始终相信,只要我知道该语言,就可以学习该代码库。如果不是我所知道的语言或框架,我相信我可以掌握足以学习的概念(只需阅读文档)。这是我们作为程序员的技能技能的一部分,我为能够达到这一标准而感到自豪。

尽管如此,所有这些-我的主要弱点之一是为正在工作的客户快速学习和内部化业务规则-无论我是有薪雇员还是承包商。我对代码库很满意,但是特定业务的业务规则和流程似乎总是需要我一段时间才能完全理解。(例如,这可能是重写企业应用程序时的绊脚石。)

作为开发人员,快速有效地吸收业务规则和流程的最佳方法是什么?是否可能没有主题专家,或者仅仅具有与客户,公司或企业的多年经验?


3
这是与其他程序员讨论的一个很好的问题,但是不幸的是,对于此问答网站,它是不合时宜的:既太广泛了(关于此事有很多话要说),并且主要是基于观点的(不同的人会告诉你不同东西,从本质上讲对他们有用...您将如何选择“正确”的答案?)。
Andres F.

Answers:


4

对我而言,这是通过阅读和理解代码库来实现的。

我说这是出于两个关键原因:

  1. 真烂 哦,不是故意的(通常),但是在业务中,我发现人们对业务规则的理解通常会有些微不同。每个人都有自己的思维模式,当他们尝试与您交流时,他们就会失去忠诚。但是代码没有说谎。人们可以想想他们应该如何工作,但是代码是正确的。

  2. 首先建立基础。因此,如果每个人都有自己的心智模型来了解这些业务特定的术语和流程,那么您如何构建自己的模型?对我来说,我希望对许多程序员来说,我最好从代码中构建思维模型。代码有模式。代码具有抽象。我有很多使用代码并从中构建思维模型的经验。一旦我至少对事物的存在以及它们之间的关系有了一个模糊的认识,那么我就可以与商人交谈。然后,我可以提出正确的问题,并使他们的答案更适合难题。


2
您的方法听起来有点像鸡和鸡蛋。
罗伯特·哈维

@RobertHarvey您能解释一下“鸡肉和鸡蛋”的意思吗?
Falgantil '16

3
@BjarkeSøgaard:您无需先了解业务规则就可以编写代码来了解业务规则,以便可以编写适当的代码。如果要问成语是什么意思,另请参阅鸡肉和鸡蛋
罗伯特·哈维

需要明确的是,我专注于首先阅读代码。
Telastyn '16

1
@Telastyn有时,代码不完整或不正确-或不存在。我必须为未记录的业务流程编写代码-作为新功能或新系统。此外,通常情况下,代码不是包罗万象的,当涉及到业务规则-的代码,库存系统可以告诉你如何处理工作,但不一定是为什么过程定义它是这样的。我相信,知道事情为什么起作用以及为什么要做这些总是会带来更好的解决方案。
Lunchmeat317 '16

3

不要对自己太苛刻。有时,我想知道为什么他们甚至不愿称他们为业务“规则”,但我猜称它们为“除非有其他适用的事情,否则我们通常会做事的方式,然后我们做不同的事情”可能会侮辱他们。生意很乱。他们兼顾客户,法律机构,会计,法规,供应商,员工,经理和地方政府的需求。他们并不总是有原因的。

我认为最好的方法是确保您与尽可能多的商人在一起。对于某些担任技术职务的人来说可能很难。

  1. 预算您的时间并尊重他们的时间,但要尽可能地多。
  2. 您需要提出问题。他们不像程序员那样思考并分解所有内容,并且完全了解信息之间的关系。
  3. 不要像您所理解的那样假装。如果您和其他商人一样了解,他们会让您同时做这两项工作。参见#2。
  4. 不要期望文档。如果有的话,请给予很多赞美。
  5. 忍受批评。流程和程序可能有冗余和其他潜在的旅馆效率,但是可能有原因。了解为什么,但当他们说“我们一直都这样做时”时,请不要感到震惊。
  6. 有礼貌,友善并分享您的小吃。你在和人打交道。问好。询问他们的状况如何。询问他们为何进入该行业,以及他们在公司工作了多长时间。

你不是一个空虚的程序员,你是一个人。让他们知道您在那里是为了简化他们的工作。不幸的是,您可以成为英雄或山羊。这是我们业务的本质。


我真的必须在#5上工作.....我会尽力记住这一点。
Lunchmeat317 '16

#5绝对是巨大的。我在药房工作。可能会出现“我不知道计算机可以做到这一点”或“除非我们特别注意,否则人们可能死亡 ”的问题。本着这种精神,永远,永远说:“你为什么不只是 ”因为“公正”往往会表现出你对一个给定的相互作用的复杂性无知。
艾伦·舒特科

3

我建议阅读爱德华·伯格(Edward Burger)和迈克尔·P·星鸟(Michael P. Starbird)的著作《有效思考的五个要素》。它与一般地理解新概念有关,但我认为它适用于这种情况。

这是本书中的一些有趣之处:

掌握基础知识

如果您不了解基础知识,那么您将在不稳定的基础上建立自己的理解。因此,您需要提出其他人都没有问过的那些愚蠢的问题。

让错误作为指导

有时候,提出明显错误的问题会有所帮助,这样您就可以发现自己缺乏理解。(例如:您是说管理员有权访问每个文档?哦。为什么?)

教别人或向别人解释

当您尝试将其教给其他人时,您将开始发现难以理解的地方。

希望有帮助!


0

作为开发人员,我已经意识到我可以直接将业务转换为代码,数据结构,可能的类等。我从抽象的东西(通常是未定义的东西)变成特定的东西(具有“形状”的东西)。我开始立即进行编码,并且由于缺乏信息,导致我经常进行重构。每一次重构都使我认为我对业务的理解存在太多差距

我如何开始解决这个问题?

我强迫自己阅读在功能分析和早期阶段中编写的所有文档。我尝试以客户或最终用户的身份进行操作。我需要了解客户在此类应用程序和需求中正在寻找什么。但是我需要远离我是开发人员。

我们的工作为我们提供了客户所没有的出色技能。我们在条件结构中以其他人不会的方式思考。所以我开始面对要求。寻找矛盾或不连贯之处。围绕我所了解的内容,几乎没有脑筋。提出假设情景。

这使我产生疑问和疑惑。我写下每个人的名字,最后我与任何可以解决我的疑问的人开会。

总结一下,我改变了观点。我尝试从另一个角度看问题。但是我在开发过程中加入了一些开发人员的技能。最后要解决的问题很多。一旦解决,我对业务的理解就会更加深刻。

研究>疑问>问题>答案>理解(一遍又一遍重复一个循环)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.