您是否将其他专业的想法应用于软件开发?

时间:2008-09-22 21:51:58

标签: language-agnostic

软件开发社区始终对新想法持开放态度,以改进我们开发软件的方式,在我看来,我们比其他工程学科或专业更具创新性。

然而,如果我们相对年轻的行业未能从既定职业中学习,那将是不幸的。软件开发之外的人必须发现一些我们可以从中受益的好主意。

您能否描述一下您已成功(或不成功)应用于软件开发的其他专业所使用的任何想法,技术或流程?

18 个答案:

答案 0 :(得分:4)

精益开发是一个明显的选择,取自Toyota的制造业原则,以打击美国可能产业的规模经济。它非常适合敏捷软件工程框架

答案 1 :(得分:4)

这可能是一个延伸,但在玩乒乓球时我了解到,在你获得一些基本技能之后,你的大多数错误都来自于尝试比你实际上更好的比赛 - 去找你真的没有技能的抨击制作。玩保守游戏更安全,让其他玩家过度自我。

编码时,我尽量不要比我聪明。 (人们运行架构设计有助于此)。实现复杂的数据结构来管理脏读和缓存过期被快速击落,因为该功能是针对一部分用户的,并且不值得内存或开发人员资源。

我相信弗雷德布鲁克斯会把这称为第二系统综合症。

答案 2 :(得分:2)

心理学就是其中之一。它不仅可以激励自己和你的队友,还可以利用技术来了解客户的实际需求,而不是他所要求的。可用性是软件开发的另一个重要因素,它是面向人的因素。

软件可能是一门技术专业,但开发应用程序是人类应用程序。

答案 3 :(得分:2)

Eliyahu Goldratt有一本名为“The Goal”的书,这是一本关于优化工厂的新颖商业书籍。它有很多关于如何确定现实(或者至少质疑你自己的概念)的讨论以及瓶颈问题,这在整体可扩展性问题上非常有用。

答案 4 :(得分:2)

就个人而言,我发现在排除故障和调试时,数学和科学的背景非常方便。使用科学方法,强化对自己的严谨性,保持健康的怀疑态度,并始终回到“这个理论实际上是否能最好地解释观察到的证据?”的问题。有助于追踪根本原因,而不是被错误的线索跟踪。

答案 5 :(得分:2)

我几乎最终在中学教授信息通信技术。我学到了很多东西:

  • 即使老师仍然是学生 - 仍然在学习。
  • 最好的老师也是最好的学习者
  • 无论技能水平如何,你都可以从周围的人那里学到很多东西
  • 准备通常是成功的关键
  • 假设是所有f ** k-ups的母亲
  • 技术变化太快,无法跟上所有最新发展 - 承认你不知道一切。

答案 6 :(得分:1)

虽然不完全是专业,但我认为我们还需要从创意类型中提取。例如,作者通常会将自己锁定一段时间来不间断地进行写入。保罗格雷厄姆在Hackers and Painters

之间有很强的相似之处

答案 7 :(得分:1)

清单!他们不仅仅是飞行员:

The Power of the Checklist

答案 8 :(得分:1)

KISS( K eep I t S 实施, S tupid)原则适用于此处,就像它一样在我的机械工程研究中。就编码而言,开发人员和其他阅读代码的时间很可能比编写花费更多时间。因此,对于给定的问题,尽可能简单的设计有很大帮助。在这个领域的过度工程甚至会让原来的开发人员在未来三六个月的时间内抓住他/她的头,说:“为什么我这样做呢?”

只需我0.02美元。

答案 9 :(得分:1)

作为一名顾问,我学会了微笑并向用户提供他们要求的任何内容......

我无法在良好的公司中提及我之后对这种行为建模的职业。

答案 10 :(得分:1)

旧木工说“两次测量,一次切割”一直适用于我所从事的开发项目。为了在第一时间把事情弄清楚而付出代价。

答案 11 :(得分:0)

有太多无法计算,它们以各种方式相关联,使得问题有点夸张,因为编程本质上是逻辑和数学的混合,旨在与任何其他领域交互,为真实提供解决方案/自动化任务生活情境。但要提供这一点,你必须实现该域逻辑的很大一部分才能使某些东西变得有用。

因此,软件开发不是目的,它可能是一个解决方案,或者每个问题的解决方案都意味着来自域本身的概念。

我不知道我的答案是否涵盖了这个问题,因为它看起来有点过于笼统。

答案 12 :(得分:0)

设计模式最初由建筑师(即设计实际建筑物的人而非软件建筑师)使用。

答案 13 :(得分:0)

我花了14年时间从事工业工程类型效率研究。这教会了我如何采访人们获取信息,特别是当他们不合作时,以及如何从采访以外的来源获取信息(在收集需求时非常有用)以及如何分析思考,尤其是如何真正理解来自企业的数据观点和用户观点。这在设计数据库时特别有用。当你不得不从我在analast中使用的那么多设计不佳的数据库中提取数据时,你会了解哪些有效,哪些无效。与普通程序员不同,我使用了来自数千个不同数据库的数据。

答案 14 :(得分:0)

在某种模糊的意义上,建筑教会我从效率的角度思考。当你在工地上打包你的工作包,拖着木材,拖着电源线穿过凌乱的,未完工的房间和走廊,并且通常会把你的背部变成一大堆木材和胶合板进入房子,你很快就会学到一举一动make必须做一些有用的事情。当你有一个小企业主老板在你身后时,尤其如此,每当你从a点走到b点而没有随身携带东西时,他会大肆宣传他的钱。

在编程中,它通常可以是相同的。不过,不是为了挽回你的背,而是在努力节省时间。这采用易于维护和可重用的代码的形式。每当你创建一个新的函数来做一些与另一个函数类似的痛苦的事情,或者你创建一个新的类,可以很容易地从更通用的东西继承,但几乎相同,你就是在抢夺自己的时间和金钱,同样多仿佛一个成帧者来回做6次旅行,或者(很少)她可以做一次旅行。在这两种情况下,收益都是减少从事大型工作的时间,以及更富裕的老板。

答案 15 :(得分:0)

戴尔制造工厂的视频启发了基于队列的分布式内容聚合系统的架构。队列中的消息表示工作项,工作表,任务,部件等从站到站传递。

每个电台都代表了一种特定的工作刻板印象,每个电台都更新了工作表,然后再将信息转发回路由以便继续发送。

系统在第一次发布处理7年后仍处于生产状态,每小时处理约30,000个作业。

第一次看到系统“呼吸”是一个惊心动魄的时刻。

答案 16 :(得分:0)

好奇心和坚韧。

答案 17 :(得分:0)

任何类型的建筑活动 - 我总是惊叹于庞大的建筑(桥梁和建筑物),而不是伟大的软件。因为你总是有更多的机会进行测试(单位,压力,用户接受和很多质量检查),但想象你能做多少关于一个伟大的结构 物理和数学的良好背景肯定会提高你的编程技能