查看: 42525| 回复: 34
收起左侧

[职场感言] 软件开发中的大忌——闷声发大财

    |只看干货
本楼: 👍   99% (388)
 
 
0% (1)   👎
全局: 👍   99% (1212)
 
 
0% (5)    👎

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
先讲一个真实案例。

..
小明被领导委任负责一个提高组里一款Web App性能的任务,他查了资料以后发现缓存JavaScript bundle是一个经常提到的改进,便决定从这里入手。几周以后,缓存有了,配套的监控面板也有了,小明天天盯着上面的数据,但是1个多月过去了,中间修修补补好几次,性能的提升却并不是很明显,于是老板建议他给大家分享一下目前的情况,小明schedule了一个会议并邀请了所有的stakeholder,结果会议上就有人指出他的方案并不能从根本上解决性能瓶颈,同时指出后端API的高延迟才是最大瓶颈。小明这才恍然大悟,只能照着新的思路重新开始。

对于这个失败的案例,里面固然有research不到位的原因。但是设想一下,如果小明在最开始就把自己的想法告诉大家而不是先自己闷头干一个多月,结果是不是完全就不一样了?

在软件开发中,项目早期的曝光度(early visibility)是非常重要的。Early visibility意味着更早的反馈(early feedback),也就意味着更早发现问题,解决问题。我们中国有句老话叫做闷声发大财,不鸣则已,一鸣惊人。这在软件开发中是非常危险的,特别是对于那种单人驱动的项目来说,一个人埋头苦干而其他人却蒙在鼓里可能会导致两个严重后果:
1. 项目因为未及时发现的问题导致被推迟交付。越是复杂的项目,后期调整的难度越大。你做了一大半最后发现有问题,推倒重来,白白浪费那么多时间,项目自然延期,对客户、团队和你自己都是很大的负面影响。
2. Technical debt (技术债务)的堆积。大家有没有过这种经历,组里的某个同事在做一个项目然而你对他的思路全然不知,然后有一天他突然发了一个巨大的CR (Code review),  里面各种不符规范的写法和糟糕的设计,你告诉他这些都不符合组里的coding standard,他却说马上要deadline了,修改的成本太高,必须要尽快上线。你没办法只能先approve,于是technical debt就从这里开始堆积了,你发现你们永远没有时间来重构这段垃圾代码,因为总是有更重要的活,不仅如此,相关的其他feature还必须保证和它兼容,于是越来越多的bad practice被迫出现在你们的代码库里,最后变成几乎完全不可逆的代码“屎山”。

. From 1point 3acres bbs

那么我们如何贯彻early visibility呢?
一个核心:一个项目成功的关键,是早点让人们看到你在做什么,并支持你这么做
-baidu 1point3acres

.--我觉得可以从以下几个方面应用: ..
如果你想搞一个新项目,请提前征求上级的意见。阐明这个项目可以带来多少收益,需要多少时间,得到肯定的答复后再行动。千万不要有“我要给老板一个惊喜”的想法,自作主张。
..
提前和你的上游(upstream)和下游(downstream)沟通。我们经常需要使用别人已经写好的库,调用其他的service来为我们服务。在做决定用哪个库之前,我们需要咨询它的技术支持这个东西能不能够满足我们所有的使用场景,如果不能,是否有workaround?反过来,如果我们的服务会被其他组使用,那我们做改动之前需要让他们知道我们的计划。这种上下游之间的visibility不仅可以规避开发中的兼容性问题,还可以给双方足够的时间计划,过程中提出的一些问题也可以给双方带来额外的启发。.google  и

开始写代码前先发送一份设计文档(Design doc)并让大家审阅。它不一定需要很正式,不一定需要各种fancy的流程图和接口,有时候甚至一封email就行。此外,设计文档并不是只在设计新系统的时候才用,只要是具有一定规模和复杂度的任务都适用,就拿开头小明的性能提升项目为例,app目前的性能指标如何?有哪些瓶颈?对应的改进措施,预期收益,action items和ETA都可以被记录在设计文档中。关键是清晰阐述你的思路并让人们理解你要做什么,为什么这么做。尽可能邀请比较senior的人review,包括你上下游的partner engineers,这样才越有可能发现问题,我建议找你认识的最挑剔,最严格,bar最高的人来看。千万不要为了图省事找只一些标准较低的人看,这样就失去了review本身的意义。

发Code review的时候,先发一个小的CR验证你的写法是对的。我把这种方式称为“探照灯”。它其实是一个你整个feature中某一个模块的实现草稿,它的好处是你可以及早发现代码的问题,并一次性把收到的feedback应用到这一模块的所有其他类似的地方。比如,你需要用React开发一个页面的新功能,那么你可以先发一个CR,里面只包含了一个组件,但是包括了其需要的全部内容,比如styling,数据请求,状态管理等等。这样任何关于这个CR的反馈都可以被应用到之后所有其他组件上,相当于为其他组件树立了一种规范。相反,如果你第一个CR里就写了10个组件,那同样的feedback你都必须把10个组件全部修改,直接浪费了10倍的时间和精力。你可以对每个模块都采用这样的“探照灯”方法,直到整个feature完成。

定期追踪项目进展。对于重要的,耗时较长的项目,定期召集大家跟进是很有必要的,不管是会议、邮件还是其他形式,你需要让所有stakeholder知道以下信息,这样你们可以迅速做出调整,比如向上面争取更多时间,改变优先级等等。
   1. 目前的进度和成果. 1point 3acres
   2. 当前的困难和阻碍
   3. 下一步计划和ETA
   4. 可能存在的风险

我们在coding interview的时候,都知道第一件事是clarification,然后告诉面试官自己的想法,面试官认可后才动手写代码。这其实就是early visibility的一种体现。我们要将这种工作方式运用到每一次任务中,这让你和你的组员避免日后花额外的时间精力来弥补因为缺乏及时沟通导致的损失,让项目得以更安全、顺利地推动,最终deliver results。多花10%的时间在前期沟通,让后面90%的工作收益,何乐而不为呢?

如果大家觉得我的文章对你们有所帮助,欢迎交流哦~

评分

参与人数 68大米 +208 收起 理由
yanshu001 + 1 赞一个
Xrysene + 1 赞一个
QueenieV + 10 欢迎分享你知道的情况,会给更多积分奖励!
yamchip + 1
老狗识途 + 1 很有用的信息!

查看全部评分


上一篇:Google,先别进
下一篇:【已证实:裁员1250人】人在doordash,晚上突然被remove all access

本帖被以下淘专辑推荐:

  • · 工作|主题: 2, 订阅: 0
  • · 打工|主题: 21, 订阅: 0
地里匿名用户
匿名用户-0D7  | 添加认证 | 2022-11-30 21:18:35
本楼: 👍   100% (42)
 
 
0% (0)   👎
?一般至少大厂里都不得弄个design review然后让stakeholder都approve了才能做么
回复

使用道具 举报

ezstars 2022-12-1 01:37:06 | 显示全部楼层
本楼: 👍   86% (33)
 
 
13% (5)   👎
全局: 👍   91% (2726)
 
 
8% (247)    👎
悼念长者🕯,和那个开放的年代。

评分

参与人数 2大米 +3 收起 理由
cht + 1 欢迎分享你知道的情况,会给更多积分奖励!
取个响亮的名号 + 2 欢迎来一亩三分地论坛!

查看全部评分

扫码关注一亩三分地求职与职场公众号
更多干货内容等你发现
回复

使用道具 举报

地里匿名用户
匿名用户-0CE  | 添加认证 | 2022-11-30 21:53:19
本楼: 👍   100% (28)
 
 
0% (0)   👎
请问楼主怎么解决把想法告诉别人后别人抢跑你的问题?比如老板的亲信和老板说要做你的项目,老板就叫你停手给了他,或是aggressive的同事要在你的项目里分一杯羹,不给就给你设置重重阻碍?
我觉得early visibility是不是要看自己和所在组的位置关系?如果是junior,早和大家讨论集思广益是最好的,但如果是自己可以挑大梁的senior,老板对于ownership又不care,最安全的办法就是不鸣则已一鸣惊人。
回复

使用道具 举报

zetianxiao 2022-11-30 18:09:26 来自APP | 显示全部楼层
本楼: 👍   100% (26)
 
 
0% (0)   👎
全局: 👍   100% (31)
 
 
0% (0)    👎
太干了 得喝口水

评分

参与人数 1大米 +1 收起 理由
xphmjj0213 + 1 赞一个

查看全部评分

回复

使用道具 举报

空空道友 2022-11-30 20:12:09 | 显示全部楼层
本楼: 👍   100% (9)
 
 
0% (0)   👎
全局: 👍   77% (1068)
 
 
22% (304)    👎
这个例子有点极端...
感觉这公司就没有开发流程这个东西
回复

使用道具 举报

本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   100% (5)
 
 
0% (0)    👎
如果项目周期长,定期同步进展,不是常规操作嘛

评分

参与人数 1大米 +1 收起 理由
nooobydoobynoob + 1 赞一个

查看全部评分

回复

使用道具 举报

ourgit 2022-11-30 21:35:16 | 显示全部楼层
本楼: 👍   80% (4)
 
 
20% (1)   👎
全局: 👍   75% (3972)
 
 
24% (1262)    👎
谁都不知道就干?code review的人什么都没有想就同意了?
. 1point3acres
编故事吧
回复

使用道具 举报

地里匿名用户
匿名用户-047  | 添加认证 | 2022-11-30 23:10:05
本楼: 👍   100% (1)
 
 
0% (0)   👎
Mark 一下。 一看就是有经验的人!
回复

使用道具 举报

zoevelynne 2022-11-30 23:37:50 | 显示全部楼层
本楼: 👍   92% (13)
 
 
7% (1)   👎
全局: 👍   98% (4818)
 
 
1% (86)    👎
小明干了一个多月都没跟人check in过,自己做了什么有什么进度别人都不知道吗?这是什么神仙公司……. 1point 3 acres
这种performance的事前端能做的实在不多,主要瓶颈都是在后端,只要多两个人知道小明在干啥,就能有个人说句话。。。
回复

使用道具 举报

阿笨猪 2022-12-1 00:05:38 | 显示全部楼层
本楼: 👍   100% (10)
 
 
0% (0)   👎
全局: 👍   98% (796)
 
 
1% (11)    👎
感谢楼主分享! ..
感觉好几个回帖抓不住主旨。自以为是地傲慢。

评分

参与人数 1大米 +1 收起 理由
jerrybbtt + 1 赞一个

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
职场达人
  • ↑ 本版用于讨论职场各种干货话题,闲聊请去🔗聊聊或者🔗匿名版
  • ❌ 本版严禁水贴,引战,发布广告,拉群,贴个人联系方式,扣分无警告
  • ☑ 求职、面经等去 🔗北美求职和 🔗回国求职大区,刷题和学习请去 🔗终身学习大区
  • ☑ 请去专版发布 🔗内推, 🔗招聘信息,和讨论 🔗创业内容
  • ☑ PIP / DevList/ Need Support 等话题也已开设 🔗专版

本版积分规则

>
快速回复 返回顶部 返回列表