17611538698
webmaster@21cto.com

软件开发中的 Done:从软件开发团队日常工作中的一件小事谈起

领导力 0 752 2023-08-09 07:20:44
图片

事情要从一次软件研发团队早会讲起……

早会上,老板正在询问自己关心的几个功能的进展。一个程序员汇报说,目前这个代码已经写完了,正在等待代码评审。
老板随口一问:怎么这么久,还要多长时间,什么问题?
图片
没想到这么简单的一句话,咣当一声砸在了地板上,差点把视频会议给砸断线了。
一个初级程序员一脸懵逼:我负责写功能,代码写完了,功能都调通了,测试也过了,我又不负责评审,我不背这个锅。
图片
研发小组长心想:这tmd说的是哪个PR?链接在哪,现在assign给了谁???
组里的资深程序员的思绪则压根没在线:早上的咖啡还没喝完,脑袋还不清醒,昨天刚解决的那几个问题,今天还得再看看,哎怎么没人说话了,是不是网卡了,今天还得这帮人又瞎扯什么呢,能不能赶紧结束我这还一堆事呢。
项目经理尴尬的跳出来打圆场:我们下次的标准版本发布日期是下周四,现在刚刚周三,应该能赶上没问题吧?最后还是老板尴尬的咳了一声:抓紧抓紧!我们接着说下一个事吧。
图片
上面的这个场景,我相信大家都不陌生吧:作为一名混迹江湖的资深老码农,团队里面的各个层级对我来说都不陌生。作为旁观者,我们到底从这个简单的例子里读出什么来呢?
作为系列文章的第一篇,我想先说说第一点 “什么叫做 Done ?”

01
什么叫做 Done?
Done 是JIRA工单系统里的工单的一个最终状态,也就是说这个工作做完了。这里我们借用这个标准来想想到底怎样才算把工作做完了。
有的程序员认为:代码写完了,编译没问题,测试也通过了,PR也发送了,你看你在我电脑上打开浏览器点这里、点这里、点这里,是不是就完事了?
我在这里请读者试着换位思考一下,从老板的角度出发,什么才叫把这个事情真正做完?说到底,老板招聘技术团队开发,当然是要让产品功能上线获得收益才算做完。
图片
对下(执行)来说,夸张一点讲,决定是把大象放到冰箱里,还是把犀牛、河马放进冰箱里以便获得收益,是产品部门经理、总监的职责;而造冰箱,放大象,到底能不能做,怎么做?这些就是研发负责人、研发总监、小组长的职责。
图片
而对上(战略)来说,帮助公司和产品部门找到技术和市场正确的结合点,不要经常搞出大象进冰箱这种天马行空又不一定可行的产品思路,也是技术部门不可或缺的职责。

02
软件团队的岗位、职责
软件团队里的各个岗位,职责各不相同。
初级程序员对自己的职责解读,可能就是基于现在的代码架构下开发某个功能,修复某个bug。而另外一个资深程序员手头的任务,则可能是正在重构某个底层框架,重写某个重要的功能实现。
  • 这种情况下,初级程序员的代码是否需要评审?谁来负责评审?

  • 按什么标准来评审?是先合并这个PR还是先合并另外一个PR?

这些都是很现实的问题,需要有人去解决。一个高效的团队中需要有人去思考和推动这一点,这也就是为什么团队需要一个研发小组长、需要技术总监这样的领导型、管理型角色。更不要说对外沟通、向上沟通这样的职责了!
图片
在笔者职业生涯中经历的几个或大或小的公司中,大部分团队都逐渐实行了第一责任人制度:把某个功能分配给某个程序员去实现,那么你就要去负责推动整个团队来落地实现这个功能,需要写代码你就要写代码,需要写测试你就要写测试,需要前后端联调你就要去张罗联调。
当然,这里是说推动这些事情是程序员的职责所在,如果你确实需要帮助,无论是技术上还是人事上、资源上、政治上的,都应该主动和自己的上级联系,他们会帮助你做成这些事。对应的,你在公司内的职级,直接对应的就是你能推动多大的项目落地。就硅谷公司来说,常见的职级划分如下。
  • L3/L4级:刚毕业,或是刚入职场一两年的新人,他们一般缺乏独立推动项目的能力,只是一个被动参与的角色。对应的,公司需要他们尽快升职L5,否则就会别淘汰。

  • L5级:对应的是 Senior Engineer, 资深工程师,他们必须有独立规划和推动一个简单项目落地的能力。

  • L6及更高级:对应的是 Staff Engineer,Senior Staff Engineer 等,他们必须要有在公司内部推动复杂项目、甚至跨部门项目落地的能力。

图片
而对应的 M5、M6 则是小组负责人,研发总监等管理级别,他们主要负责协调资源,内外沟通,保障项目的实施。管理岗位是否承担编码职责则因人、因公司而异。这样两套并行职业发展路线能够帮助团队成员找准自己的定位,规划自己的职业发展路线。
希望这些信息能对大家有所启发。接下来我还会试着从其他角度解读,咱们下期见。
作者:孙宇聪

评论