Language agnostic “行为的后果”;“够好了”;软件

Language agnostic “行为的后果”;“够好了”;软件,language-agnostic,Language Agnostic,做一个“足够好”的软件会让你成为一名程序员吗 以下是我的想法: JoelOnSoftware的Joel Spolsky说,程序员之所以感到厌烦,是因为他们做得“足够好”(即使没有优化,也能满足需求的软件)。我同意,因为人们总是喜欢做正确的事情。在光谱的一个方面,我想深入到: 以这样的方式优化软件,我可以尽可能地运用我在大学里学到的所有数学和计算机科学知识 执行所有可能的软件开发过程,例如:从存储库获取规范、生成代码、构建、测试、部署,并在单个自动化构建步骤中完成手册 另一方面,我们人类的一个特点

做一个“足够好”的软件会让你成为一名程序员吗

以下是我的想法:

JoelOnSoftware的Joel Spolsky说,程序员之所以感到厌烦,是因为他们做得“足够好”(即使没有优化,也能满足需求的软件)。我同意,因为人们总是喜欢做正确的事情。在光谱的一个方面,我想深入到:

  • 以这样的方式优化软件,我可以尽可能地运用我在大学里学到的所有数学和计算机科学知识
  • 执行所有可能的软件开发过程,例如:从存储库获取规范、生成代码、构建、测试、部署,并在单个自动化构建步骤中完成手册
  • 另一方面,我们人类的一个特点是我们喜欢多样性。为了让我们保持吸引力(热爱编程),我们需要从一个项目或技术跳到另一个项目或技术,这样我们就不会感到无聊,也不会有“乐趣”


    作为一名程序员或人类,我想听听你的意见,做“足够好”的软件是否有什么好的或坏的副作用?

    作为一名程序员,我想写一个没有缺陷的优秀软件。我对镀金不是特别感兴趣,这是一种添加不必要的功能来“改进”软件的行为,尽管我们都在一定程度上这样做。从这个意义上说,我对“足够好”的软件感到满意,如果你说的“足够好”是指我已经按照客户的要求完成了工作,同时精心制作并确保了它的高质量

    困扰我的是,我走捷径,编写蹩脚、未经测试的代码。我讨厌编写有缺陷的代码,或者在编写过程中未能将代码重构为更好的设计。当我让大量技术债务潜入——忙于编写新功能,而不是在添加新功能时不断改进旧功能——那么我知道最终我会得到一些东西,虽然客户可能会满意,但我不会


    幸运的是,在我的工作场所,管理层知道保持代码整洁的价值,我也知道不纠缠于难以实现的完美目标的价值。没有任何代码是完美的,但“足够好”意味着代码是精心编制的。我已经学会,而且还在学习,对满足客户需求的代码感到满意,并且认为最好的特性是不需要实现的特性。幸运的是,我有足够的工作要做,因为不需要这些功能是一件好事。

    < P>我实际上认为足够好的程序员要比蓝天好,确保一切都是完美多样的。 这是因为,尽管我是一名程序员,但我也是一名商人,我意识到程序不是为了满足程序员的需求,而是为了满足特定的业务需求

    事实上,我在另一个问题上有过一个争论,关于如何最好地检测赢了的tic tac toe/noughts和CROSS游戏(采访问题)

    我收到的最好的解决方案来自一位候选人,他简单地用
    if
    语句检查了所有8种可能性。有一些给出了一个通用的解决方案,虽然可行,但完全没有必要,因为规格非常明确,它仅适用于3x3板

    许多人认为我限制太多,“获胜”的解决方案是垃圾,但我的观点是,编写完美的、可扩展的软件不是程序员的工作。满足商业需求是他们的工作


    如果业务需要允许他们自由地做超出必要的事情,那很好,但大多数软件和修复程序都是在时间和成本限制下交付的。程序员(或任何职业)都不会在真空中工作。

    我认为“足够好”和糟糕的代码之间有很大的区别。对我来说,“足够好”就是满足需求(功能性和非功能性)。我认为人们认为“足够好”意味着走捷径或不优化代码是危险的。如果非功能性需求需要优化代码,那么这就是我对“足够好”定义的一部分。你问题的关键是如何定义“好”。对一个商人来说,“好的”软件就是解决商业需求的软件。在这种情况下,更多的是确保规范得到充分理解和正确实施。业务人员很可能不关心程序是否没有它可能的那么快或内存效率

    想想你使用的商业软件,它完美吗?我真的不认识任何人,包括我在微软的朋友,他们会说Windows中的代码是“完美的”或任何接近它的东西。但不可否认的是,Windows已经(而且一直都是)“足够好”让数百万人每天使用它

    这个问题可以追溯到编程之前很久。我相信你听过“如果它没有坏,就不要修理它”或法语原著“Le mieux est l'ennemi du bien”。伏尔泰可能写过“善是伟大的敌人”

    如果招聘经理决定不再雇佣“好”程序员,并坚持认为每个申请者在大学里都有4的平均成绩,那我就永远不会得到程序员的工作;p> 因此,对我来说,这是一个在时间和预算限制下尽最大努力的例子。有了更多的时间和金钱,我总能做得更好。

    旁观者眼中的“足够好”。很多时候,“足够好”是不称职的人的避难所,他们写的东西给人的印象是满足工作的要求。我的“足够好”不太可能和他们的“足够好”一样

    归根结底,我们所做的一切都必须权衡取舍。有些人会做出错误的权衡,交付蹩脚的软件和som