17611538698
webmaster@21cto.com

软件开发的四个基本要素

领导力 0 47 22小时前

导读:本文作者以在军队中对飞机的操作以及团队合作经验,由此结合到软件开发和团队合作过程,希望对各位朋友有所帮助。

图片
任何软件项目的成功都离不开对细节、团队合作、沟通和标准操作流程的重视。
这是我在军队中学到的。

在走着不断发出尖叫的海军陆战队训练教官、观看海军飞行员撞上钢制甲板以及一直担心因“胜利锦旗”而被责骂的过程中,我学到了一些关于编写优秀代码的宝贵经验。

1987年秋,我被任命为海军少尉。这份任命来源于我在航空军官候补学校(AOCS)接受美国海军陆战队枪炮军士伯恩哈德·琼斯(Bernhard Jones)为期14周的密集的个人指导。在之后的五年里,我在FA-18中队担任航空情报官,负责训练海军飞行员,并且向他们讲解他们在执行任务时可能要面临的威胁。 

那些年的经历很大程度上塑造了今天的我,而我在海军服役期间学到的很多经验也延续到了我作为软件开发工程师和开发经理的职业生涯中。

以下是其中最有意义的四条经验。

注重细节


How to Tell if a Candidate Has Strong Attention to Detail — Timpl


我在AOCS的大部分经历都与专注力这个简单却不容易做到的道理有关。


首先,俯卧撑是位良师益友。当你在下降时大喊“注意细节!”,在上升时大喊“团队合作!”


这个时候,你很快就会成为它们的忠实信徒。此时鞋子的光泽度稍有瑕疵,或者一根线头松了——这些都是因为没注意自己或同学的制服——都会招来“捂脸!”的口令,让我们趴在地上继续做俯卧撑。


在航空作战领域,关注细节特别重要。即使是最细微、看似微不足道的细节,也能决定任务的成败。


虽然大多数软件开发并非事关生死,但注重细节对于成功至关重要。编码时,如果关注所有细节——正确的命名、良好的格式、确保涵盖所有极端情况——那么代码将更更易于维护,错误也会更少。今天关注细节,明天就能减少很多的麻烦。 

团队合作


Top 10 Teamwork Skills Required To Succeed In Any Company

练习俯卧撑的另一大秘诀是团队合作。

军人们很少单独行动。飞机飞行几乎至少是两人一组飞行,而且大多数飞机都有多名机组人员。让一架飞机从航空母舰甲板上起飞需要许多人高度协调的配合。几乎每一步都需要与他人合作才能完成目标。 

在软件开发中,一些开发人员独自开发产品,通常是为自己开发。然而,大多数开发人员都是团队的一员,而团队合作对于任何项目的成功都至关重要。无论是结对编程、在 Slack 上解答问题、进行代码审查还是提供培训,软件开发人员都必须与他人合作,才能将项目交付给客户。 

沟通


图片


在海军航空兵中,沟通至关重要。无线电通话本身就是一门技能。由于无线电通信极其不稳定,因此有精确的方法确保信息传递和确认。在飞机内部,谁控制飞机这个简单的概念需要非常清晰地传达。


例如“我来控制飞机”这句话要清晰、坚定地传达出去。


在飞行甲板上,噪音震耳欲聋,因此所有通信都必须通过信号和其他方式进行。沟通不畅很容易迅速导致致命事故。没有任何容错的余地。


再说一次,软件开发通常不会造成致命事故,但清晰的沟通却仍然决定着项目的成败。良好的沟通对于成功的团队合作非常地重要。它意味着良好的写作能力(例如在邮件、聊天、问题、文档等方面),良好的与他人相处能力(包括难以相处的人),甚至编写优秀的代码。

 

我认为编码是一种被低估的沟通方式。我甚至想说,它是开发者沟通最重要的方式。代码不仅是与编译器沟通,还与所有未来维护该代码的开发者沟通。确保自己能够清晰地向一个你可能永远不会见面的人表达自己的想法,这听起来可能有点奇怪,但这正是编写优秀代码的关键所在。 

标准操作程序


图片

所有海军飞行员都必须严格遵守《海军航空训练与操作程序标准化》(NATOPS)手册,该手册概述了可接受、正确且经过验证的飞机操作方法。飞行员必须对其飞机的《NATOPS》手册了如指掌。该手册被人们称之为“血书”,因为其中的许多程序都是在坠机事故中制定的。

在软件开发领域,我们也拥有很多的“最佳实践”。值得庆幸的是,我们的手册是写在项目事后总结中,而不是实际的实践中。正确的做事方法便是通过错误做法的经验来学习的。一个优秀的开发团队会遵循一套规则——包括代码格式化、代码审查、对象库构建等等——这些规则都是行之有效的成功之道。

汲取的经验教训将成为未来产品运营的蓝图。

海军航空兵的每次飞行都要遵循一套严格的程序:简报会中将讨论飞行中可能发生的所有情况;起飞前要绕飞机走一圈,确保飞机处于良好的工作状态;飞行本身也按照简报进行;最后,对飞行过程中发生的所有情况进行详尽的汇报。

任何做过计划会议、代码审查和任务回顾的软件开发团队想必都不会对这种程序感到陌生。 

但是,我从未做过,但人类做过的最疯狂的事情之一,莫过于在漆黑的夜色中,将一架战斗机降落在航母的俯仰甲板上。如此骇人的壮举,唯有通过对细节的关注和团队合作才能够实现。除非你正在为心脏起搏器之类的东西编写代码,软件开发并非生死攸关的大事,但我们可以从将战斗机安全降落到俯仰甲板的过程中学到太多的东西。

祝各位编码愉快!~

作者:Nicker

参考:

https://www.infoworld.com/article/3973809/four-essential-ingredients-of-software-development.html

评论