EE与计算机科学:对开发人员的方法,风格有影响吗?[关闭]


11

与通过计算机科学进入该行业的软件开发人员(具有电子或其他工程背景的软件开发人员(软件工程师,建筑师,无论职称))之间是否存在系统性差异?

在电子领域,我指的是EE学位,或者是自学成才的电子修补匠,其他类型的工程师和实验物理学家。

我想知道是否会从对触发器,三态缓冲器,时钟边沿上升时间等方面的丰富知识进入软件制造行业,通常会导致在某些专业和缺乏条件下采用独特的方法来解决问题,思维方式或高级技能与具有抽象数据类型,面向对象,数据库规范等概念的计算机科学类型相比,他们会以编程语言来谈论“闭包”,这对烙铁人群来说是毫无意义的学习足够的编程。

我敢肯定,现实世界提供了各种各样的个别例外,但是在大多数情况下,您能否说出总体差异?这些会产生招聘影响吗,例如(组成某种东西)“从不雇用电子争吵者来进行数据库设计”?知道任何差异可以帮助求职者更有效地找到合适的东西吗?还是为那些发现自己不适合某个特定职位的人提供启发或一些实用建议?

(顺便说一句,我从未上过任何计算机科学课程;我对它们所涵盖内容的印象是模糊的。我自己是电子/物理/艺术类型。)

Answers:


5

我拥有EE辅修课程和CS主修课程,因此我在学术上都与这两个小组合作。我从来没有从事过设计EE风格产品的工作,但是我花了很多时间在像PLC这样的公司工作,因此能够(从教育背景)理解发生的事情是件好事。所以我不能说我对工作场所的行为和特征了解100%,但是我可以academic在一定程度上描述两者之间的差异。

电子工程师们倾向于专注于细节,他们倾向于知道具体的实现。如果不是100%可映射,则他们不喜欢它。EE人员将尽可能优化以删除不必要的细节。

SE人员倾向于喜欢逻辑的层次和分隔。SE员工不介意projects肿的项目。SE族倾向于以数学为导向。他们倾向于考虑方程式以及如何从模式概念解决问题。对于该组,联接更直观,例如数据库工作。SE越深入,您越倾向于看到能熟练使用函数式编程之类的人。对于EE人员而言,这不是安全的理由。

双方都知道诸如卡诺地图之类的东西,所以在这些地区有很多重叠之处。逻辑简化,诸如此类。

好的,这就是我的主观答案。希望能帮助到你。


这个答案使我对当前的项目有深入的了解。我需要换职业!
DarenW

1
除了关于函数式编程的部分外,我几乎100%同意您的看法。例如,我相信纯梯形图逻辑几乎是100%声明式语法。功能框图在EE中也很流行,它显然也具有功能。
Scott Whitlock

@Scott W.〜2个想法... ;)这是一个主观的答案,我被允许错了...关于功能逻辑,我的意思是像这样的lisp代码((lambda (arg) (+ arg 1)) 5)...他们的确会使用“相似”的东西,但是逻辑与EE相同吗?不在我的个人经验中。当然,我不知道有很多专业的芯片设计EE,我所知道的大多数都是服务人员。他们输入计算机终端的梯形逻辑看起来就像屏幕上的文字梯形。去搞清楚。
jcolebrand

1
我认为您在谈论的是诸如lambda等的功能结构,我也在思考诸如不变性和声明性语法之类的功能概念。我同意像monad之类的东西非常抽象。我认为EE通常不会遇到这种情况。
Scott Whitlock

我认为EE比SE族更容易碰到单子。Haskell甚至具有monad 扩展,它允许将monad建模为I / O模块,这是DSP工程师的基础。
Aditya

12

如果必须一概而论,这就是我的经验:

  • 工程师(或仅仅是EE的)往往在“小事的完美”方面做得更好。给定一个小的编程任务,他们会在所有极端情况下考虑很长时间并且很努力,并且更有可能最终开发出一款功能非常强大的软件。它通常由自上而下的“设计即万能”方法驱动,因为这是它们在硬件中所惯用的方法。它通常涉及状态机的使用,因为状态机习惯于为硬件设计状态机,并且符合“大设计”方法。另一方面,他们对可伸缩性或可维护性的考虑不多。

  • 您的传统开发人员更擅长管理大型复杂性,这主要是因为培训将问题分解为更小,更易于管理的部分。他们被教导要避免大的设计,而只是将关注点分开,编写测试并通过测试。通常,由于复杂性和时间的原因,有很多很少错过的边缘情况,但最终被掩盖了。开发人员倾向于利用它只是软件的事实,并且应该(或易于)对其进行更改。当EE与硬件一起工作时,它们没有这种优势,我认为过渡需要时间。

正如我所说的,这是我的普遍经验。并非在所有情况下都是如此。


很好的答案,两者之间形成对比。现在看看有多少其他人通过投票同意这是正确的或接近达成的。
DarenW

3

以我的经验-EE类型似乎在设计线性程序,而没有包含抽象层,CS类型似乎很适合。

没有评论质量差异或缺乏质量差异。


1

我怀疑您会发现,大多数人最终都从事几年的工作后,大多数人最终会从事的通常的业务或网络应用程序会与众不同吗?您列出的所有困扰“焊铁人群”的东西都是正常的编程技能。本质上,您是在回答自己的问题-没有编程背景的人可以学习编程,但是直到他们成为程序员为止。具有逻辑和分析能力的人会发现,学习编程的人比不懂逻辑的人要容易得多,这是我对于自学成才的电子产品修补匠唯一能想到的优点。

计算机科学(与计算机工程相对)主要是数学,因为(在更高层次上)还有其他各种科学,例如物理-但它是一种截然不同的数学。如果您完成了一门不同的科学,那么您还将完成数学,因此应该发现有可能与没有数学背景的人有所不同。当然,很少有程序员真正需要了解集合论,big-O或其他任何东西-肯定不是高水平的。


有趣的答案。我可能对电子技术人员的编程技巧不屑一顾-经验丰富的技术人员可以在从虚拟人到摇滚明星的范围内的任何地方。您是否可以说EE可以比专业软件人员更容易学习电子技术,因此可以将其学习到专业水平的编程?
DarenW

1

我从BSEE开始,然后开始为大型电话研发实验室设计逻辑电路,(大约40年前)意识到我所构建的大部分最终都可以通过计算机程序来完成。所以我回去并获得了MSCS学位。

我一直对计算机体系结构以及在硬件级别发生的事情感兴趣。我的大部分职业生涯都花在了嵌入式微控制器系统的设计上,在该系统中,我试图找到硬件和固件之间的最佳匹配。但是,我已经做了很多Web编程和一些数据库设计。

没有我在CS方面的背景,我认为掌握更多抽象概念会遇到更多麻烦。除了许多不同的汇编语言之外,我还使用了C,C ++,C#,Pascal,Delphi,Perl,PHP和一些Lisp。我目前正在尝试学习Ruby和Python。我对OO设计很满意。函数编程我还不是。

对于数据库相同。我了解标准化。我在一些比较深奥的JOIN上遇到了麻烦,请避免使用它们。除非我了解引擎盖下发生的事情,否则我对某些事情不太满意。

我希望能够“看到”计算机在脑海中如何运行程序。


1
“除非我了解引擎盖下发生了什么,否则我对某些事情并不真正满意。” -这是负责任的工程​​的标志。+1,先生。
luis.espinal 2011年
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.