随着科技的进步,层出不穷的软件、开发工具以及发展趋势让人们应接不暇。
但是,当人们在YouTube视频、Reddit版块和StackOverflow学习和了解软件开发时,还有一些事项令人关注:软件工程中的良好编码实践。以下了解一下高绩效团队需要遵循的软件工程优秀实践。
测试
优秀的开发人员将测试视为其经验和技能组合的内在组成部分。测试可以识别错误和缺陷,并精简流程。开发人员在对软件进行测试之后可以交付更好的产品,而经过测试的软件更易于使用、更加可靠并且质量更高。
代码质量
代码质量对于软件来说是至关重要的,但代码审查同样至关重要,尤其是使用自动化工具和同行预览。代码审查提供了一种定位问题的方法以便尽早修复,还可以确保开发人员正在开发的软件的一致性和可靠性。
文档
文档被描述为开发人员给未来的自己写的一份说明。根据Writethe Docs社区的说法,很多开发人员回顾自己在6个月前编写的代码时,通常与查看其他人编写的代码并没有区别。他可能会怀着美好的回忆查看文档,但在查看会产生一种不祥的预感,意识到这个文档如今看来可能经验不足或拙劣不堪。
当开发人员在回顾几个月前所写的文档时有这样的经历或感觉的时候,可能会开始同情已经向他们提交软件的用户。如果在文档写下为什么这么做的原因,那么事情就会简单得多。文档允许开发人员了解在代码背后传递的信息。这与代码的注释进行解释的方式非常相似,文档也有同样的目的。
文档使软件开发时保持一致的风格,更容易回到旧代码,实现异步协作,并帮助跟踪和解决错误。
而Apache软件基金会执行副总裁Rich Bowen在几年前提出了一个如今仍然有效的观点:“技术世界变得越来越复杂。人们需要知道的事项清单一直在增加,但没有人能够成为万能的专家。期望某人完成所有的工作并提出明智的问题不仅不合理,而且也是不可能的。
富有同情心的技术支持和更好的文档是人们有效使用软件的唯一途径。而且,如果他们不能在合理的时间内得到答案,他们将会使用另一种解决方案,这种解决方案将具有更好的入口。”
更好的是,有很多方法可以自动编写文档。开发人员可以使用Markdown编写文档,使用linter来保持样式指南的一致性,并更正容易犯的错误(例如语法错误)。如果开发人员正在寻找一种向代码添加场景的方法,并且还想减少场景切换,可以查看有用的VSCode和JetBrains扩展,它们允许发生直接在编辑器中添加问题、注释和待办事项。
软件维护
软件维护是软件开发生命周期的关键部分。软件开发人员需要不断完善他们的产品,以增强其功能,减少退化,满足用户的需求,并确保其产品的持续成功。这是通过软件维护来实现的。
技术债务
当谈论技术债务时,大多数开发人员都会感到不安。这是拖延症最重要的表现形式之一。开发人员每天忙于工作,导致不断拖延,也忘记了重构。在发生某些事情并且代码非常糟糕以至于不再起作用之前,似乎一切都很好。更糟糕的是,修复技术债务成为一项主要任务。这将开发人员从其他关键任务的工作中解脱出来,并在最后期限到来之前解决。
开发人员需要遵循这一规则,“总是让代码变得更好。” 换句话说,开发人员应该不断清理技术债务,这样他们就不必实施工作量巨大的重构项目。
清理技术债务需要像人们每天刷牙一样成为习惯。开发人员可以设置每天下午3:30的闹钟,以定期清理技术债务,并尽可能实现自动化。它可以帮助开发人员创建技术问题,将它们添加到与Jira集成的sprint工作中,并持续解决技术债务。
成为优秀的团队成员
关于软件工程良好实践的典型列表或文章中经常缺少的一件事是在团队中运作良好。
在以往,人们将编程大师传统比喻成为一名特立独行者,通常独自工作。而他的一些行为也得到同事的容忍,而他的代码写得非常好。
而这样的方式如今已经过去了。编程如今成为一项团队运动,而成为一名优秀的开发人员首先需要成为一名优秀的团队成员。可靠诚实与其掌握的编程技能同样重要。此外,开发工程师需要承认自己在工作时犯下的错误,并需要与其他的同事团结合作。
开发人员有能力确定任务的优先级并按时完成任务。但这也与团队中其他人密切相关。如果开发人员不善于交际的话,那么至少也要尊重他人。
例如在同事遇到困难时,需要及时为他们提供帮助。不能因为自己的知识或技能超过他们而自鸣得意,但如果软件出现错误或出现巨大的延迟,这对整个团队来说都是糟糕的事情。开发人员需要为新手提供支持,并分担他们的工作,接受组队编程等实践。所有这些将使其成为一名优秀的团队成员。
意向性和预见性
这可能与作为实践的编程略有偏差,但优秀的开发人员是一名预言家。这意味着他在创建和编码时着眼于未来——代码和最终产品如何发展和变化以及最终用户的需求。
以下有两个例子:首先,采取安全措施。人们可能听说过左移概念。这意味着良好的网络安全实践在项目开始时就嵌入到代码和产品中。它是设计的安全性,一切都与安全预防有关,而不是在被黑客入侵或发现出现安全漏洞时不得不收拾残局。
这意味着软件设计从一开始就需要考虑安全性,以减少危及企业信息安全的缺陷。开放式Web应用程序安全项目(OWASP)是Web开发人员在这一领域的重要资源。
其次,实现可访问性。软件用户的体验如何?就产品设计而言,其最终产品是什么?解决方案是包容性设计。这种方法创造了更好的解决方案,因为它旨在使所有用户受益。在整个过程中考虑可访问性意味着可以为所有用户设计产品。
微软公司现在发布了一个全面的包容性设计培训计划。Open Assistive拥有大量的Open Assistive技术硬件和软件项目目录。WCAG.21 Web内容可访问性指南涵盖了使Web内容更易访问的一系列建议。
原文标题:Software Engineering Best Practices That High-Performing Teams Follow,作者:Cate Lawrence