Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何有效地提升开发团队的水平

如何有效地提升开发团队的水平

作者头像
lyb-geek
发布于 2022-03-10 05:56:15
发布于 2022-03-10 05:56:15
6120
举报
文章被收录于专栏:Linyb极客之路Linyb极客之路

客户经常会问的一个问题是:如何有效地提升开发团队的水平?你如何让一组从未编写过Python的工程师使其成为高效的Python开发人员?你如何让从未构建过分布式系统的团队可以构建可靠,容错的微服务?让从未有云中构建经验的团队负责构建云软件?

有人说培训会提升团队水平,引入一个可以教我们如何高效编写Python或如何构建云软件的咨询公司。通过训练运维和开发人员。

我反问那些提出这个解决方案的人:你什么时候知道你准备好了?两天的培训是否足够,还是我们应该选择为期三天的培训?为期六个月的双编码训练营?您需要在培训计划上花费了大量现金,更不用说让一支昂贵的工程师团队参加多天或多周研讨会的机会成本。权衡取舍值得吗?或许,很难说。当下一个新事物出现时会发生什么?我们必须重新开始整个过程。

其他人认为技术工具将有助于提升团队水平。CI / CD管道将使开发人员更有效,并能够更快地发布更高质量的软件。机器学习产品将使我们的待命体验更易于管理。无服务器将提高工程师的工作效率。自动化将改善我们公司的缓慢和官僚程序。

对于这种解决方案回答很简单:工具通常是用于对付破碎或低效政策的创可贴,而政策则是组织的疤痕修补。工具可能很有用,但它们不会修复你破碎的文化,它们肯定不会使你的团队升级,只能补充它们。

还有人说开发者的工程方法会使团队升级:进行结对编程或测试驱动开发(TDD)的团队将更快地升级并且更有效 - 或者scrum,或敏捷,或者mob编程。没有遵循这些做法的团队需要更长时间才能做好准备。

这些东西可以提供帮助,但实际上并不重要。如果这听起来像不尊重你了,你可能想停下来思考一下这些教条。我见过团队使用scrum,结对编程和TDD编写了可怕的软件;我也见过没有编写单元测试的团队编写出色的软件;我见过团队在本地实施DevOps;我已经看到团队在云端完全孤立操作和开发。这些是工具箱中的工具,团队可以选择利用它们,但它们不会神奇地使团队做好准备或更有效率。

一个例外是代码审查。(审查者必须是非代码作者)

代码审查是有助于提高软件质量的一种做法,并且有经验 数据可以支持这一点。结对编程可以是指导初级工程师并确保其他人理解代码的好方法,但它不能代替代码审查。在与另一个人合作的过程中,自己创造一个糟糕的想法同样容易,但当你引入一个不受外界影响的人时,他们更有可能意识到这是一个坏主意。

代码审查是快速升级团队的有效方式,前提是您有一些知识渊博的审核人员来引导流程(作为推论,这意味着高绩效团队应该偶尔被分解以培养组织的其他部分)。它们为开发人员提供快速反馈,最终将其内化,然后将其灌输到自己的代码审查中。因此,它迅速传播专业知识。升级变得具有感染力。

当我开始在Workiva工作时,我亲身体验过这一点。我从未编写过一行Python并且之前从未使用过Google App Engine,我加入了这家公司,其产品主要是用Python编写并在Google App Engine上运行。在几个月的时间里,我成为了一名相当熟练的Python开发人员,对App Engine和分布式系统实践非常了解。我没有做任何培训。我没看过任何书。我很少配对编码。通过代码审查(特别是小组代码审查!),我就把这些阻碍放倒了。

我们对代码审查无情经常让新员工措手不及。使用这种方法,Workiva有效地将一个几乎没有Python或云经验的工程师团队带到了一个用Python编写的基于云的SaaS产品,然后在几年内进行了IPO。

代码审查促进了一种将自我与代码分开的文化。人们自然受到批评的威胁,但是通过代码审查文化,我们批评代码而不是人。代码审查也是在团队中共享上下文的好方法。当其他人审核您的代码时,他们会了解您所处的位置。代码审查为您的团队提供了一个脉搏,当团队成员需要上下文切换到您正在处理的内容时,这可以提供帮助。

它们也是扩展产品开发其他功能的有效方式。例如,许多公司挣扎的一个领域是安全性。InfoSec团队经常成为研发组织的瓶颈,并且经常受资源限制。通过开发安全审核程序,我们可以更好地扩展我们处理安全性和合规性的方式。要求对安全性敏感的更改进行安全审查。为了成为安全审核员,工程师必须通过必须每年更新的安全培训计划。谷歌进一步采用了这一想法,获得了“JS可读性”等不同领域的认证。

这就是为什么我们在Real Kinetic 的咨询强调指导和建立持续改进的文化。这也是我们为行动带来偏见的原因。我们与希望开始采用新实践和技术的公司进行对话,但感觉他们的团队准备不足。这就是现实:你永远不会有充分的准备,因为你永远无法做好充分的准备。正如约翰加尔指出的那样,军队所能做的最好的事情就是做好充分的准备来对抗前一场战争。这就是敏捷确实重要的地方,但只有在快速反应和转动的意义上才能实现敏捷。

没有什么能够取代经验。

通过观看电视上的职业体育运动,您不会成为职业运动员。您不会通过在书本中阅读或进行培训来构建可靠的云软件。要清楚,这些事情可以提供帮助,但它们不是策略。同样,开发人员实践可以提供帮助,但它们不是先决条件。通常情况下,它们会成为情感或哲学辩论而不是客观讨论。需要给团队提供试验和犯错的自由度,以便发展这种体验。他们需要开始做。

代码审查是一个例外。这是升级开发团队的最有效方法。通过严格的代码审查,快速迭代和执行,您的团队将比任何培训课程都能更快地升级。如果您认为他们会提供帮助,请投资培训或其他资源,但在合并到母版之前要求对更改进行代码审查。除了定期回顾,这是建立持续改进文化的基础组成部分。专业知识将开始在您的组织中像野火一样传播。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
PS:本文节选自开源电子书《AI 辅助软件工程:实践与案例解析》第一部分《AI4SE 体系设计》(https://aise.phodal.com/design-aise.html)
Phodal
2024/11/22
4030
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
深入核心的敏捷开发
如何破局? 正如《管理3.0:培养和提升敏捷领导力》所说,所有变革最后的失败都是管理的问题。应该把绩效考核这种管理手段当成『敏捷铁三角』中一角来对待,那就是调整约束
yeedomliu
2021/03/16
1.4K0
深入核心的敏捷开发
2022年软件开发的趋势
今年早些时候,我们参加了几个关于软件开发的会议。我们汇编的清单是会议参加者听到的最重要的观点。这里是 ◆ 1.可观察性[跟踪、监控和记录]是至关重要的 你正在开发你的软件,你已经准备好部署它了。所有的测试都通过了,测试覆盖率也达到了一个不错的水平。知道这一点后,我们可以部署我们的代码,并继续平静地工作。尽管这不是最理想的情况(而且很罕见),我们的代码仍然可能失败。是的!因此,开发人员需要一直观察他们的代码,并让它一直报告指标。万一有什么故障,你需要让你的系统准备好向你提供日志。正如Andrzej所写的。 可
IT大咖说
2022/08/26
3210
2022年软件开发的趋势
七种提高软件质量和开发效率的先进实践
运维开发王义杰
2023/08/10
7150
七种提高软件质量和开发效率的先进实践
React 毁了 Web 开发!
React 是一个很好的库,对于Web开发很重要,因为它引入了声明式与反应式模板,这在当时是每个人都需要的范式转变。当时(也就是6~7年前),我们面临着需要的范式转变的问题,而React 很好地解决了这个问题。
开发者技术前线
2021/07/23
8060
React 毁了 Web 开发!
互联网企业的敏捷开发之道
个人介绍:1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理、产品总监。2007年后创业4年,开发过视频直播社区,及多款页游产品。2011年后就职于腾讯游戏研发部
韩伟
2016/10/10
3.2K1
Python初学者必读丨五分钟内教你如何学习Python
许多Python初学者都不知道该如何开始学习。软件工程师Daniel Moniz分享了他自己的故事,他是如何在辞职后从零开始学习Python,并找到自己心仪的工作。 大家好,欢迎来到我的五分钟讲座——关于如何学习Python。我叫Daniel Moniz,我在Points公司工作。我作为一名软件工程师在那儿工作了一年。 针对那些想进入Python领域的人群,那些想学习Python的人群,我们有责任尽可能地帮助他们,关于如何学习Python的讲座并不多。 这个讲座的目的是帮助初学者学习,最终能够找
CDA数据分析师
2018/02/05
7880
Python初学者必读丨五分钟内教你如何学习Python
如何有效提升软件测试质量?
软件质量保障 | 测试质量保障、自动化工具/框架、平台开发、算法测试、BAT/TMD大厂测试岗面试题/面经分享、测试团队建设与管理、测试新技术的分享。 偶尔也聊聊个人工作的收获与经验。可以帮忙内推字节、阿里、百度等大厂。
互联网金融打杂
2022/08/01
1.2K0
如何有效提升软件测试质量?
12年程序员职业生涯得到的12个经验教训
12年程序员职业生涯得到的12个经验教训 我已经在ThoughtWorks工作了12年。是不是有点不可思议?回首我的职业生涯,我想写一写我在这些年中经历的困难,以及总结得到的12个非常重要的经验教训。
用户1289394
2018/02/27
5540
12年程序员职业生涯得到的12个经验教训
一位高级数据科学家典型的一天:从结对编程、敏捷开发,到编写代码
数据科学家通常被认为拥有一份超级酷和令人兴奋的工作,但事实上它并不像看起来那样迷人。但这不一定是坏事,我只是发现新晋的数据科学家没有意识到他们正在进入什么领域。 翻译 & 整理 | 杨阳 出品 | AI科技大本营 最近,我遇到了很多有兴趣转行到数据科学领域的人。他们总是问我的第一件事是:“典型的一天是什么样的?”。我看过很多概述数据科学家应用技能和工具的文章,但我看不到很多展现日常工作的真实案例。 虽然每一天都不一样,但这些任务代表了我作为一家大型金融机构的高级数据科学家的典型的一天。 每日一览 8:
AI科技大本营
2023/04/06
2970
一位高级数据科学家典型的一天:从结对编程、敏捷开发,到编写代码
培养敏捷态度
关于敏捷方法论的文章已经很多了。其中,相当一部分文章讲述了敏捷方法技术方面的问题,比如测试驱动开发和持续集成。同样,还有相当一部分文章讨论了敏捷 方法论的应用问题,例如发布计划,跟踪生产率,如何使用度量数据对过程“调优”,甚至让公司里的业务人员确信需要采纳一种特别的方法。读过这些有关敏捷方 法的文章后,很容易让人产生一种感觉,即通过购买一套工具并遵从一系列看上去很简单的实践,就算采纳了像极限编程和Scrum这样的敏捷方法。然而,现实 世界的经验表明,成功地采纳敏捷要比那复杂得多。它涉及到如何培养一些正确的做
张善友
2018/01/30
6310
React 毁了 Web 开发!
译者 | 弯月 责编 | 欧阳姝黎 出品 | CSDN(ID:CSDNnews)
五月君
2021/11/18
2830
React 毁了 Web 开发!
敏捷开发
现在有许多公司专门从事软件开发项目。他们中的一些人正在使用标准的业务方法(瀑布),有些人已经涉及敏捷原则。产品开发人员和开发团队一直在寻找更有效的生产方式。虽然瀑布过程在过去被广泛采用,但越来越多的团队正在转向敏捷开发,这是一种现代化的项目管理和产品开发方法。在本文档中,我们想向您介绍敏捷的世界,并揭示与在工作中使用敏捷方法的开发团队合作的好处。
杜金房
2022/12/12
1.3K0
敏捷开发
如何提高团队代码质量
在开发阶段我们更多的是通过SQ来做自动化的代码检查,SQ的高版本已经可以发现代码中的BUG,漏洞,坏味道,智能省时。可以过滤大多代码级别的问题。
海哥@开发
2022/04/06
6280
如何提高团队代码质量
在实践中总结出的几条 CodeReview 实用经验
资深的程序员都知道 Code Review 可以对代码质量,代码规范,团队代码能力提升带来很大的提升,还有著名的技术专家“左耳朵耗子”也说过:
phoenix.xiao
2020/08/13
6460
初级 vs 高级开发者 哪个性价比更高?
许多公司倾向于雇佣有经验的软件开发者——因为这些人基本上不需要培训就可以开始工作。特别是在刚创业的公司里,如果为了节省资金,低薪雇佣一些没有经验的开发者,而这些人又不能在短期内给公司带来效益,那你给再
李海彬
2018/03/22
6300
初级 vs 高级开发者 哪个性价比更高?
代码审查如何保证软件质量
在软件行业,您可能经常会听到术语“代码审查”。但是,代码审查的概念经常被误解。人们通常认为它在软件开发生命周期中被忽视执行测试应足以满足验证过程。因此,他们倾向于对代码审查过程视而不见。但是,忽略代码审查过程可能会反弹并产生重大后果。我们也有一个误解,认为代码审查过程是开发团队的责任。它不是!代码审查是一个过程,不仅应包括开发人员,还应包括质量保证人员和产品经理。本文是我的尝试,旨在帮助您意识到代码审查的重要性以及您应该如何参加质量检查。
FunTester
2019/11/10
1.1K0
《硝烟中的Scrum和XP》第13章 我们怎样结合使用Scrum和XP
第13章 我们怎样结合使用Scrum和XP Scrum注重的是管理和组织实践,而XP关注的是实际的编程实践。这就是为什么它们可以很好地协同工作——它们解决的是不同领域的问题,可以互为补充,相得益彰 ---- 结对编辑 结对编程可以提高代码质量 结对编程可以让团队的精力更加集中。(比如坐在你后面的那个人会提醒你,“嘿,这个东西真的是这个sprint必需的吗?”) 令人惊奇的是,很多强烈掏结对编程的开发人员根本就没有尝试过,而一旦尝试之后就会迅速喜欢上它 结对编程令人精疲力竭,不能全天都这样做 常常更换结对是有
yeedomliu
2020/04/14
9380
敏捷模型-开发方法入门系列
在这篇博客中,我们将讨论敏捷模型的关键功能、阶段、测试方法及其优缺点,但在探索所有这些之前,让我们看看引入敏捷模型的必要性以及它何时出现。我们不断扩大的数字世界越来越渴望更复杂和多样化的应用程序。不幸的是,这种需求与高软件开发失败率相冲突。为了解决这一失败,敏捷方法应运而生。敏捷方法最初是在软件开发业务中管理软件开发的一种新技术。许多软件开发项目都失败了,或者需要很长时间才能完成,行业领导者明白他们需要提出一个新的、创造性的解决方案。
jack.yang
2025/04/05
1680
敏捷模型-开发方法入门系列
【敏捷1.4】敏捷开发环境:领导与团队
敏捷中,最重要的是什么呢?基本上所有的教材都会说,敏捷是以人为本的,以团队为核心的。第一,敏捷不提倡加班,第二,敏捷让团队自管理,第三,敏捷中的领导都是服务员而不是命令者。是不是看着很激动呀,敏捷对员工这么友好吗?没错,相比传统的项目来说,在敏捷中做项目是快乐开心的。那么,要实现敏捷,我们的团队需要怎样的领导与团队环境呢?
硬核项目经理
2021/10/26
1.2K0
相关推荐
实现 AI 辅助软件工程:团队如何量身打造 AI4SE 体系?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档