※ 引述《accessdenied (存取违规)》之铭言:
: 还是很多人对 clean code 的乌托邦有着不切实际的梦想....
: 醒醒看看 real world 的例子吧......
: 下面都是真人真事
从以下举的例子来看,那当然,clean code、design pattern还是什么鬼的全都是垃圾,
通通都是没有用的
: 有一天,客服接到客诉,客人发现我们用户条款有模糊不清的地方,导致客人使用我们的
: 服务权益受损。因为某个功能,原本设定为VIP方案才能使用,但用户权益没有厘清,导
: 致这个初阶用户认为自己应该也享有这个功能。
: 在解说无效下(通常都是无效的),客户要求退费并且威胁要 消保官和发文抹黑,客服
: 经理当然为了公司品牌、保全用户,决定个案处理让这位客户能特别使用这个VIP功能...
: .,并且承诺明天就生效。
这是第一次
: 真实世界的选项是什么,相信大家猜得到。
: 过几天,又发生公司因为系统上版过久,超过官网公告的 downtime 维护时间。等著使用
: 公司系统的用户逐一抗议自己的权益受损,支付吃到饱的费用却超过公告时间无法使用..
: ..
: 接下来谈的补偿办法,又是目前系统根本没有设计过的方式,跟上面提到超越Level限制
: 又是不同的作法。RD 们又开始那著这些客户清单,一条条地输入
: If (cid == .....
这是第二次
: 但是,这就是“营运”啊!这些处理真的就让公司能在市场上继续发光发热!
^^^^^^^^^^^^
而这叫发光发热
: 就连 MS 也做过类似的事情,这未来有空再说。
: 这些dirty code有没有影响未来系统的修改?
: 有的!像是这些写死的逻辑,那些客户现在还在使用吗?还是早就解约离开了?还在使用
: 的,我们更新功能要怎么维持当初客服保证的补偿不会受影响?
: 这些都变成修改系统的干扰。
: 但是,这些顶多增加修改的成本和难度,却没有害当初公司业务根本做不起来。
: 这就是一种技术债杠杆。
: 我想问那些把 clean code 和 DP 看得甚高的工程师们,在这样现实的商业生活中,你会
: 怎么做的让我刮目相看呢?
怎么让你刮目相看?老实讲,我对你没有兴趣
我有兴趣的是看这篇的工程师们,你们自己觉得呢?
认真的分析这个案例:
为什么一定要保住这个客户?如果客服流程有订好,该录音的有录,为什么要怕这种
客人的威胁?透过应对这种客户训练客服与法务的流程,才是应该不是吗?
不敢杀圣牛的老板,是无法累积信用的,嘴皮子耍再多,迟早会被放生
公司是经营在灰色地带吗?条款设计当初是有坑骗客户的打算吗?还是就是只主管老板
怕麻烦?
大概就这三选一,中了哪一个,是大家做开发的觉得这公司还值得呆的?
如果是选项一,市场上那么多公司,干嘛去一个做黑的?
如果是选项二,天底下有些人是不该成功的,他们赚钱对社会、对他们自己都不是好事
如果是选项三,客服经理每天上班是来吃便当的,法务是喝茶看报纸的、主管是软烂的
怎么都不合理,但产品就是该牺牲,而且每次都以牺牲产品为荣,这意思是什么?
意思就是我当年感受到的歧视链,现在也还是成立的:
台湾人可以当一流的开发者、二流的供应商、三流的客户
身为台湾人,最好别做同为台湾人的生意才能‘站着把钱给挣了’
因为台湾人很容易当身份从手心朝上要钱、变成手心朝下给钱时,就开始不讲道理了
客户给老板赚钱、老板给码农薪水
咱们这属于给钱歧视链最底端的,就是他马的照做闭嘴,不是吗?
这种事情天天发生,什么clean code?什么Design pattern?当然都是浮云啊
做鸡给人干到有口碑都还能选人客的,但程式写干净、产品做好,服务台湾市场
就是只配给这种怕麻烦吃便当喝茶看报的主管联合不讲理的客户糟蹋不是吗?
所以这样的公司标榜什么‘技术不重要’当然很合理,code能动就好了
毕竟开发做再好,你的老板可是很兴奋的等著哪天帮着客户硬掰开产品大腿的,
都北港香炉人人插了,还clean什么code?
先问问自己当初怎么鬼遮眼,落到这种人手上吧
喔,对了,那个a开头的,要比赛收入的话,我W2缴税至少也缴掉一台M...
算了,跟你认真干嘛呢?我还是跟做开发的认真比较好
____________认真分隔线________________
对开发者而言,怎么拿捏需求时程与工程工法间的取舍,是一辈子的修行
如果觉得120 kg 卧推、100 m 短跑12秒内不是简单的事,那做专案时程资源与技术架构
的权衡就更难,因为接专案的每次不是不同的业主、就是不同的专案、甚至是不同的执
行团队,跟同样的自己的躯体、严格控制环境的跑道与举重场,真实世界环境变量这么
多,要怎么控制?
产品开发是schedule driven的东西,持续回答“event driven 的因子怎么做有效隔离
?”是团队专注的基础,无法专注、老是Context Switch,那订出来的schedule就是定
好玩的,到最后就变成老板乱许愿,然后工程师omakase
‘既然什么都不压,当然是我工程师觉得什么重要就先做先送啊,你业务部门被客户
逼急了才跑来我,我当然就给你乱七八糟的patch’
然后业务PM一起去吃屎,啊要是吃到竟然开始觉得屎很好吃,乱来变常态,机会成本
就很可怕了,持续吃屎,code base就会走经,产品能够转向还是修正的空间会随着
熵值急遽增加而缩小,等到哪天真的重要的机会跟大单跑来,工程师再怎么拼、老板
鞭子再怎么抽也只能徒呼负负
小聪明在上升市场可以有口饭吃,但真正重大的战役,those epic raids ,耍小聪明
成习惯的人是没有机会的,因为最恶劣的环境与事件必然发生,会需要蹲举200kg、卧
推120 kg 的时点必将到来,而写履历的墨水最高级的就是泪水汗水与血水的混合物,
没打过真正难的硬仗,成天除了RDBMS CRUD就是一堆奇技淫巧兜patch,架构思想串不
起来,逼格不够,等过了40岁,谁还买单?
主事者的格局认知偏差,会在多次的短期获益刺激下形成路径依赖,也就是养成坏习惯
,最后会开始观测得出系统误差的,用Gaia hypothesis的话语,就是会观测出只有特
定正回馈才累积得出某种现象的迹象,比如说:
公司找进来的人越来越都是拼短线爆发,人员流动率上升,专案末尾Bug越来越不容易
收敛,毛利开始变差,客户流失,新PM业务流动率变超高,老业务PM则是越来越拿翘
人生际遇当然有很大的运气成分,但这是在相同都具备该有的条件的那一群候选人当中
,才去看老天爷挑谁的,不具备必要条件的人是永远也不会发生,比如说:
我认知到软件产业是知识经济的一环,不拼最在地就是拼最国际,我拼最国际,那就是
英文练起来,公司专找做外国客户生意的公司(不是外商,外商来台做台湾生意的帮助
有限),用的技术是人家大公司并购会喜欢的,人家国外开发者的术语要知道,要脏我
可以很脏,要讲高尚clean code我也一样可以,你Architect喜欢哪种Design Pattern
我看过几个范例就能照着做开发,大概第二个Sprint上轨道,只要假设合理,不会去
跟你强辩些有的没的,什么奇怪的要求比如说写Java每个method只准20行以内、每个
class只准500行之类的我也可以干净合理的达成,而不是乱来
诸如此类的条件都超过全有全无律的门槛,人也排在队伍里,那再来就学冲浪者的耐心
与眼力去等浪追浪
最后,这世上做什么价值选择的人都有,写程式当然不是一定要干干净净,但你得记得
你付了什么代价,还有反省同样的事情到底有没有更好的做法,经而不验是最糟糕的