代码简洁之道:工程师的正确态度与技术实践

本文探讨工程师应具备的正确态度,强调用正确方式解决问题的重要性,涉及技术债务、代码设计原则及实际开发中的技术决策考量,对软件开发实践具有指导意义。

代码简洁性

工程师态度

每位工程师在任何工程领域都应具备的态度是:我能够以正确的方式解决这个问题。

无论问题是什么,总有一种正确的解决方式。正确的方式可以被认知,也可以被实施。唯一不实施正确方式的正当理由是资源不足。然而,你应该始终考虑到正确方式确实存在,你能够以正确方式解决问题,并且在资源充足的情况下,你会以正确方式解决问题。

“正确方式”通常意味着“考虑到所有合理可能的未来事件,甚至未知和不可想象的事件的方式”。

一座能够承受任何合理可能的环境条件或交通量而无需持续维护的桥梁,就是以“正确方式”建造的。

在提供合理可能的未来增强所需灵活性的同时保持简洁性的软件代码,就是以“正确方式”设计的。

有许多无效的理由导致不以正确方式解决问题:

  • 我不知道正确方式:通常这只需要更多的理解或研究来找出正确方式。当我遇到这种情况时,我会暂时离开问题,往往在散步时或第二天回来时想出解决方案。我尽量不因为还不知道正确方式而妥协于非正确方式。
  • 团队无法就正确方式达成一致:有时一群人争论什么是“正确方式”,导致主题变得非常混乱。团队不擅长做决策。众所周知,你不通过委员会设计软件,我怀疑其他工程领域的“委员会设计”同样糟糕。这里的解决方案是指派一位经验丰富、值得信赖的工程师,他理解你所从事领域的基本法则,可能在仔细研究现有论点并收集相关信息后,遵循标准、有效的工程程序自行确定正确方式。
  • 我现在太懒/累/饿/混乱,无法以正确方式做这件事:每个人都会时不时遇到这种情况。现在是凌晨1点,你已经连续工作了15个小时,你只需要这该死的东西现在就能工作!然而,休息一下,稍后再回来。世界不会终结,问题仍然存在且可解决。去睡觉、吃东西、散步——做任何需要的事情来进入愿意以正确方式解决问题的心理状态,然后回来。如果你处于无法以正确方式解决问题的状态,那么确实是时候休息了。这样做并不是渎职——你实际上是通过说“这需要正确完成,而正确完成的方式现在是休息一下稍后再回来”来正确承担项目成功的责任。

最重要的是,它只需要你持续不断地相信自己能够以正确方式解决问题。

  • Max

评论

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级地震同时遭受飓风、拥堵交通和龙卷风的——而且有充分理由。 工程不是寻找终极答案,而是寻找对多重约束的优雅解决方案,成为优秀工程师的一部分是知道如何选择正确的约束集。

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 哈哈哈,没错!-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 嗯,我经常听到这个论点,但我认为“强迫”人们做“最方便方式”的事情实际上比他们认为的“强迫性”要小。几乎总有一种方式以正确方式完成事情,特别是工程师多一点坚持而不是屈服于外部力量。 确实,有时你需要对某些东西做“快速黑客”,但之后你可以回去清理它,那仍然是正确方式。 -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 我同意你的观点,但。我不同意你的第二个理由“团队无法就正确方式达成一致”,因为有时群体讨论以简单方式解决了许多难题。并非所有时间群体在决策中都失败。当你生活中处于某些糟糕处境时,不与朋友交谈并从生活中走出这种糟糕处境的正确方式……你怎么说?

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 根据我的观点,为了以正确方式解决问题,需要一些关于问题的知识。为了解决问题,你必须研究并理解问题。然后思考解决

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计