当前位置: 首页 > 科技观察

不要责怪程序员——都是PM的错

时间:2023-03-13 12:23:28 科技观察

现在有很多糟糕的软件。不可靠、不稳定、不安全、不可用。软件太烂了,有人呼吁规范软件开发,限制专业软件开发人员为“??软件工程师”,让软件工程师保持专业水准,避免被指责疏忽或玩忽职守。认证方式可以保证每个开发软件的人都具备一定的知识和能力。但是,专业开发人员也不能保证提供优质软件。即使训练有素、经验丰富且敬业的开发人员创建了软件,也不能保证它一定是好软件。这是因为大多数影响软件质量的决策不是由开发人员做出的,而是由业务中的其他人做出的。(本文提到的几个原因《软件开发项目失败的3个原因》)产品经理和产品负责人,项目经理和项目经理,执行发起人,CIO和CTO,以及工程副总裁。这些人决定什么是重要的,什么该做,什么不该做,以及由谁来做——哪些问题需要最好的人来解决,哪些工作可以外包以节省资金。决定雇用和解雇的人就是决定在培训和工具上花费多少的人。经理——而不是开发人员——决定了公司对质量的选择——它必须是完美的,“几乎”就可以了。管理失误作为管理者,我在职业生涯中犯过很多错误和错误的决定。降低成本不需要长期质量。为球队签约但无法在截止日期前完成合同。让营销人员控制日程安排和优先级,挤出更多功能来让客户和营销经理满意。不管开发人员和测试人员告诉我什么,软件还没有准备好,也没有足够的时间让他们把事情做好。不管技术债务的增加。坚持现在或永远不交付,但后来莫名其妙地钉上了它。我从这些错误中吸取了教训。我觉得现在我知道构建好的软件需要什么了。我会坚持这些概念。然而,我时常看到其他经理犯与我相同的错误。即使是世界上最大、最成功的科技公司——微软和苹果也不例外。这些巨头可以控制趋势的方向。他们可以决定要创建什么以及何时发布。他们拥有世界上最优秀的工程人才。他们拥有金钱可以买到的所有好工具——如果他们需要更好的工具,他们可以自己编写。他们知道如何正确地做事,而且他们有资金和规模来应对每一个挑战。他们应该编写漂亮的软件。使用他们的软件应该是一种乐趣。但实际上并非如此。这不是工程师的错。Microsoft质量Microsoft的软件质量问题已经存在了很长时间,以至于“Microsoft质量”已成为“刚好”可以接受的软件的公认术语——即使有时它不是那么好。即使在微软成为全球主要供应商之后,质量仍然是一个问题。《Computer World》在2014年发表了一篇名为《At Microsoft, quality seems to be job none》的文章,抱怨早期版本的Windows10存在严重的质量和可靠性问题。Windows10原本应该代表微软在其新任CEO领导下的翻天覆地的变化,一个弥补过去错误并把事情做好的机会。那为什么还有问题呢?由于一直推崇的“差不多”的软件文化和传统,微软似乎深陷困境,无力改善局面,尽管他们已经意识到“差不多”的概念已经不适合这个时代。这是一个深刻的企业和文化问题。这是一个管理问题。不是工程师的问题。苹果的软件质量问题苹果和微软专注于不同的技术领域,主要靠设计和工程上的卓越来赚钱。但在软件方面,苹果并不比微软好。从AppleMaps,到iTunes和AppStore问题不断出现,iOS安装无法更新,iCloud数据丢失,严重的安全漏洞,无意义的错误信息,以及莫名其妙的使用限制,Apple软件在很多基本的地方都存在。以尴尬的方式令人失望。和微软一样,苹果的管理层似乎也迷失了方向:我担心苹果的领导层没有意识到软件缺陷造成的声誉损害的严重性,因为如果他们意识到了,他们将不得不做出重大改变以避免这种情况发生。但不是现在,相反,多个产品线的更新步伐似乎在扩大和加快。我怀疑Apple软件的快速下滑表明Apple过于优先考虑市场:每年发布一个主要的新版本显然是工程团队跟上速度的必要条件,而保持质量是不可能的。也许你认为这是一个工程问题,但我怀疑它不是-我怀疑任何工程团队都能够在保持时间的同时保持更高的质量。MarcoArment,《Apple has lost the functional high ground》,2015年1月4日在今年的WWDC上,最新公告显示Apple将给予更多时间来确保其软件的质量。我们预计这可能表明管理层已经开始了解质量和可靠性的重要性。高管:请不要犯同样的错误。如果像微软、苹果这样的超级公司,拥有那么多的人才和资金,还不能创造出高质量的软件,我们这些小虾米怎么能做到呢?很简单。不要再犯同样的错误:上市速度和成本高于一切。像敢死队一样推动团队在最后期限前完成任务。喊着冲刺的口号:苛求速度,不给团队正确做事的时间,也不给他们停下来反思和改进的机会。虽然我们必须在截止日期和预算内工作,但在大多数情况下,企业仍有空间。当您在谈判截止日期或成本时遇到困难时,敏捷方法和增量交付提供了一条出路。如果你不能说不,那么你可以说“还没有”。无私地确定工作的优先级,确保尽快发布重要的事情。由于这些事情的重要性,确保你做对了是很重要的。从头到尾拒绝测试。也就是说,结束之后,依然会有bug没有修复。这也意味着交货延迟,因为有太多的错误。有纪律的敏捷实践依赖于编码过程中的测试和修复。TDD甚至会强制您在编写代码之前进行测试。持续集成确保代码在每次检查时都能正常工作。也就是说,不要让虫子有任何可乘之机。不与客户交谈,不及早测试想法。不了解他们为什么需要软件、如何使用软件、喜欢软件的哪些方面以及讨厌软件的哪些方面。逐步发布并获得反馈。根据反馈采取行动并改进软件。反复。忽略了基本的良好工程实践。表现得好像您的团队不需要做这些事情,或者没有能力或时间去做这些事情,尽管我们早就知道正确地做事会更快地开发出更好的软件。作为项目经理或产品负责人或企业主,您不需要成为软件工程方面的专家,但如果您对软件的构建方式和应该如何构建的基础知识没有充分的了解,您无法做出明智的决定。权衡决定。关于如何做好软件开发的信息很多,没有理由不学习。忽略警告标志。当开发人员告诉您什么不该做、什么不该做或什么必须做时,请听取他们的意见。开发人员通常不想与人交谈。因此,当他们告诉您他们不会做某事或不应该做某事时,请注意。当你犯错时——不要否认,你会犯错,从中吸取教训,不要浪费这次学习的机会。当出现问题时,让团队进行审查以找出问题所在、原因以及如何做得更好。从错误审查和测试中学习。认真对待负面的客户反馈。这是非常重要的信息。所以要注意。作为管理者,你能做的最重要的事情就是不要带领你的团队走向失败。要求不高,对你的要求也不高。翻译链接:http://www.codeceo.com/article/donot-blame-programmer.html英文原文:Don’tBlameBadSoftwareonDevelopers–BlameitontheirManagers