本文来自 @熊节 的投稿,文末 @熊节 携 @极客学院 有一个送福利的活动,欢迎参加,正文走起:
【01】
写代码18年,作为前IT界“过气网红”,了解我的老程序员知道,2001年我离开大学,和现在的“北漂”、“杭漂”、“深漂”一样,技术、内容、项目、媒体我都干。
这个过程其实挺充实,哪也不去,窗外好山好水好风景,我就在家专心研究技术。
我曾经翻译过M.Fowler 的著作《重构》,希望把敏捷开发引进中国,结果一不小心火了,10年时间两次改版,有80多万读者。
可能有的人读到这里要会心一笑,当年很多我的“小粉丝”现在大多成了一线大厂的技术leader,风水轮流转,今日的你正是当时的我。
2008年是我的高光时刻,在ThoughtWorks我开始带团队主导华为、中兴的敏捷开发转型,每年深入几万人的IT企业,指挥上千人技术团队,我们将1000名高级工程师做观察样本,通过敏捷开发提高公司开发效率。
也是在2017年,我拿到了人生中的第一个百万年薪。
看到这里,估计你也好奇,敏捷开发到底给程序员提供什么价值?让华为、中兴、阿里巴巴、腾讯、戴姆勒这样的顶级大厂,不惜每年花费千万级预算,邀请我们实施敏捷开发转型,让自己的程序员具备这项技术?
【02】
我来给你打开新世界大门,测试驱动开发的本质是一种开发方法论。这种方法最大的特点在于:先写单元测试,再写功能代码。
TDD的核心在于严格规定了开发节奏:没有失败的单元测试就不能写功能代码,且只允许写“恰好让单元测试通过”的功能代码。
这个节奏迫使程序员稳定小步前进,每一步都必须先想好要达到什么效果,每一步都有充分的测试覆盖。
这就意味着,一个程序员如果掌握了TDD方法,就能解决开发中的三个老大难:
-
准确把握需求,开发出来的功能一定是客户想要的;
-
保障软件质量,开发出来的代码一定是有自动化测试覆盖的;
-
通过反复训练提高开发速度与代码准确率。
很多团队开发效率低,低就低在需求和质量上。
对需求把握不准确,做出来的功能不是客户想要的,必然导致返工。
质量缺乏保障,添加新功能就破坏了旧功能,必然导致返工。
工作量成倍增加,交货期限不能变,最后不得不靠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小时,除去主干项目任务会有微信群全程答疑,有提交作业环节。
即使你无法在指定时间内完成训练,课程也会永久和您的账号绑定在一起,支持随时观看。
报名实战营需要您具备初级开发基础,无论您从事的是前端还是后端开发都可以报名,没有语言限制。以下是具体项目内容和服务: