任务分解,单元测试,小步快走 如何日常提高30%开发效率?

先打个招呼,我要介绍一个老朋友,熊节。


640?wx_fmt=png

介绍他的重要原因是,从“大学肄业”到ThoughtWorks总监咨询师,从业18年,他倡导的敏捷开发影响了包括我在内的一代程序员。

 

什么才是程序员的核心竞争力?如何提高开发效率?熊节原创,2800字,强烈安利给工作8年以下的程序员:

【熊节原创】

我是IT界“过气网红”熊节,03年我翻译了《重构》,10年2次改版,卖了80多万本。后来我进ThoughtWorks,做到总监咨询师,主导了华为、中兴的敏捷开发转型。

640?wx_fmt=png

当年我们开发一款安卓APP,用测试驱动开发的方式,不需要真机、不需要模拟器,在 JVM 上直接跑,180秒跑完 2000+个测试用例,平均每0.09秒跑一个,我们下班回家老婆孩子热炕头时隔壁的大哥们还在写Bug。

  

这个事情发生在2014年,也让我有了一个新思考,由2个问题构成,

 

第一,站在个人角度,对一个程序员来讲,996也好、职业发展也好,核心问题到底是什么?

 

第二,站在企业角度,为什么像华为中兴这样的大厂,给ThoughtWorks千万级预算,做敏捷开转型?

 

第一个问题,我觉得核心解是开发效率。

 

带过百人团队,熟悉我的人知道我关心的只有开发效率,方法方式是否smart,都是为开发效率服务。行的上、不行的原地踏步或者离开,这是我一直奉行的标准。

 

看的人多、时间长就能发现规律,1-3年求发展,3-5年求跳槽,5年以上求破瓶颈。


第二个问题我想把企业和人放在一起讲,

 

我不知道这些场景有多少人遇到:

1.拿到一个需求,琢磨半天想不明白如何分解,不知道怎么下手;

2.一开始代码没测试,上线后,经常半夜被抓来处理问题,不要问我代码有没有坑,我自己也不知道;

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

4.新功能要改动一块老代码,不敢轻易下手改,每做点修改都很害怕。


以上无限循环。


640?wx_fmt=png

这些问题的本质是——我见过的国内80%的程序员都在凭本能在工作。

 

开发效率低,要么低在需求上,要么低在质量上。这个意思能理解吗?

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

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

两个问题搞定不了,就注定会长期陷入低质量、大量返工的焦油坑。

 

80%的人凭本能工作,这个事怎么解决?我亲身验证的方法是用测试驱动开发(TDD)。

 

TDD的核心在于严格规定开发节奏:没有失败的单元测试就不能写功能代码。


他的逻辑是一次把需求理清,一次做对、消除返工,不用调试就能获得反馈,节省出的时间远大于编写测试代码而产生的工作量总和。


唯一的不爽,这是一个找虐的过程,他迫使你稳定小步前进,所以每一步都必须先想好要达到什么效果,每一步都有充分的测试覆盖。


里边三个步骤

第一步任务分解:测试先行,从需求中分离关注点,然后用实例描述需求,用单元测试表达;

第二步单元测试:遵循 Given-When-Then 三段式,符合极限编程原则;

第三步小步快走此处的坑在于,很多人容易一下写多,导致后面编写的用例直接就能通过,破坏了 TDD 节奏。

 

掌握了TDD方法,就能解决开发中的三个老大难:

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

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

第三,通过反复训练提高开发速度与代码准确率。

 

如果你是工作1-3年的新人,想脱颖而出不走弯路,一定要在一开始就学会更高效的编程心法,获得更快成长曲线;

如果你是工作3-5年的老鸟,想寻求技术突破,跳槽一线大厂或求职业晋升,掌握TDD就是你能拿出手和别人竞争的差异点;

如果你是技术leader,想整体提高团队编程效率,这套华为、中兴掏了千万预算才换回的敏捷开发方法,大概率也适合你。


【熊节的测试驱动开发实战营】

从8月8号开始,我会和极客学院一起,把在ThoughtWorks工作13年的经验倾囊相授、亲自带队,训练出一支能在工作中熟练应用TDD的优秀团队,目标是提高40%开发效率。


参照第一期实战营结果,你的预期收益是:

1.可应用到工作的测试驱动开发方法;

2.完成3个项目,共计12个任务训练;

3.精准框定需求&练会单元测试功能代码;

4.学会重构,减少修改bug时间;

5.练会测试驱动开发 提高40%工作效率。

 

相比常见的线上课程,我会为结果负责,偏重训练,完成从知道到会做的阶段。 

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


640?wx_fmt=png

任务六:代码“臭”不“臭”

正常完成这个任务的时间是4到5小时,在6月第一期学员里,这个时间是55分钟,并且实现了100%单元测试覆盖。


给你们看看第一期学员的被虐心得(内容均来自学员打卡 后有截图),他们当中有新手也有老鸟:


“最大的收获是学习了TDD编程思维,先确立目标再行动,而且行动要一步步快速迭代,确保质量。另外就是了解carbon代码分享为图片这个开源项目,学习了idea的各种快捷键。还了解到了codingdojo这种编程方式,希望能一直坚持下去,不断提高效率(◔◡◔)”


640?wx_fmt=jpeg

——小白


“FizzBuzz练了大概15遍左右,最后控制在10min内,重新拆解细分后,敲代码时确实更清晰,体会:子任务的拆解很有用,第一次比较粗粒度,第二次梳理了类关系,还要继续练。”


640?wx_fmt=png

——Paige


“终于做完了最后一题,自我觉得可读性可以了,总结一下收获:

1. 编码节奏和思路更清晰了,原来想很久才敢动手,现在5分钟提交一次,而且有单元测试保证,根本不用担心出错。

2. 对任务的拆分有了更深刻的理解,真正落实成一行行测试。拆分了需求以后,保证了每一步都很小,同时也保证功能很单一,很难出现那种动不动几十行并且逻辑很复杂的代码。

3. 有了单元测试保证,下一步追求更简洁,可读性更高的代码。

感觉这么多天没有白练,编码能力有了很大的进步,感谢这个训练营,拯救了一个以为会写代码的我,以后会在工作中更多的尝试TDD,估计这辈子都离不开它了。”

640?wx_fmt=png

——林泽欢


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

——斜杠工程师


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

——阿贵


“1. 去除重复代码  2. 分割常量抽取  3. 函数替换循环  不断优化,不断改进!”

640?wx_fmt=png

——陈宇明


“熊老师,我要给你生猴子!”

——某不知名男学员


640?wx_fmt=png

学员打卡&作业点评记录


事实上,如果不是一对一的电话调研,我很难相信第一期的同学里有这么多高手——

·     前百度教育事业部高级Java工程师 陆羽

·     极客学院技术总负责人 Kevin

·     学而思web开发工程师  李坤

·     小米金融高级前端工程师 李志明

·     华为高级 C++开发工程师  孟广明

·     飞羽科技有限公司CTO 小白

·     支付宝小程序  高级Python工程师秋叶

·     阿里巴巴-java工程师  李若舟

·     拉勾网Python工程师-zhangwl

·     ……

640?wx_fmt=jpeg

通过考核由极客学院颁发证书 

除此之外我们还邀请了华为、ThoughtWorks、腾讯、阿里巴巴的HR驻场,为优秀学员提供内推机会。

 

目标:

①完成全部任务,反复训练,练会驱动测试开发(TDD)

②获得能应用到工作的驱动测试开发技能&经验

③肉眼可见的大幅度提高编程效率


第二期8月8日正式开营,我会把你绑定在极客学院官网学习系统,系统内有图文、视频教学,需要提交作业,需要依次解锁12个任务。

你可以根据自己的实际情况灵活安排学习时间,我全程会在微信群内伴随大家,有班主任负责监督打卡,所有直播均可回放。

 

根据第一期经验,你完成全部任务预计需要21天。学习有效期1年,支持随时反复观看。


只要您具备初级开发基础,无论您从事的是前端还是后端开发都可以报名,以下是具体内容:


640?wx_fmt=png


640?wx_fmt=png

稳定的步伐才能带来长期效益。这也是ThoughtWorks、Google、Facebook、eBay、Pivotal、华为、腾讯、阿里大厂越来越重视敏捷开发,把相关考题放进面试的本质原因。


如你所见,这是一套可以真正落地实操的课程。你的代价是99元,和一起投入训练的宝贵时间, 你将和来自各大IT公司的中高层开发者一起,共同成长,你的选择将让你成为未来中国互联网的中坚力量!

640?wx_fmt=png

往期线下聚会 你能找到我吗?


不管你是工作1-3年的新人,3-5年的进阶开发者,还是技术leader,你都能通过实战营训练大幅度提高开发效率尽早加入高手行列,获得更多青睐和更高薪资。

 

第二期我希望人数控制在1000人以内,尤其是对刚入行1-3年的新人,我今年40岁,你们还年轻,只有当你真正经过训练,成为更有价值的程序员时,才会真正理解我现在说的话。


限时报名参加

1.   直播+项目+答疑+训练,【TDD训练营】限时优惠99 ¥,原价 ¥129。

2.   8月8号开营,限时优惠,扫码海报立即购买。

640?wx_fmt=jpeg


限时扫码,一顿饭钱,就能真的提高开发效率,为自己买单。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值