面试问题:软件工程与传统工程有什么不同? - hillelogram


我现在需要面试12位工程师,当然我已经了解了传统工程和软件工程的差异,学习了很多知识,但是当我真正进行面试时,遇到障碍,现在暂停面试了,软件与传统工程有什么不同?

1. 工程不是单一的。我们通常将软件与建筑桥梁进行比较,但这只是土木工程与电气,化学和工业工程师所做的完全不同。有一些相似之处,但也有很多种。

2. 工程领域也不是单一的。我和3位化学工程师谈过,他们作为工程师的工作非常不同。有些人像我们想象的那样苛刻和“严谨”。有些人“把它全部扔进锅里看看会发生什么。” 这都是工程!

3. 特别是在制作新东西,使现有的东西变得更好,维护,将经过验证的技术付诸实践之间存在很多差异......两个软件人员可以做很多不同的事情。这与传统工程相同。

4. 我们的软件民众有一些​​完全正确的概念。我们可以在大多数领域中以比人们更快的速度迭代软件。我从传统工程师那里听到的最快的是每日迭代。我们可以更快地推动修复。这有很大的不同。

5. 另一个事实:限制对我们来说不是一个问题。几乎每个传统工程都有一套他们必须预算的限制:功率,热量,体积,质量,流量......我们的约束(大多数)不是问题。而且我们不必担心几何或物理空间。

6. 我们认为软件有很多特别之处,但对所有工程都是通用的。需求一直在变化。人们一直有实施问题。人们关注的是两个设计:他们试图做什么,以及他们实际做了什么。

7. 另一个误解是:“传统工程师正在做现有工作,所有软件都是新的,不可预测的。” 一位面试者对此表示不满。他认为他在软件领域工作比他的传统·工程工作更可预测,更具有可知性。其实,所有工程师都在不断遇到新问题。

8.  我最喜欢的例子来自化学工程师。你可能会在你的产品中使用化学反应,但是当你试图将它扩大2倍时,新科学就会接管。而当你将它扩展2倍以上时,它会再次发生。一切都必须是每次都重新思考并重新尝试。

9. 第三个误解:“软件规则变化比其他领域快得多。” 在某些情况下,这是真的,在其他情况下并非如此。在某些情况下,软件更稳定:不会出现代工厂告诉你:“这个月我们生产的产量是一半,杂质是双倍”

10. 质量方面,我们都知道,相比容忍有缺陷的涡轮机,我们更能容忍有Bug的软件。部分原因在于,传统在设计和要求方面投入了大量资金:你可能会提升计划,产品才能更好。

11. 但软件在很多方面也做得更好。特别是,我们在流程上看起来好多了。我们更愿意创建能够提高工程设计能力的工具,部分原因是我们使用相同的技能来制作工具和产品。最好的例子是版本控制。

12. 几乎所有与我交谈的人都非常嫉妒版本控制。他们希望他们在传统工程中拥有它。与拉取请求和自动化测试相同。虽然传统制造出更好的产品,但由于工具不良和流程不佳,每单位时间的效率要低得多。

13. 由于这个原因,我与之交谈的大多数人在软件方面工作得比在传统方面更开心。更好的工作环境,更好的工作流程,更少的惯性和腐蚀。但大多数人也错过了专门的需求和设计时间,最重要的是 - 质量的社会重要性。

14. 几乎我所谈过的每个人都非常清楚:软件工程是“真正的”工程。它可能有不同的约束,可能不太成熟,但它仍然是“工程”。

补充:
1. 我10年已经学会了成为一名建筑师,并且作为开发人员工作15年。我很惊讶,上面没有提到我认为的最大区别:法律。建筑行业即使是最微小的事情也有法规。想象一下法律就是在一个函数中有的“if”语句,如果你犯错就会入狱。

2. 需要注意的事项 - BIM:建筑信息管理,建筑师工程师在建筑开发商和业主的建设中正在努力让IT流程深入参与建筑开发,施工和生命周期。

3. 要学习软件工程的第一件事是认识到它不是真正的工程。

4. 这就是为什么我和专业人士进行交谈的原因,以便他们可以谈论他们的第一手经历。据他们说,软件工程是工程。

5. 我们喜欢将自己视为工程师,但大多数其他工程领域都有比软件更严格的规则和预测结果。您发现每天都会发生破坏软件的bug错误,但是不用承担太多责任。

6. 土木工程中也存在技术债务,因为误解(例如加速腐蚀),维护或开发物理场地会变得非常困难 。

7. 我喜欢软件工程师一词,因为我实际上拥有工程学位。但是在软件开发方面没有太多的工程设计......它充其量只是一种黑暗的艺术。

8. 我学习计算机科学,编码软件15年,制作电子音乐15年 - 可以清楚地说是零差异:)最接近的是,当你在环境中运行音乐项目时,它会产生“感觉”;)

9. 我曾担任商业潜水员,后来由于医疗原因担任网络管理员......最困难的是习惯上班和做一份坐着的工作。从户外工作变成办公室工作是我生活中最大的错误之一......

10. 传统的工程师通常会受到更大的尊重......通常不会被视为建造机器人(码农?).....

11. 我有土木,机械和电子工程师资格,并且有趣的软件。它们都涉及相同的基本过程:识别问题,分析周围的约束,然后在给定范围内开发解决方案。这些学科只涉及不同的工具

12. 当我看到软件之外的工程错误修正时,我总是着迷。一个很好的例子是钢桥电缆,用塑料包裹,充满干燥氮气,以防止进一步腐蚀!软件工程师会想出什么?