一封来自前ThoughtWorks总监咨询师、致国内程序员的一封信

news/2024/12/5 4:38:30/

先打个招呼,这期推文我要介绍一个老朋友——熊节。


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


顺便说一句,几年前他在ThoughtWorks时就已经突破了百万年薪。全文2500字,强烈安利给工作8年以下的程序员。


640?wx_fmt=png

【01】

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


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


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


640?wx_fmt=png

并不是卖书 放心


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

 

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


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


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

 

【02】  

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


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


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

 

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

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

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

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

 

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

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

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

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

 

640?wx_fmt=jpeg


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”为例。这个题目的复杂度跟日常开发时会接到的一个划分细致、描述清晰的需求大致相当。


640?wx_fmt=png

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


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

 

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

——Paige


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

——林泽欢


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

——斜杠工程师


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

——阿贵


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

——某不知名男学员


640?wx_fmt=png

学员学习过程记录收集


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


·     用测试框定需求范围

·     准确合理拆分开发任务

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

·     识别和消除代码坏味道

 

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

 

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

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

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

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

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

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

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

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

·     拉勾网Python工程师-zhangwl

·     ……

640?wx_fmt=jpeg

通过考核颁发证书 

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

 

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

 

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

 

640?wx_fmt=png


640?wx_fmt=png


如你所见,这是一套可以真正落地实操的课程。我们更注重训练,而不是普及。


另外在训练中我们会融入结对编程元素,建议可以2人一起报名,互相review代码,共同完成项目。


以上为非必选项,一人报名对学习不会造成任何影响。


我并不打算通过实战营盈利,21天的训练,预计定价在129元,包括:


3个项目、10余个任务的高强训练,社群实操+直播辅导,更有机会参加线下jiker工作坊,成为更有市场竞争力、不用天天996的工程师。

640?wx_fmt=jpeg

极客学院线下工作坊


第二期我希望把人数控制在1000人以内,这3个项目其实有很多东西,只有当你真正经过训练,做到用10倍速度完成开发时,或许你才会真正理解我现在说的内容。

 

限时报名参加

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

2.   分享海报,分销15元奖励,有机会获得极客学院VIP卡+《重构》纸质教材。

3.   8月8号开营,扫码海报,立即购买报名。


640?wx_fmt=jpeg

 

一顿饭钱,就能掌握可应用到工作的敏捷开发技能,加入高质量开发圈,一起做更有价值的工程师。


http://www.ppmy.cn/news/733914.html

相关文章

安装SSL证书需要注意的问题

现在SSL证书已经被大家普遍接受,就算还没有安装,已经准备开始安装了。有很多站长正在学习如何安装SSL证书,我们的网站不仅提供SSL证书申请,还远程帮助大家安装SSL证书。但在SSL证书安装的时候一定要注意以下几个问题。 首先&…

(位运算) 1356. 根据数字二进制下 1 的数目排序 ——【Leetcode每日一题】

❓ 1356. 根据数字二进制下 1 的数目排序 难度:简单 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示…

A4对应像素

A4纸大小:201mm*297mm 对应的像素:794px*1123px 所以 1mm 3.78px

acwing4652.纸张尺寸

在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm841mm,将 A0纸沿长边对折后为 A1 纸,大小为 841mm594mm,在对折的过程中长度直接取下整(实际裁剪时可能有损耗)。 将 A1 纸沿长边对折后为 A2 纸,依此类推。…

〖编程初学者的自我修养 - 精炼面试篇④〗- 以结果为导向介绍自己的学习成果与工作经历

简介:应 850+ 小伙伴要求, 无论你是迷茫的在校生还是已经就业的老司机,该专栏都值得你订阅,它会让你成就更好的自己!说明:该文属于 编程初学者的自我修养 专栏,购买任意白宝书体系化专栏可加入易编程社区,早鸟价订阅模式除外。福利:加入社区的小伙伴们,除了可以获取博…

js压缩base64图片

今天试了用js把base64编码格式的图片进行压缩,记录一下: base64图片转换地址 base64图片转换网址 代码如下 js: $(document).ready(function(){compressImg(targetObj.src, 0.5, useImg, targetObj) });let targetObj {// base64字符串 …

eclipse中页面颜色的设置

1、打开eclipse,选择Window下的Preferences 2、选择General–>Appearance选择自己喜欢的颜色,我比较喜欢黑色(Dark)的。 3、设置成功

eclipse如何设置背景颜色

我们都知道eclipse默认背景颜色是白色,白色很刺眼, 特别是对于我们这样长期在电脑工作的人来说是很伤眼的,那么如何请背景颜色换掉呢。其实只需要简单几步就能完成。 打开eclipse,点击window——>preferences点击general----…