做"足够好"的软件的后果

yoi*_*cis 11 language-agnostic

做"足够好"的软件会不会让你成为程序员?

以下是我对此的看法:

来自JoelOnSoftware的Joel Spolsky说,程序员感到厌倦,因为他们"足够好"(即使它们没有经过优化也能满足要求的软件).我同意,因为人们喜欢做一直都是正确的事情.在光谱的一侧,我想要:

  1. 以这样的方式优化软件,我可以尽可能地应用我在大学时获得的数学和计算机科学的所有知识.
  2. 所有可能的软件开发过程都说:从一个存储库中获取规范,生成代码,构建,测试,在一个自动构建步骤中完成手册部署.

另一方面,对我们人类的一个特点是我们喜欢变化.为了让我们保持吸引力(热爱编程),我们需要从一个项目或技术跳到另一个项目或技术,以便我们不会觉得无聊并且"有趣".

如果您作为程序员或人类为您做"足够好"的软件有任何好的或坏的副作用,我想您的意见?

pax*_*blo 21

我实际上认为足够好的程序员比蓝天可靠 - 一切都很完美.

那是因为,虽然我是一名程序员,但我也是一名商人并且意识到程序并不是程序员满意,而是满足特定的业务需求.

我实际上在另一个问题上有一个争论,即关于检测一个tic-tac-toe/noughts-and-crosses游戏的最佳方法(面试问题).

我收到的最好的解决方案来自一位候选人,他只是通过if陈述检查所有8种可能性.有一些提供了一个通用的解决方案,虽然可行,但完全没有必要,因为规格很明确,它只适用于3x3电路板.

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

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

  • 我认为只有"只满足业务需求"的方面,从不"满足程序员"方面,优秀的程序员将离开,复制粘贴程序员将留下来.必须保持平衡. (9认同)
  • 我认为编程与电影有同样的问题.制片人想要钱,导演想要美女,观众想要娱乐.由于制片人是掌握现金的人,导演必须说服他,观众希望他的工作能够按照他的意愿行事. (9认同)
  • 从业务角度来看,这是一个明显的问题,那么你是否认为3x3 tic-tac-toe是这个人需要解决的唯一类型的问题.如果是这样,那么对你很好.但是,如果他是那种能够解决每一个问题的人,就好像它是3x3 tic-tac-toe一样,那么雇用他的决定将比他在公司工作期间雇用他的成本更高. (6认同)
  • @FeatureCreep,如果程序员想要满足,那就是他们应该在自己的时间做的事情,而不是让公司付钱.您收到的工资(或费率)是对公司所需要的补偿.这种满足感(如果公司不想要它)与我在高尔夫球场度过的愉快的满足感并没有什么不同,但我不希望我的员工为此付出代价. (2认同)
  • @Pax,你说的与我的评论并不矛盾.我只是说 - 好的程序员如果有选择可能不会停留很长时间.如果经济不景气,他们将在经济好转后立即离开.所以我认为这是一个糟糕的策略.就这样. (2认同)
  • 忘记tictactoe,bods.这里的问题是遵循规范,没有一些程序员想要做的蓝天.没有征得许可.一切不符合业务需求的东西都是浪费精力.业务需求取决于业务,而不是编码器认为正确的业务需求. (2认同)

tva*_*son 16

作为一名程序员,我想编写一款无缺陷的优秀软件.我并不是特别感兴趣的是镀金,这是添加"改进"软件的不必要功能的行为,尽管我们都在一定程度上做到了.从这个意义上讲,我对"足够好"的软件感到满意,如果足够好你意味着我已经完成了客​​户的要求,同时也很好地制作了它并确保了它的高质量.

困扰我的是当我采取捷径并写出糟糕的,未经测试的代码时.我讨厌编写有缺陷的代码,或者我没有将它重构为更好的设计,因为我已经过去了.当我让很多技术债务陷入困境时 - 忙于编写新功能而不是不断改进旧功能,因为我正在添加新功能 - 然后我知道最终我会有一些东西,而客户可能是很高兴,我不会.

幸运的是,在我的工作场所,管理层知道保持代码清洁的价值,而且我知道不要过分追求完美的难以捉摸的目标.没有代码是完美的,但"足够好"必须意味着代码是精心设计的.我已经了解并且仍在学习,对满足客户要求的代码感到满意,并且最好的功能是不需要实现的功能.幸运的是,我有足够的工作去做功能,因为它们不需要是一件好事.


the*_*uck 8

根据我的经验,"足够好"总是包括黑客,邋,,糟糕的评论和意大利面条地狱,因此导致缺乏可扩展性,错误,懒散,并阻止其他人能够有效地建立你的工作.

Pax,虽然我认识到你关于商业需求和实用主义的观点,但"按书"做事是为了商业方面."现在已经足够了"和"只是让事情快速正常工作"总是会导致更多的工作时间来修复所有事情,或者直接重做它,而不是第一次正确地做到这一点."这本书"是出于某种原因而写的.