SCRUM节外生枝(三)
上接:SCRUM节外生枝(二)
3. 一个程序员卡壳了
有了一些工作经验的程序员(也许可以扩展到所有的技术人员),都遇到过这样的情况:在一个本以为容易的技术实现上遇到未能预测到的难关,长时间无法逾越。本来一个小时能完成的Feature,可能因为一个Severe 0 的Bug,折腾得一天下来也无法完成,而后的一段时间,可能还在这个问题上绕来绕去,后续的工作都因此停滞,更糟糕的是,别人的任务也会因为依赖于他的任务而被拌住(Blocked)。
相对于程序员的“顺流”状态,我称这时候的程序员“卡壳”了。一个程序员卡壳了,是个微观问题。但是,你卡壳耽误3天时间,过两天他卡壳耽误2天时间,整个项目的交付在不知不觉中就被拖延了。在SCRUM开发中,如果因为一个人的卡壳,致使其本人的任务,甚至其他人的任务被拖延2到3天完成,在短至2周的Sprint中,是一种极其令人沮丧的体验。
在SCRUM的教科书中,很少有提到这种情况该如何办?(可能我读的书太少。如果有,请告诉我。)我们只有再读读SCRUM的原则,看看哪一条能给我们指条明路。还好,我们发现了“集体所有权(Collective Ownership)”这一条(见《SCRUM敏捷软件开发》第9章):
“所有的开发人员共同负责开发过程中的所有产出内容,特别是代码和自动化测试。”
好吧,不要再让卡壳的程序员,看到自己和别人被拌住,而急得冒汗了。来吧,所有被绊住的人,或者此刻闲下来的人,都请聚过来,我们可以结对编程,一起分析代码,解决Bug。“我不太懂这部分代码。”那也没关系,了解出现的问题,打开一个Google,搜搜看有没有别人遇到过同样的问题。总之,不要在那里打游戏了,过来帮帮忙,咱们都是一条绳上的蚂蚱。不要将SCRUM理解为:在Sprint中每个人都有各自的任务。要理解为:所有人都有共同的目标。
集体所有权是个好东西,但是这个氛围的培养谈何容易。很多企业中,每个程序员都只负责各自管辖的那些代码,好学一点的,能看看别人的程序,大多数都是马路警察,懒得看其他人的“烂”代码。我们的经验是,每个成员加入团队的那一刻起,他的Manager或者Lead,就要要求他尽量多地熟悉每一个模块,每一个组件,每一个层次的代码,不断地分配给其不同部分代码的编写和修改任务,不让其在脑子里出现“哪段代码是他的,哪段代码是我的”的想法。我们还曾尝试经常交叉变换程序员负责开发的功能模块,以促使他们学习系统中的新东西。原来我们分Server和Client两个行政上的Team以分别负责2端的代码,后来这个也取消了,当一个程序员实现一个功能时,它既能改UI和客户端的逻辑代码,也能改服务器端对Request的处理代码。
要想不让“卡壳”影响进度,努力是从新人刚刚加入团队的那一刻开始的。
(待续……下一节:太多的外界干扰)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?