Re: [请益] 工作四年多开始迷惘

楼主: zanyking (最后的六年级生)   2018-04-17 17:03:23
※ 引述《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行之类的我也可以干净合理的达成,而不是乱来
诸如此类的条件都超过全有全无律的门槛,人也排在队伍里,那再来就学冲浪者的耐心
与眼力去等浪追浪
最后,这世上做什么价值选择的人都有,写程式当然不是一定要干干净净,但你得记得
你付了什么代价,还有反省同样的事情到底有没有更好的做法,经而不验是最糟糕的
作者: art1 (人,原来不是人)   2018-04-17 17:20:00
要说服观念不同的人很困难
作者: landlord (91)   2018-04-17 17:26:00
收放自如,刚好最好!
作者: lovdkkkk (dk)   2018-04-17 17:30:00
作者: j611062000 (iLoveLumia)   2018-04-17 17:56:00
作者: waitingjune (waiting)   2018-04-17 17:56:00
这才是真正大师风范!!别被axxxx 台湾奇型种的观念带歪了
作者: vi000246 (Vi)   2018-04-17 17:57:00
为了一个VIP 造成以后花更多成本维护 反正在台湾加班不用钱 就丢给底下的人烦脑
作者: ccc1001 (你不是吧)   2018-04-17 18:07:00
觉得要推
作者: abccbaandy (敏)   2018-04-17 18:19:00
很理想...现实难道你跟老板说不做?
作者: kain777 (想妳在0:01分)   2018-04-17 18:27:00
怎么赚到缴M的
作者: zero7810 (aa)   2018-04-17 18:30:00
推 好的工作环境是营造出来的 客群的选择也是 彼此尊重
作者: cookie1115 (大饼)   2018-04-17 18:32:00
作者: useeseeu (U See See U)   2018-04-17 18:32:00
bayarea税太高吧
作者: johnny4753 (Li)   2018-04-17 18:37:00
推~比喻的真精采
作者: Masakiad (Masaki)   2018-04-17 18:45:00
条理分明切中要点啊
作者: qweasd777 (qweasd777)   2018-04-17 19:04:00
作者: paint (有斑纹的马)   2018-04-17 19:38:00
没有必要说服别人 都只是一种选择 但绕过的路还会再出现 推
作者: pttworld (批踢踢世界)   2018-04-17 19:53:00
讲实际的解法那些外包工程师比较听得进去另一点是,反抗客户的需求,这辈子做了几次
作者: jojojen (JJJ)   2018-04-17 20:22:00
作者: alice822 (梅露)   2018-04-17 20:57:00
作者: pig0038 (颗颗)   2018-04-17 21:00:00
推推
作者: jj0321 (JJ与你倒数唷)   2018-04-17 21:08:00
推 "经而不验"这句好啊! 可是上面资深、主管都经了10年都似乎没验过....唉
作者: Argos (Big doge is watching u)   2018-04-17 22:27:00
反正又不是他动手 他出张嘴就好 要这经验干麻 哈哈
作者: apley (佛渡有缘人)   2018-04-17 23:09:00
推这篇
作者: dsilver (细数远星永唱泉水)   2018-04-17 23:15:00
作者: JPChinbotsu (日本沈没)   2018-04-17 23:54:00
还好还有大大出来讲几句话正视听禁止存取的观念在台湾多起来 才是台湾软件业灾
作者: peanut97 (丁丁)   2018-04-18 00:36:00
作者: nero81 (void)   2018-04-18 01:18:00
确实没有考虑到这也是一种解法,条理清晰,学习了,感谢
作者: x123356 (x123356)   2018-04-18 01:21:00
好文推 某a就标准惯老板思维 那种风气都有人推也难怪台湾软件业竞争力这么差
作者: Denny3345678 (DennyTTTTTT)   2018-04-18 02:38:00
推,想请问z大在各种地雷的环境下你是怎么继续坚持这种正确的思维
作者: gundamdx (真飞鸟)   2018-04-18 03:21:00
推强者我同学
作者: frouscy (流浪吧。)   2018-04-18 04:13:00
作者: ku399999   2018-04-18 06:24:00
真的是想问问他的产品是全球还是只服务台湾 流量多少有没有什么复杂的应用?streaming?产品多久了?工程师离职率etc
作者: bigshawn (棉花)   2018-04-18 07:19:00
怎么感觉我待的公司就像原PO说的那种新工程师待不久 老屁股主导一切 新技术完全推不动
作者: mathrew (Joey)   2018-04-18 07:36:00
推 其实就是看老板
作者: maxqq (max)   2018-04-18 09:02:00
除了看老板 还有就是看老屁股
作者: bowin (尽其在我)   2018-04-18 09:08:00
推好文!
作者: fantasychese (林阿宅)   2018-04-18 09:33:00
推推推
作者: MOONY135 (谈无欲)   2018-04-18 09:38:00
我只挖有黄金的屎坑 没有黄金的屎坑 敬而远之你逼格甚高
作者: Argos (Big doge is watching u)   2018-04-18 09:50:00
我上等威风,显现一身虎胆。你下流贱格,露出半个...X头?
作者: waitingjune (waiting)   2018-04-18 10:23:00
我是认为在台湾的 pool 底下 a 说的没错 台湾池浅早点研究市场 转pm 有搞头很多但拿到global的工程项目以后 z大说的价值观才能体现
作者: Argos (Big doge is watching u)   2018-04-18 10:38:00
我倒不觉得一定要global才有价值 我想上面反方其实根本没有真正学过所谓的clean code或是敏捷开发实作技术而且clean code的定义其实蛮广的 你只是遵行其中一小部份对工程师本身而言就已经有很大的帮助了 倒不是说处处都要抽象化 玩接口什么的 光是变量好好命名 method拆成小的 这个就算你是顺手hotfix也能做到吧?我的意思是当clean code已变成一种习惯 其实根本不会比随手乱改来得慢 说不定反而还更有效率 更少错误
作者: chung928 (chung928)   2018-04-18 10:45:00
推这篇,三百万那个真的笑话一篇
作者: Masakiad (Masaki)   2018-04-18 10:54:00
扣的架构写的不好是要怎么写的快啦......以为烂扣才开发的快是多junior
作者: sorryla (Mr.东)   2018-04-18 11:09:00
现在市面上大公司的产品大多一开始都不是global的
作者: pttworld (批踢踢世界)   2018-04-18 11:09:00
我想知道的是身为工程师反抗需求经验
作者: sorryla (Mr.东)   2018-04-18 11:10:00
没有一定要global产品才能展现价值,FB一开始也只开美国
作者: pttworld (批踢踢世界)   2018-04-18 11:11:00
需求是PM或SA接的,先反抗自己人,成功了还有客户那关
作者: sorryla (Mr.东)   2018-04-18 11:12:00
工程师反抗需求的经验很多啊,我们部门常常有客户送更改
作者: pttworld (批踢踢世界)   2018-04-18 11:12:00
也许你现在资深讲话大声,但这个问题是工程师位阶的
作者: sorryla (Mr.东)   2018-04-18 11:13:00
需求,我调查完就跟主管PM说这个当初就是by design,PM还不是乖乖的reject客户我也不是什么大咖,就小小码农而已
作者: pttworld (批踢踢世界)   2018-04-18 11:18:00
现在是问明明可以改但是不改去反抗a大这个范例是可以改,可以改又为何反抗
作者: SilvesterW (A Programmer)   2018-04-18 11:58:00
没有什么是不能改的啊,只是改了就变成技术债
作者: x123356 (x123356)   2018-04-18 12:26:00
推楼上 可以改就不用管为什么而改了吗改了会不会造成后续的问题 都不用评估就答应吗说实话自己奴不要把这样的想法也套在别人身上
作者: sorryla (Mr.东)   2018-04-18 13:18:00
程式有什么东西是不能改的,问题就是为什么要为了奥客去改。这个范例明明就是个客户硬凹的问题,却变成要改程式码来解决,而且还改得很烂如果可以改就不反抗,那你也不用反抗啦,因为程式一定能改,怎么改的问题而已喜欢当任人宰割的工程师请自便
作者: firingmoon (小天)   2018-04-18 13:32:00
没有什么做不到的 要花多少时间而已
作者: vi000246 (Vi)   2018-04-18 13:56:00
很同意argos大讲的 当clean code已成为习惯哪怕再急的情况 都会用有利于维护的方式写code像判断level的程式一定常常用到 封装起来成为一个method就算要加if else 也只需要加一次
作者: Argos (Big doge is watching u)   2018-04-18 14:21:00
老实讲我真有点讶异 我知道很多人对code的品质并不是很要求但老实说这真的没差 个人选择而已 只要公司OK 你也OK 那每个照样领钱 这真的没有差但我不能理解的是 明知道自己写的是狗屎 明知道自己超级没有职业道德 还为此沾沾自喜 甚至得出人家认真整理都是白痴的结论 XD没职业道德指的是只写出自己看得懂别人看不懂的东西 而且是“故意”的能力不好 也不想提升 只想混饭吃 这真的没什么 满街都是但“刻意”写出垃圾 还把写垃圾的借口怪到时程上 重点是为此还引以为傲 真是叹为观止耶
作者: atst2 (atst2)   2018-04-18 14:58:00
楼上,这是一个“不能只有我看到”的概念。身为一个网络酸民,时时想着报复社会也是很合理的.
作者: paint (有斑纹的马)   2018-04-18 15:45:00
其实也没什么 信仰不同罢了 可以是权力 情感 自我 责任 etc想要说服/被说服 失败了 生气或优越 没必要 各自轨道不变
作者: Ekmund (是一只小叔)   2018-04-18 18:01:00
抱歉 好奇一些不是那么有关的问题原po平常上班闲暇时 以及下班后 大多怎么安排?
作者: pttworld (批踢踢世界)   2018-04-18 20:14:00
a大提到cid这不外银行或电信,发动者是社会大众或往来公司,当需求经过发动者,客服部,资讯部,开issue外包厂商PM, SA,最后到第一线工程师,把这需求回绝的可能性为何流行语,解决不了问题就把提出问题的人解决掉以a大的范例就要回绝需求,这好日子能过多久
作者: art1 (人,原来不是人)   2018-04-18 20:59:00
楼上的意思是只要经过这些流程,不管内容如何都只能接受
作者: sharku (明珠求瑕)   2018-04-18 22:18:00
好文推
作者: MOONY135 (谈无欲)   2018-04-18 22:24:00
反抗就是要提出更好的做法
作者: viper9709 (阿达)   2018-04-18 22:33:00
老实说还满中肯的XD
作者: superpai (超级白)   2018-04-18 23:35:00
我还真没遇到需求是写烂code的,不知道要反抗啥
作者: CaLeLu (苦逼人生1.0)   2018-04-19 01:32:00
作者: x123356 (x123356)   2018-04-19 01:59:00
笑了 上面说的那一大串流程 中间都没有RD参与这种公司还是快逃 履历打开你会发现新天地
作者: Awenwen (初心者)   2018-04-19 02:16:00
这篇有软件版的感觉了,不然以为在看尸体版…知道就是写烂还引以为理真的看傻眼
作者: inkocean (DY)   2018-04-19 08:36:00
推这篇
作者: WiseLin1125 (Wise)   2018-04-19 20:35:00
我觉得这篇要资深的人看比较适合,junior的来看会完全搞错重点失去方向,阿弥陀佛善哉善哉…。我也是觉得,刚好最好,但有时候很多junior根本无从认知什么是刚好,总会拿google high level来跟你吵说这才是刚好lol
作者: alex70266 (小眼)   2018-04-19 22:24:00
楼主: zanyking (最后的六年级生)   2018-04-20 02:53:00
回Wise:资深的人如果不觉得是这样,那就是市场天花板太低了,生存是建立在外界环境没来冲击上Junior 看是看天花板的位置,跳起来摸不到就是有待加强不要再杀猪公了,人生本来就是要用力跳去冲撞天花板的等到天花板到二楼一半高,就该来垫高地板了
作者: WiseLin1125 (Wise)   2018-04-20 09:06:00
我要说的是,不是每个人都有能力成为资深,如果有人天生就是一辈子跳不高,甚至没有双腿,你还是鼓励他跳,结果从轮椅上摔死了,也是应该他的命?似乎太残忍。我要表达的是会成为资深的,通常不用三年就熬出头了,自然会去市场上衡量自己的value,写code的也可以收放自如的clean code,大概是这样。
作者: Masakiad (Masaki)   2018-04-20 10:11:00
不好意思 跳不起来就被上涨的潮水淹死就好不要写一堆烂code拖别人下水还冠冕堂皇
作者: WiseLin1125 (Wise)   2018-04-20 10:30:00
其实我也有想过,只是觉得太残忍XD
作者: Masakiad (Masaki)   2018-04-20 11:00:00
残忍不会啊 可以转换跑道不做软件相关
楼主: zanyking (最后的六年级生)   2018-04-21 01:48:00
我鼓励他转行,真的,做开发的双脚就是对于新的范式与技术的追求,软件开发的行业特殊性在于:他实在太年轻真正具现代化雏形的商用架构开发堆叠,我会说从smalltalk开始,而那不过是50年前不到的事情,对比于建筑、音乐、医学,太多基础工具比如像凿子锯子之类的是这50年才创造出来,而任何1000年前做木工、搞建筑的穿越到现在来都会认得那些工具,在花一些时间不去细究细节,也都可以知道动力工具的原理与使用,但软件开发呢搞不好还有工具是还没被创造的,一但出现,20年后的人们就会很不适应,而这时间是比一代人的职业生命短的这就是为何要撑高天花板的根本原因,如果老了成为炮灰是必然,那我至少可以多吃几发子弹,在毁灭前找到新的道路
作者: jerry771210 (说在多也没用)   2018-04-21 07:40:00
W2一M是台票的话好像也是XD
作者: penril0326   2018-04-21 18:57:00
作者: shortoneal (不告诉你咧)   2018-04-30 23:19:00
感谢有这篇

Links booklink

Contact Us: admin [ a t ] ucptt.com