达茂旗信息网
日期归档
热点专题 当前位置:首页 > 热点专题 > 正文

50 年的软件开发经验带给我的 63 个启示

原创标题:50年软件开发经验的63条启示

能在技术圈工作50年的开发人员是极其宝贵的。本文作者卡尔威格斯就是这样一位经验丰富的软件行业从业者。在过去的50年里,他已经积累了63条启示,并整理出来与大家分享,希望能给你启发。

Author | Karl Wiegers,Translator |香槟超新星

Editor | Tang

Head Chart | CSDN下载自东方IC

以下翻译:

1970年,我在大学里上了第一堂编程课(当然,我学的是FORTRAN)。在过去的半个世纪里,我花了很多时间从事软件工作:需求、设计、用户体验、编程、测试、项目管理、编写文档、领导过程改进、写7本书和许多文章、咨询和培训。

当然,在这个过程中,我也完成了一些分支任务,比如读有机化学博士(我论文的三分之一是计算机代码)和做几年研究员。但基本上,我是软件行业的人。

在这么长的时间里,我积累了很多关于软件行业的意见。在这篇文章中,我将与你分享63条启示,也许你会发现它们和我一样有用。

关于需求

1。如果你不理解需求,你就不能很好地完成项目的其余部分,最终你会失败。

2。午饭后你在桌子上发现的便利贴、保存下来的语音邮件和电子邮件,以及你记得的在似是而非的走廊里的随意交谈,都不是真正需要的。这只是一堆信息。

3。对于所有的项目涉众来说,利益的交集最经常出现在需求过程中。

4。如果没有对高质量的需求,涉众可能会对最终交付感到惊讶。在软件中,事故几乎总是坏消息的同义词。

5。在探索需求时,请不要只考虑当前用户。你以前的客户仍然是你的客户。

6。人们不应该只是“收集”需求。需求获取是一个探索、协作、发现和发明的过程,而不仅仅是简单的收集。商业分析师不仅仅是作为一个抄写员工作。

7。需求获取的目的是使客户的声音或挥发性有机化合物尽可能靠近开发商的耳朵或开发商的耳朵EOD。商业分析师帮助缩小沟通差距。

8。对于需求获取,人们通常寄希望于两种方法:“心灵感应”和“千里眼”。但两者都没用。

9。不管我们的文化如何宣称,顾客并不总是对的。但是顾客总是有他自己的观点,你必须理解并尊重这个观点。

10。需求开发需要迭代。你不能指望在第一次讨论中得到所有的要求。你知道,你可能永远不会完全明白。有效的需求开发包括细节和清晰度的逐步改进。

11。不要害怕记录需求。与获取知识的成本相比,记录知识的成本非常低。

12。如果需求中没有描述某些功能或特性,没有人希望在产品中看到它。

13。需求开发的可交付成果不仅仅是一组书面需求,而是一个共识和一致的期望。

14。对于需求开发来说,实际的目标不是所创建的需求有多完美,而是所创建的需求足以使团队在可接受的风险水平上进行构建。这种风险存在于由于忽视、不必要、不完整、不明确或沟通不良的输出需求而不得不执行太多计划外返工的情况中。

15。有时我们更随意地表达我们的需求,因为我们假设读者有一个与我们相似的“理性过滤器”,但是人们经常以不同的方式解释相同的陈述。这种模糊会导致期望不匹配和意外交付。

16。保持需求工作室和审计团队规模较小。一大群人对是否离开着火的房间意见不一,更不用说要求的措辞了。

当有人提出新的要求时,首先要问的问题是:“这在我们讨论的范围内吗?”如果是这样,就必须解决。如果没有,那么这个问题就不会得到解决,至少现在不会。然而,如果答案是“不,但我们应该注意这个问题”,那么你必须调整范围以适应它。这将对成本、进度、资源、参与、优先级和利益权衡产生影响。

18。如果你没有一个文件化的和一致的项目范围,你怎么知道你是否正在经历范围扩展?

19。当决定在产品或迭代中包含哪些特性时,请避免“分贝优先”(通常称为按噪声分布)的做法。从商业角度来看,声音最大的客户所要求的功能不一定是最重要的。

20。项目涉众必须能够理解讨论可能的需求和承诺将它们包含在产品中是有区别的。

21。当你听到“假定需求”和“隐含需求”这两个术语时,你必须保持警惕。应该努力清楚地传达对需求的期望。

关于项目管理

22。“项目管理”不是指特定的活动。项目管理是人员管理、需求管理、风险管理、机会管理、期望管理、承诺管理、变更管理、资源管理和供应商管理的混合体。

23。为什么有些公司从来没有时间制造好的软件,但他们总是找到时间、金钱和人力来弥补?这是一个谜。

24。每个人都喜欢认为他们的团队拥有顶尖人才,但事实是一半的软件开发人员都低于平均水平。这些人在哪里工作?

25。不要轻易评价任何人。如果有人让你评估,最恰当的回答是:“让我先考虑一下,然后再联系你。”

26。不管别人给你多大的压力,都不要做出你无法兑现的承诺。

27。如果你有令人信服的数据,而对方几乎没有数据,你将在谈判中占优势。

28。除非你把评估记录下来,并与实际发生的情况进行比较,否则你将永远是猜测,而不是评估。

29。仅仅因为你认为对方喜欢听好话,你就不能影响你对某人的评价。

关于质量和过程改进

30。关于软件质量:你可以现在或以后付给我钱,但是你必须付更多。

31。追求完美;追求卓越。

32。永远不要被你的老板或客户说服去做坏事。

33。质量应该是你的第一要务。高质量的自然结果是高生产率,因为团队不需要在返工上浪费太多时间。

34。尽一切努力让同行而不是客户发现缺陷。同行评审是一项有效的技术,可以提高质量和生产率。

35。如果和你打交道的人不讲道理,那么任何软件工程技术都是无用的。

36。当人们被要求改变他们的工作方式时,他们的本能反应是问,“这对我有什么好处?”但事实上这个问题是错误的。正确的问题应该是“这对我们的团队有什么好处?”

37。软件开发人员总是在寻找优秀的工具,但是记住,小傻瓜只有在拥有工具的时候才会变成大傻瓜。

38。当人们不知道当前工作方法造成的痛点在哪里时,就很难进行过程变更。就像人们不知道家里有老鼠一样,很难卖给他们更好的捕鼠器。

39。问:你需要多少软件程序所有者来更换灯泡?答:只需要一个,但前提是灯泡愿意更换。

40。在向新的工作方式发展的过程中,不要低估改变组织文化的必要性和难度。实施一个新的过程比灌输一种新的文化要快。你需要在这两方面都取得成功。

41。不管是好是坏,如果改进计划不能转化为行动,那也没用。

42。在许多情况下,常识、良好的判断和经验应该比正式程序更重要。然而,有时这个程序的存在是有充分理由的。在你决定绕过它之前,你需要调查一下。

43。在领导组织采用新的工作方法时,请继续施加温和的压力。

44.痛苦是改变人们工作方式的最佳动力。这不是人为的、外部强加的痛苦,而是当前工作方法给团队带来的非常真实的痛苦。选择最终会减轻痛苦的改进活动。

45。除非你花时间回顾、吸取经验教训并不断改进团队的流程,否则没有理由期待下一个项目会比上一个做得更好。

46。你不能一下子改变一切。确定将带来最大收益的流程变更,并在下周一实施。我没开玩笑:下周一!

47。在文档模板中使用“缩小以适应”的概念。从一个丰富的模板开始,提醒你更多地考虑可以包含哪些信息,然后根据每个项目的规模、性质和需求对其进行改造。

48。许多团队被要求事半功倍。然而,在正常情况下,他们没有办法事半功倍。如果没有相应的培训和流程改进来提高效率和有效性,不要期望更高的生产率会以神话般的方式出现。

49。适用于在同一办公室工作的四个人的非正式流程不能扩展到在不同大洲工作的多个开发团队。

50。如果软件行业有任何可复制的东西,那就是在一个接一个的项目上一遍又一遍地做同样愚蠢的事情。你需要复习来学习、理解和不断提高。

51。当人们不遵循既定的过程时,你面前只有三个选择:(1)让人们开始遵循这个过程;(2)调整流程,使其更加有效和实用,然后让人们跟随它;(3)放弃这个过程,不要假装你在遵循它。其他观点认为人工智能不能代替真实的东西。

53。在科技世界里,如果你比别人领先一周,那么你就是一个大人物。

54。今天的“必须马上修复”类型的开发项目将成为明天遗留系统维护的噩梦。

55。软件系统的许多问题出现在界面上:软件和软件,软件和硬件,软件和人,人和人。这些接口需要仔细研究。

56。人们总是过多地谈论他们的“权利”。每项权利的另一面是责任。我们应该以合作的态度思考和行动。

57。一盎司的设计相当于一磅的重建。

58。当心“商业周刊式管理”。仅仅因为有人阅读了它承诺的优秀结果,他们就匆忙采用了软件开发中最热门的新事物。

59。拇指和食指之间保持一英寸。在大多数情况下,这是质量和垃圾的唯一区别。再多听一点,检查你的工作,再次运行测试,参考列表,阅读说明,再问一个问题。通常,这是改善垃圾的唯一方法。

60。你没有时间重复那些软件从业者以前犯过的错误。阅读并尊重文学。向你的同事学习。慷慨地与他人分享你的知识。

61。计算技术可能占软件开发的50%,而通信占其余的50%。但是商业分析是关于交流的。我们必须在计算中考虑更多。

62。如果你想成为一名独立的顾问或承包商,那么你需要向世界宣布你是自由的。如果没人认识你,你的商业能力有多好并不重要。

63。在软件行业,我们经常假装。我们假装已经找到了理解他们的业务目标和需求的合适的利益相关者。我们假装正确的人向我们传达了正确的要求,我们理解并准确地记录了它。我们假装我们的评估是准确的,我们已经考虑了所有必要的任务。我们假装所有可能损害我们项目的风险都不会真正出现。我不喜欢假装。有时候,我不太喜欢现实,但是我除了现实什么也没有,所以我必须面对现实。我们别假装了。

English: 63教训来自50年的软件经验

original:

author profile:Karl Wiegers,作者,写作内容涵盖软件开发和管理、咨询、自我完善、化学、军事历史等领域,目前正在写一部推理小说。译者:香槟超新星?一篇万字好文章:推荐收藏智能契约编写的稳健性编程策略。回到搜狐看更多“负责任的编辑”:

五月色影音先锋



达茂旗信息网 版权所有© www.yaochina.com.cn 技术支持:达茂旗信息网 | 网站地图