领域知识与技术知识有多重要?


33

我正在开发一个交易和风险管理应用程序,尽管从C#的背景开始,我还是被要求从事SSIS软件包的开发。现在我可以忍受了。痛点是过于强调业务理解。贸易(准确地说是能源贸易)是一个巨大的领域,对它的每一点了解都令人难以理解。但是在过去的两个月中,我一直在努力理解业务术语-以市值计价,风险度量,头寸,盈亏,希腊语,工具,账簿结构...每一个小细节(您明白了)。现在恕我直言,这是广管局的工作。当然,对于开发人员而言,了解业务非常重要,但是您如何划清界限?

当我与经理交谈时,他几乎嘲笑我说任何人都可以在一周内学习技术。这是更难的事情。我的长期愿望是留在技术方面,可能成为一名架构师(如果可能的话)。如果我想非常专注于业务,那我将攻读MBA!

我想知道我在理解业务重要性上是错还是太天真,还是感到沮丧?


12
请告诉您的经理,技术/编程不限于EXCEL || MS Office || 实时连接,任何人都可以在一周内学习。
游侠

我无法相信某些答案,希望人们以复仇的态度否决这些答案。
加拉夫

@Gaurav,我希望不会。我认为激烈的情绪对这个论坛(或一般而言,任何论坛)都不会有任何好处。我很想知道您的具体反对意见,因此随时对您遇到的问题发表评论。
彼得Török

@Ranger哈哈!您说经理职位容易吗?
Gopi

5
请他学习一周内的工作。那是一种非常傲慢的态度。我什至打赌他不能做你能做的事,赌你两倍的薪水。一个newb可能需要一周的时间来学习特定语言的内存,操作数和条件的语法,甚至可能需要一个月或更长时间才能掌握它们。到达自己的位置是一个漫长的过程,但总的来说,这是我们的激情,因此我们将一生的苦难分散了下来。
隐身

Answers:


33

程序员的工作是将自然语言需求转换为机器语言实现。如果您仅一侧或另一侧流利,则无法有效地做到这一点。除非您正在编写编译器或版本控制软件,否则几乎每个编程工作都需要大量的非编程知识。


1
当程序员不知道哪个客户端很难讲代码时
Gopi

+1 @Sri Kumar是对的,但是我认为作为一名编程人员,您仍然应该能够知道他们需要什么以及如何使用技术来实现解决方案。我同意,编写业务解决方案意味着涉及各种业务。
gideon

3
我的回答是同一句话措辞不同。如果您不了解所创建内容的上下文,则将在您了解的上下文中创建它,而不是预期的上下文。除非您组成一个大型团队,并且您要基于UML图编写XML规范和对象,否则它非常重要。
隐身

即使编译器和vcs也有一个域,我们可能会更满意。
乔什·约翰逊

24

Benjol和您的经理是对的,但让我详细说明:

了解业务领域是您如何在流程中增加价值增加业务价值的方法

这就是代码猴子程序员和开发人员之间的区别


7
+1我对程序员没有用。我需要开发人员,也就是问题解决者。:)
jmort253

18

我大学计算机科学系的一句话是:

如果要为地质学家构建软件,则必须首先了解地质学。如果要为物理学家构建软件,则必须首先涉猎物理学。如果您想了解业务,那么您首先必须学会谈生意。

我一直在这里听到人们说软件开发是一个创新领域。我认为这在一定程度上是正确的。它涉及创造力,即必须能够看到盒子外面的东西才能解决一系列问题。

这并不意味着您可以坐下,噢,如此创造性地构建您想要的任何东西。这不是美术课,而是工程课,您的客户和利益相关者将期望您创建解决他们问题的方法,而不仅仅是“酷”的方法。

为了解决问题,您必须首先了解该问题。您需要进入用户的头脑并了解他们的想法。

无论您要构建用于财务,市场营销,销售,地质,物理学的软件,还是该软件支持的领域,您都必须成为该领域的一部分。

正是由于这个原因,除了获得计算机科学学位外,我还获得了商业学位。它极大地影响了我交流潜在解决方案和交付成功产品的能力。

如果您想了解有关雇用商务软件工程师的更多信息,请查看此商务工程师招聘广告样本,该样本是我为回答另一个问题而写的。


2
+1- 您的客户和利益相关者将期望您创建解决他们问题的方法,而不仅仅是“酷”的方法。
Karthik Sreenivasan 2012年

“如果您要为地质学家开发软件……”,喜欢这种说法。哪所大学?希望能够引用它!
Raj Rao

1
@RajRao不幸的是,我解释了一下,而且我不记得是从谁那里学到的。是美国怀俄明州拉勒米市怀俄明大学的Ruben Gamboa博士(uwyo.edu/cosc/cosc-directory/ruben/index.html)或William Spears博士(uwyo.academia.edu/WilliamSpears)。
jmort253

14

您可能会在没有太多领域知识或没有低级编码人员与客户联系的情况下幸存下来,但是软件架构师是非常熟悉领域并积极与所有利益相关者进行沟通的人。


2
+1-认为自己可以成为一名成功的建筑师而不了解领域是很天真的。如果可以的话,我会再次为您+1提及交流。太多的人在职业生涯中忽视了沟通的发展。
jmort253 2011年

11

我认为您是错误的,而且太天真了。

正如您的经理说的那样(有点轻率),任何人都可以在一周内学习技术。唯一能使您脱颖而出并对您有用的公司就是您的业务知识。而且难度越大,您的价值就越高。

显然,如果您发现该特定业务令人麻木,那么您可以寻找不同的东西。但是,如果您的天堂概念是一起黑客攻击小型php网站,请当心:将有成千上万的脚本小子也在这样做。

认真地说,“我只是一名编码人员,请不要将事实与我混淆”,这简直就是废话。


1
我同意这一点。如果您想在真空中进行编码,请回到学术界或在IBM,MS或Google等大型公司的研究部门找到一份工作。对于我们大多数人来说,现实是我们必须了解业务,特别是如果目标是成为一名架构师,而架构师从根本上将强大的开发人员和强大的BA结合在一起。
柯蒂斯·巴特

1
@Mayank,恕我直言,确实很难理解整个业务的细节,而且您真的应该期望随着时间的流逝自然地做到这一点。您所使用的系统中的每个元素自然都应该包含对业务的更多了解。当我在具有大量领域知识的行业中工作时,事情就是这样。
Carson63000

2
@Mayank,不,说这很难是不错的。当我到达目前的工作时,我的新同事告诉我,要想完全理解代码,就需要6个月的时间。现在,我已经快4年了,仍然在学习有关业务的新知识……
Benjol 2011年

1
如果可以的话,+ 1000。恕我直言,技术是容易/有趣的部分。
ozz 2011年

1
不,他不是不是天真。而且他的经理是一个长时间再次白痴,并应定期进行划着。
加拉夫

8

我也从事能源贸易。商业知识是工作的90%。您无法解决这个问题-这是一项复杂的业务。

如果您至少不了解交易的基本知识以及所从事的市场,那么无论您的编码员多么出色,都将在努力。

我与一些无法正确满足要求的学士学位一起工作。我需要依靠自己的分析能力和对业务知识的理解来完成工作。

我认为,如果您在一家出售Energy Trading软件的商店工作,您的经验可能会有所不同-但是在企业IT能源交易中,重点完全放在了解市场以及软件如何首先为业务问题提供解决方案上。

实际使用的技术和实现远不及第二。

上面发表Excel注释的人不知道他的注释有多合适。交易者经常在Excel / VBA中构建自己的小型交易应用程序(这就是他们所知道的全部),然后IT最终继承了这些混乱的程序。

我很想用一种“适当的”语言来重建其中一些应用程序,但这并不总是优先考虑的事情。


1
+1对于“复杂的业务” :)在此之前,我曾在银行领域工作,发现它变得更加有趣和容易。另外,就像您指出的一样,一切都在Excel中完成!
Mayank

6

如果您正在为业务而发展,那么最终将比公司中的任何其他人对业务规则有更清晰,更详细的想法。这不一定是因为您比每个人都聪明,而是因为这是您完成工作的唯一方法。

您的反应可能是“但是业务分析师会做什么?”

业务分析师与客户进行了长时间的会面,试图从他们那里获得对于开发人员来说足够清晰的需求。我看着他们必须与客户打交道的方式,并对我不必这样做感到感激。


2
等一下,业务分析师会获得明确的要求?那是一个很好的。我个人宁愿直接与最终用户打交道。
Christopher Mahan

@Christopher-我说“正在尝试”以获取要求:-)
Andrew Shepherd

确实你做到了。
Christopher Mahan

1
+1-业务分析师与客户进行了长时间的会面,试图从他们那里获得足够明确的需求以供开发人员使用。
Karthik Sreenivasan 2012年

6

我喜欢在软件开发和体系结构之间进行类比。两者都是应用艺术。两者都需要在心中进行精心的建模。适用于此问题的方面是,在没有商业知识的情况下编写软件就像在不了解居民的生活方式和需求的情况下设计建筑物。我认为我们中的许多人都已经看过(或什至居住过/工作过的)建筑物,这些建筑物看起来很漂亮,很现代,而从外部看不到,只是从内部无法使用。(在最坏的情况下,它们甚至都不是很好的:-(((()

更新资料

高拉夫的评论:

我很好奇的是,开发人员应该在多大程度上努力理解业务领域。他应该走一路还是要划清界限。

我认为您一般都无法在任何地方画线。除非存在应用程序/域的某些部分,否则您无需接触(因此了解)。从长远来看,这是恕我直言在现实生活中非常罕见的。应用程序中任何正在使用的部分都会收到错误报告和功能请求。领域也会发生变化,因为相应的立法,税收规则,政策,习惯-简而言之,是现实世界-发生了变化。软件中也必须遵循此步骤。

但是,即使没有外部更改请求,单元测试和重构旧代码也需要了解相关领域。否则,您只是“冻结”应用程序的当前行为,而不知道它是否正确。

更新2

如果开发人员经常更改他正在从事的业务领域怎么办?

当然,这意味着失去了用于获取业务知识的大部分投资(您的时间和您的雇主的金钱):-(如果您知道这将要发生,那么当然不值得深入研究一个特定的领域,但是请注意,领域并没有完全不同,存在可以在不同领域之间重用的基础知识,最重要的是,您获得的领域驱动设计方法是可重用的。


1
@Peter感谢您更新答案。我还有一个问题。我假定这个答案以及其他答案都假定开发人员将坚持一个业务领域,如果不是这种情况,那么当开发人员频繁更改他正在处理的业务领域时,情况会如何。我不确定世界其他地区,但这在印度非常普遍。例如。就在去年,我从CAX域切换到了Marketing域,并且可以很好地切换到其他域。
加拉夫

2
@Gaurav,这当然意味着失去了用于获取业务知识的大部分投资(包括您的时间和您的雇主的金钱):-(如果您知道这将要发生,那么当然可能不值得挖掘–太深了特定的领域。但是请注意,领域并不完全不同,存在可以在不同领域之间重用的基础知识,最重要的是,您获得的领域驱动设计方法是可重用的。
PéterTörök

@Peter再次感谢。我会投票赞成您的答案,但显然您只能投票一次(愚蠢的规则)。如果您不太麻烦,可以再提出一个意见,将其纳入您的答案中。
加拉夫

@Gaurav,做,很高兴我能帮助:-)
彼得Török

投票否决的原因是...?
彼得Török

2

我在银行业工作了十多年,开发交易应用程序,并同意对于开发人员来说,很好地了解业务非常重要。但是,一次又一次地,在面试过程中,如果此人对业务没有很好的了解,他们就不会进入门。

这导致这些人开发了许多关键的应用程序和系统,这些人具有丰富的业务知识,但技术技能却不高。这些系统的设计总是糟糕透顶,经常崩溃,到处都是bug,无法扩展,几乎不可能在不破坏某些东西的情况下进行修复,那就是该项目最终由于技术能力不足而最终没有被取消投入生产。

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.