这里是Z哥的个人公众号
每周五早8点 按时送达
偶尔也会来加个餐~
先打个招呼,这期推文我要介绍一个老朋友,熊节。
推荐他的重要原因是,从“大学肄业”到ThoughtWorks总监咨询师,他倡导的敏捷开发影响了包括我在内的一代程序员。
顺便说一句,几年前他在ThoughtWorks时就已经突破了百万年薪。全文2500字,强烈安利给工作8年以下的程序员。
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的水平。
你是否经常遇到这样的场景:
l 拿到一个需求,琢磨半天也想不清楚该如何分解任务,盯着屏幕半天,还是不知道该怎么下手。
l 好不容易做出来一个版本,给客户or产品经理一看,“这不是我想要的”,只能回头加班,被动996,丧失了娱乐独处和陪伴家人的时间。
l 新功能要改动一块老代码,不敢轻易下手改,生怕改完以后破坏以前的功能,每做一点修改都战战兢兢。
l 项目上线在即,又测出一堆bug,团队连夜加班修,bug越修越多,修到天亮都还没有一个靠谱版本。
l 以上场景无限循环
这些问题的本质是因为缺乏正确的开发方法——大家伙全凭本能在工作。
对小型的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月结束的第一期实战营里,藏着很多“大佬”。如果不是一对一的电话调研,我很难相信第一期的同学里竟然有这么多大牛—— · 前百度教育事业部高级Java工程师 陆羽 · 极客学院技术总负责人 Kevin · 学而思web开发工程师 李坤 · 小米金融高级前端工程师 李志明 · 华为高级 C++开发工程师 孟广明 · 飞羽科技有限公司CTO 小白 · 支付宝小程序 高级Python工程师秋叶 · 阿里巴巴-java工程师 李若舟 · 拉勾网Python工程师-zhangwl · …… ▲通过考核颁发证书
除此之外,我们还邀请了华为、ThoughtWorks、腾讯、阿里巴巴的HR驻场参与,优秀学员我们将直接提供推送机会。 训练营总共21小时,除去主干项目任务会有微信群全程答疑,有提交作业环节。 即使你无法在指定时间内完成训练,课程也会永久和您的账号绑定在一起,支持随时观看。 报名实战营需要您具备初级开发基础,无论您从事的是前端还是后端开发都可以报名,没有语言限制。以下是具体项目内容和服务:
如你所见,这是一套可以真正落地实操的课程。我们更注重训练,而不是普及。
另外在训练中我们会融入结对编程元素,建议可以2人一起报名,互相review代码,共同完成项目。
以上为非必选项,一人报名对学习不会造成任何影响。
我并不打算通过实战营盈利,21天的训练,预计定价在129元,包括:
3个项目、10余个任务的高强训练,社群实操+直播辅导,更有机会参加线下jiker工作坊,成为更有市场竞争力、不用天天996的工程师。 ▲极客学院线下工作坊
第二期我希望把人数控制在1000人以内,这3个项目其实有很多东西,只有当你真正经过训练,做到用10倍速度完成开发时,或许你才会真正理解我现在说的内容。
限时报名参加
1. 直播+项目+答疑+训练,【21天训练营】限时优惠99 ¥,原价 ¥129。 2. 分享海报,分销15元奖励,有机会获得极客学院VIP卡+《重构》纸质教材。 3. 8月8号开营,扫码海报立即购买报名。
一顿饭钱,就能掌握可应用到工作的敏捷开发技能,加入高质量开发圈,一起做更有价值的工程师。