专栏名称: 前端外刊评论
最新、最前沿的前端资讯,最有深入、最干前端相关的技术译文。
目录
相关文章推荐
商务河北  ·  经开区“美•强•优”三重奏 ·  10 小时前  
前端早读课  ·  【第3453期】圈复杂度在转转前端质量体系中的应用 ·  19 小时前  
奇舞精选  ·  从 DeepSeek 看25年前端的一个小趋势 ·  昨天  
奇舞精选  ·  从 DeepSeek 看25年前端的一个小趋势 ·  昨天  
前端早读课  ·  【第3451期】前端 TypeError ... ·  2 天前  
51好读  ›  专栏  ›  前端外刊评论

熊节:996只能怪自己?说说我是如何把修改 Bug 时间降到10%的?

前端外刊评论  · 公众号  · 前端  · 2019-07-31 08:58

正文

本文来自 @熊节 的投稿,文末 @熊节 携 @极客学院 有一个送福利的活动,欢迎参加,正文走起:


【01】

写代码18年,作为前IT界“过气网红”,了解我的老程序员知道,2001年我离开大学,和现在的“北漂”、“杭漂”、“深漂”一样,技术、内容、项目、媒体我都干。

这个过程其实挺充实,哪也不去,窗外好山好水好风景,我就在家专心研究技术。

我曾经翻译过M.Fowler 的著作《重构》,希望把敏捷开发引进中国,结果一不小心火了,10年时间两次改版,有80多万读者。

可能有的人读到这里要会心一笑,当年很多我的“小粉丝”现在大多成了一线大厂的技术leader,风水轮流转,今日的你正是当时的我。

2008年是我的高光时刻,在ThoughtWorks我开始带团队主导华为、中兴的敏捷开发转型,每年深入几万人的IT企业,指挥上千人技术团队,我们将1000名高级工程师做观察样本,通过敏捷开发提高公司开发效率。

也是在2017年,我拿到了人生中的第一个百万年薪。

看到这里,估计你也好奇,敏捷开发到底给程序员提供什么价值?让华为、中兴、阿里巴巴、腾讯、戴姆勒这样的顶级大厂,不惜每年花费千万级预算,邀请我们实施敏捷开发转型,让自己的程序员具备这项技术?

【02】

我来给你打开新世界大门,测试驱动开发的本质是一种开发方法论。这种方法最大的特点在于:先写单元测试,再写功能代码。

TDD的核心在于严格规定了开发节奏:没有失败的单元测试就不能写功能代码,且只允许写“恰好让单元测试通过”的功能代码。

这个节奏迫使程序员稳定小步前进,每一步都必须先想好要达到什么效果,每一步都有充分的测试覆盖。

这就意味着,一个程序员如果掌握了TDD方法,就能解决开发中的三个老大难:

  1. 准确把握需求,开发出来的功能一定是客户想要的;

  2. 保障软件质量,开发出来的代码一定是有自动化测试覆盖的;

  3. 通过反复训练提高开发速度与代码准确率。

很多团队开发效率低,低就低在需求和质量上。

对需求把握不准确,做出来的功能不是客户想要的,必然导致返工。

质量缺乏保障,添加新功能就破坏了旧功能,必然导致返工。

工作量成倍增加,交货期限不能变,最后不得不靠996来补。你自己想想,对嘛?

TDD的价值在于尽可能一次把需求理解清、一次做对、消除返工。

稳定的步伐才能带来长期效益。这也是ThoughtWorks、Google、Facebook、eBay、Pivotal、华为、腾讯、阿里大厂都在使用TDD开发,逐渐把考题放进面试的本质原因。对于基本功不扎实的程序员来说,刚开始用TDD会感到束手束脚,这是正常的学习过程,也是国内的一个误区——如果一直停留在自己的舒适区,你就永远无法达到一线大厂程序员、技术leader的水平。

你是否经常遇到这样的场景:

  • 拿到一个需求,琢磨半天也想不清楚该如何分解任务,盯着屏幕半天,还是不知道该怎么下手。

  • 好不容易做出来一个版本,给客户or产品经理一看,“这不是我想要的”,只能回头加班,被动996,丧失了娱乐独处和陪伴家人的时间。

  • 新功能要改动一块老代码,不敢轻易下手改,生怕改完以后破坏以前的功能,每做一点修改都战战兢兢。

  • 项目上线在即,又测出一堆bug,团队连夜加班修,bug越修越多,修到天亮都还没有一个靠谱版本。

  • 以上场景无限循环

这些问题的本质是因为缺乏正确的开发方法——大家伙全凭本能在工作。

对小型的demo、原型,这种工作方式或许还能凑合。对于真正要给用户用的生产系统,这种全凭本能、不讲方法的开发方式,注定会陷入低质量、大量返工的焦油坑。

测试驱动开发(TDD)能有效解决国内研发团队普遍存在的需求偏差、质量低下两大痛点。高质量、低返工,可靠可信的开发过程,离不开TDD核心实践。

如何才能不仅只是学会测试驱动开发(TDD),还能真的在工作中得以应用?

【03】

我的答案,是训练出真知。我决定和极客学院一起,亲自挑选、亲自辅导、亲自打造一支国内的TDD开发战队。

从8月8号开始,在21天时间里完成敏捷开发的核心实践,其中包括3个大项目、10+个任务的高强度训练。

和其他线上课程相比,我会为结果负责,亲自带领各位完成全部训练,从学过变会做。

以项目“Args”为例。这个题目的复杂度跟日常开发时会接到的一个划分细致、描述清晰的需求大致相当。

大多数程序员完成这个题目需要四五个小时,第一期学员经过训练,他们的时长是55分钟,代码质量高,100%单元测试覆盖。第一期的效果怎么样?我说了不算,给你们看看学员的被虐心得:

“FizzBuzz”练了大概15遍左右,最后控制在10min内,重新拆解细分后,码代时确实更清晰,继续练。” ——Paige

“贴一下实战营的收获,21天重新认识TDD,也见识了TDD的威力。以前学一样放弃一样,觉得没有用,现在发现是学不到位,练不到位,多练才能出效果。” ——林泽欢

“一份需要重构重构再重构的作业,已经基本掌握并熟练使用TDD的节奏,接下来就是学会如何写出舒服的代码!!!继续Kata!!” ——斜杠工程师

“从刚开始的蠢蠢欲动再到持之以恒,确实学到了很多东西,框定需求,识别坏代码,测试先性,marse rover时间花的比较多,代码里还充斥着switch,加强重构。” ——阿贵

“熊老师,我要给你生猴子” ——某不知名男学员

被《TDD实战营》选中的每一位成员,都将达到以下能力:

  • 用测试框定需求范围

  • 准确合理拆分开发任务

  • 具备测试驱动开发实践能力

  • 识别和消除代码坏味道

事实上,在今年6月结束的第一期实战营里,藏着很多“大佬”。如果不是一对一的电话调研,我很难相信第一期的同学里竟然还有大牛。

训练营总共21小时,除去主干项目任务会有微信群全程答疑,有提交作业环节。 即使你无法在指定时间内完成训练,课程也会永久和您的账号绑定在一起,支持随时观看。

报名实战营需要您具备初级开发基础,无论您从事的是前端还是后端开发都可以报名,没有语言限制。以下是具体项目内容和服务:







请到「今天看啥」查看全文