代码简洁性 » 工程师态度
管理同意
为了提供最佳体验,我们使用诸如Cookie等技术来存储和/或访问设备信息。同意这些技术将允许我们处理数据,例如在本网站上的浏览行为或唯一ID。不同意或撤回同意可能会对某些特性和功能产生不利影响。
功能性
功能性 始终活跃 技术存储或访问对于明确请求订阅者或用户使用特定服务的合法目的是绝对必要的,或者仅用于通过电子通信网络进行通信传输的唯一目的。
偏好
偏好 技术存储或访问对于存储订阅者或用户未请求的偏好的合法目的是必要的。
统计
统计 技术存储或访问仅用于统计目的。技术存储或访问仅用于匿名统计目的。没有传票、互联网服务提供商的自愿合规或来自第三方的额外记录,仅为此目的存储或检索的信息通常无法用于识别您。
营销
营销 需要技术存储或访问来创建用户配置文件以发送广告,或在网站或跨多个网站上跟踪用户以实现类似的营销目的。
管理选项 管理服务 管理{vendor_count}供应商 阅读更多关于这些目的 接受 拒绝 查看偏好 保存偏好 查看偏好 Cookie政策 {title} 印记
代码简洁性
代码简洁性:工程师态度
2009年8月20日 by Max Kanat-Alexander
每个工程师在每个工程领域都应持有的态度是:我可以用正确的方式解决这个问题。
无论问题是什么,总有一种正确的方式来解决它。正确的方式可以被知晓,并且可以被实施。不实施正确方式的唯一有效理由是缺乏资源。然而,你应该始终考虑到正确的方式确实存在,你能够用正确的方式解决问题,并且如果有足够的资源,你会用正确的方式解决问题。
“正确的方式”通常意味着“考虑到所有合理可能的未来事件,甚至是未知和不可想象的事件的方式。”
一座能够承受任何合理可能的环境条件或任何合理可能的交通量而无需持续维护的桥梁,就是以“正确的方式”建造的。
保持简洁性同时提供合理可能的未来增强所需灵活性的软件代码,就是以“正确的方式”设计的。
有很多无效的理由不按正确的方式解决问题:
-
我不知道正确的方式。 通常这只需要更多的理解或研究,来找出正确的方式。当我遇到这种情况时,我会暂时离开问题,然后通常在我散步时或第二天回来时会想出解决方案。我尽量不因为还不知道正确的方式而妥协于不正确的方式。
-
团队无法就正确的方式达成一致。 有时一群人争论什么是“正确的方式”,话题变得非常混乱。团队不擅长做决策。正如我们所知,你不通过委员会来设计软件,我怀疑其他工程领域的“委员会设计”同样糟糕。这里的解决方案是指派一位经验丰富且值得信赖的工程师,他理解你所从事领域的基本法则,可能在仔细研究现有论点并收集相关信息后,遵循标准、有效的工程程序,自行决定正确的方式。
-
我现在太懒/累/饿/混乱,无法以正确的方式做这件事。 这种情况每个人都会偶尔遇到。现在是凌晨1点,你已经连续工作了15个小时,你只需要这该死的东西现在就能工作!然而,休息一下,稍后再回来。世界不会终结,问题仍然存在并且稍后可以解决。去睡觉,去吃点什么,散散步——做任何需要做的事情来进入一个愿意以正确方式解决问题的心理状态,然后回来。如果你处于无法以正确方式解决问题的状态,那么真的是时候休息一下了。如果你这样做,你并没有玩忽职守——你实际上是通过说“这需要做对,而现在做对的方式是休息一下稍后再回来”来正确地为项目的成功负责。
大多数情况下,这一切只需要持续不断地相信自己能够以正确的方式解决问题。
-Max
分享 点击在Facebook上分享(在新窗口中打开) Facebook 点击在LinkedIn上分享(在新窗口中打开) LinkedIn 点击在Hacker News上分享(在新窗口中打开) Hacker News 点击在Reddit上分享(在新窗口中打开) Reddit 点击在Threads上分享(在新窗口中打开) Threads 点击在X上分享(在新窗口中打开) X
41条评论 发表回复
G 说:2009年8月20日下午12:09 “……甚至是未知和不可想象的事件。” 那些不存在,因为我相当自信我超强的想象力可以梦想出所有事情 回复
Max Kanat-Alexander 说:2009年8月20日下午2:24 哈哈哈。嗯,在工程中有时谦虚一点是有好处的。-Max回复
dinesh from india 说:2018年8月17日上午6:13 这对我非常有用,Max先生回复
John Dowdell 说:2009年8月20日下午2:13 强烈不同意“只有一种正确方式”的方法。我们人类太容易犯错,无法从所有角度预测所有未来。 有多种正确的事情可以做,它们随着你如何看待问题而变化。 “缺乏资源”也转化为“成本不敏感”,而成本几乎总是每个问题的一部分。 让许多眼睛看!从多个角度思考!识别许多需求和风险,并通过各种方程平衡它们!这些思维方式比坚持只有一种“正确方式”存在而其他任何方式都是“错误方式”更现实。回复
Max Kanat-Alexander 说:2009年8月20日下午2:28 嘿John。是的,我们在这里遇到的是英语固有的混淆。“the”确实意味着“那个特定的”,但当然对于任何给定问题总是有无限多的解决方案。有些会更正确,有些会更不正确。 问题基本上是“a right way”听起来很奇怪并且会令人困惑——工程师倾向于说“the right way”,所以我用了那个。(“a”意思是“任何一个”,而“the”意思是“那个特定的”。) -Max回复
John Dowdell 说:2009年8月20日下午4:43 抱歉如果我太急了。如果我们在谈论“稳健设计,为意外情况做计划,不走捷径,向前看”,那么我绝对支持你,谢谢。jd回复
Max Kanat-Alexander 说:2009年8月20日下午5:26 是的,那绝对是我们谈论的!-Max回复
fantasai 说:2009年8月20日下午3:33 “正确的方式”通常意味着“考虑到所有合理可能的未来事件,甚至是未知和不可想象的事件的方式。”一座能够承受任何环境条件或任何交通量而无需持续维护的桥梁,就是以“正确的方式”建造的。 作为一名结构工程师,我不会称那座桥梁是以“正确的方式”建造的。我会称那座桥梁是过度设计且浪费资源的。那里的每个高速公路立交桥都不是设计来承受10.0级地震同时遭受飓风、 bumper-to-bumper交通和龙卷风的——而且有充分的理由。 工程不是寻找终极答案,而是寻找对多个约束的优雅解决方案,而成为一名优秀工程师的一部分是知道如何选择正确的约束集。回复
Max Kanat-Alexander 说:2009年8月20日下午3:38 嗯,通过“任何环境条件”我意思是“桥梁环境中合理可能发生的任何条件”。显然所有这些事情发生在同一座桥梁上的可能性极小,所以你采取合理可能的,而不仅仅是“可能发生的任何事情”。-Max回复
Max Kanat-Alexander 说:2009年8月20日下午3:40 我已经更新了帖子以使其更清晰。 回复
Vladimir Dzhuvinov 说:2009年8月21日晚上10:34 完全同意培养积极和放松的工程态度的重要性。 如果你是一名经理,你会设立什么激励措施,让你团队中的工程师感到有动力以“正确”的方式做事?回复
Max Kanat-Alexander 说:2009年8月21日晚上10:39 这是个好问题。我认为最简单的动机就是当人们确实以正确方式做事时,总是友善地指出来。我认为鼓励正确行为比攻击不正确行为重要得多,作为一名代码审查者,我个人花了太多时间纠正人们,所以我总是告诉他们他们做对了什么也很重要。-Max回复
Vladimir Dzhuvinov 说:2009年8月21日晚上11:33 所以,看起来我们应该只把负面反馈留给机器,人们最好用正面反馈服务 回复
Max Kanat-Alexander 说:2009年8月22日下午2:43 哈哈哈, exactly! -Max回复
Palani Nama 说:2009年8月27日晚上10:39 Max,如何确保我们不会以“正确方式”的名义过度设计。回复
Max Kanat-Alexander 说:2009年8月28日下午12:16 我实际上在我的书中谈到了这一点,我认为我在我的一个或两个博客中涵盖了相同的内容,尽管不如我的手稿中清晰。 你可以将其视为“合理可能”中“合理”定义的一部分。例如,有人使用不支持CGI标准的Web服务器是不合理可能的,所以我们在Bugzilla中不必关心这一点。试图考虑那一点将是过度设计。-Max回复
Wladimir Palant 说:2009年8月28日凌晨2:54 只是有时有些问题,“正确的方式”来解决它们根本就是不解决它们。不幸的是,偶尔我们没有选择(咳嗽…管理…咳嗽)。回复
Max Kanat-Alexander 说:2009年8月28日下午12:13 哈哈哈,没错!这就是为什么我很高兴我从事开源工作,大多数时候,如果我认为一个问题不需要解决,我就不解决它!-Max回复
Ben 说:2009年9月4日上午8:13 我认为我最常属于第三类,不按正确方式做事是因为我太懒 回复
Nishit 说:2010年1月18日晚上11:28 我真的对你的观点印象深刻。但对我来说,有时有些情况我们必须采取最佳可能方式或最方便的方式解决问题,由于可用资源,可能是任何形式,即缺乏人力或 prevailing conditions。所以,在我看来,最佳可能方式可能并不总是正确的方式……所以你的理论有很多例外……你怎么说??!!回复
Max Kanat-Alexander 说:2010年1月22日晚上7:49 嗯,我经常听到这个论点,但我认为“强迫”人们做“最方便的方式”的事情实际上比他们想象的要少“强迫性”。几乎总是有一种方法以正确的方式完成事情,特别是工程师多一点坚持而不是屈服于外部力量。 确实,有时你需要对某些东西做一个“快速 hack”,但之后你可以回去清理它,那仍然是正确的方式。-Max回复
Dhruv 说:2010年1月18日晚上11:34 我同意你的一些观点,除了一个——工程师不能在群体中做决策。 你说工程师不能做任何决定或不能找出问题的正确方式。所以,我想问你在公司或工厂或任何组织中召开会议的目的是什么???? 如你所说,工程师不能通过群体讨论决定或找出正确的方式。而这样的会议是为了纠正问题,而不是再次搞砸一切!!!!回复
Max Kanat-Alexander 说:2010年1月22日晚上7:51 这是个好问题。会议的目的是什么?在平均工程组织中有远多于应有的会议。有时它们非常重要,通知团队未来事情将如何发展,或者以便信息可以在团队成员之间共享。行政决策由团队领导基于会议上收集的信息做出。技术决策也可以由工程领导基于该信息做出。但做决定不是团队的工作——会议主要是为了共享信息。-Max回复
Vrajesh 说:2010年1月18日晚上11:43 我同意你的观点,但并非每个工程师都有那种态度。我正在学习工程。我的许多朋友试图以正确的方式解决问题,我不尝试这样做。很多时候当我告诉他们教我一点我不理解的时候,他们找借口不教,比如他们没有时间,他们也忘记了那一点,我以后教你。每个工程师认为他们的分支比其他更成功是正确的,即使我也相信它。很多时候当我们坐在一起小组学习时,但我们不能学习,我们开始互相取笑。你怎么看?回复
Max Kanat-Alexander 说:2010年1月22日晚上7:53 嗯,要做的事情是自己下定决心——这是以“正确方式”做事的第一部分——是采取自己的观察并据此行动。然后必须通过经验发展判断力,然后你可以决定什么是对什么是错。任何坐而论道而没有经验支持的人……嗯,他们通常可以被忽略。-Max回复
Aamir 说:2010年1月18日晚上11:52 我同意你的观点,但。我不同意你的第二个理由“团队无法就正确的方式达成一致”,因为有时群体讨论以简单的方式解决了许多难题。群体并不总是 fail in take dission。当你在生活中处于某些糟糕 situation 时,不与你的朋友交谈,并得到一些正确的方式摆脱生活中的这种糟糕 situation……你怎么说?回复
Max Kanat-Alexander 说:2010年1月22日晚上7:53 啊,是的,但仍然是你在做决定。群体对于协调和信息是好的。但他们不做决定——个人做。-Max回复
Rahul 说:2010年1月18日晚上11:58 从这个作为工程师态度,第一点我可以用我的方式解决这个问题,我真的很同意,因为不同的人在任何点上有不同的想法,并且也分享解决问题……通过决定我们甚至可以发现一些未知的问题或困难,那是工程师从未想过的????回复
Anand 说:2010年1月19日凌晨12:06 根据我的观点,在你的个人生活中,总是或大多数时候你有自己问题的解决方案,但在工程生活中,应该有解决方案,但不应该是正确的方式或不合适,那时我们必须对我们的解决方案感到满意,因为你有任何方式的解决方案总比你没有解决方案好……你怎么说回复
Max Kanat-Alexander 说:2010年1月22日晚上7:55 嗯,通常那是真的,“任何解决方案总比没有解决方案好”。但我认为有时工程师太容易放弃寻找理想解决方案——多一点思考,多几天研究,真的可以找到更好的东西,也许推迟解决问题直到你更确定最佳方式是什么更好。-Max回复
Ishit 说:2010年1月19日凌晨12:15 每个工程师应有的态度是“我已经以正确的方式解决了问题”。 但大多数工程师没有那种态度。你的一些观点是正确的,比如工程师不在群体中做决定,因为当我们在群体中做决定时,课堂上会产生很多类型的噪音。而且工程师学生以正确的方式解决问题是不真实的,因为如今在考试中分数重要,正确的方式不重要……回复
Max Kanat-Alexander 说:2010年1月22日晚上7:57 是的,不幸的是在学校里,人们经常重视他们的分数超过他们解决方案的实际正确性。但在实际工程中,没有“分数”,只有真实的解决方案。-Max回复
Sagar 说:2010年1月19日凌晨12:27 我同意你的观点,但我不能同意你的第二个理由,因为每个人对任何问题都有自己的观点,如果每个人在群体中解决一个问题,那么一个问题的许多答案会出现,那时你是对的,但如果一个人对那个问题没有想法,那么如果他去找群体并解决问题。所以根据我,群体讨论对工程师有帮助是正确的。回复
Max Kanat-Alexander 说:2010年1月22日晚上7:58 是的,群体讨论有时可能有帮助,但最终总是个人决定如何处理情况。当我不知道答案时,我也经常去找我的同行,带着问题。但当我修复问题时,如何使用这些信息取决于我。-Max回复
Chirag 说:2010年1月19日凌晨12:37 根据我的观点,为了以正确的方式解决问题,需要一些关于问题的知识。为了解决问题,你必须研究并理解问题。然后思考解决