作者keke0421 (zrae)
看板Soft_Job
标题[转贴] 工程师应该放心大胆地创造技术负债
时间Sun Nov 12 15:39:45 2017
觉得好贴切...分享给各位
转贴於
https://goo.gl/dEpoJQ <--medium 好读版
身为软体工程师,你应该要尽量写出无法维护的程式码,而且绝对不写测试。
你应该要知道:在绩效管理下,你愈是认真负责,愈是做到符合专业伦理的要求,你反而
看起来绩效愈差。而你大概会有 87% 的比例,会遇到这种绩效管理。
举个例子,假如你是警察,你决定要认真抓小偷,於是上个月在你的管区破获了五十起窃
盗案,这个月因为你的努力,破获的案件增长到一百件Xo代表什麽呢?这代表看起
来你的管区治安变差了,而你应该要为治安变差负责,你才是应该被检讨的对象。於是你
知道,警察好像应该要想办法破案,但实际上,你的绩效并不是来自破案,而是吃案。
如果你花了半年时间,抽丝剥茧理清了复杂的商业逻辑,建立了清爽明确的抽象层,并且
预先额外设想了其他的使用情境,最後开发了一套易於扩充的软体架构,让一个大学刚毕
业的新人,都可以在你的架构上不到一个星期就可以开发出新功能。这代表什麽呢?这代
表你的绩效很差XA的管理者只会看到,你花了半年才做了一件事清,一个新人刚来
,却只需要花上一个星期就可以完成一件事,那还要你来做什麽呢?
至於可以轻松开发出新功能的新人,他会怎麽看呢?可以这麽快开发出新功能,当然是因
为他自己的功劳啊!跟你有什麽关系呢?真的要了解你到底做了什麽,其实只有一个办法
,就是要阅读你的程式码,但,放心好了,不会有人会去读的。
你要做的事情就是:管理者设定了什麽绩效,你就想办法达成什麽绩效。如果管理者设定
的指标是你修好了多少 bug,那麽你就要想办法一开始就在你的程式中制造许多 bug,免
得日後需要修 bug 的时候没有 bug 可以修。如果管理者的目标是加速开发,你就应该要
不计後果加速开发新功能,明知道是加速迈向毁灭,你也要加速开发。
事实上,身为软体工程师,你也根本不用考虑後续维护的问题。如果你在一家公司写了一
大堆完全不考虑耦合关系、程式逻辑纠缠不清、命名混乱、使用大量 anti-pattern、到
处都是怪气味、效能极差而且宛若天书的程式码,而你开始为了继续维护这样的技术负债
感到痛苦的时候,其实只代表一件事情:你已经在这家公司呆得太久,而且还没有升上去
当主管。
这个时候你就会知道加速开发的好。你完成了这麽多项功能,於是在你想要换工作得时候
,你可以写出洋洋洒洒的履历表。反之,你会把你写了几条单元测试、达成多高的覆
盖率这种数字放进履历表里头吗?把力气放在测试这种无助於发展事业的事情上,完全就
是在浪费你的时间。
你也同时应该感谢是谁想出来软体产业园区这种德政,原本制造业的产业园
区是让上中下游供应链可以集中在一起,降低运输成本,但软体这一行又没有供应链这种
事情,成立园区只是让相互竞争的软体公司其中在一起,唯一降低的就是人员流动的成本
,换工作都不用搬家。多好啊你看。
如果你有机会高升,开始担任主管,你就会知道,当初写下的那些无法维护的 legacy
code,其实更有助於你担任主管的管理工作。
担任主管最重要的工作,不是别的,就是一边把持住自己的位子一边想办法继续往上爬,
所以主管绝对不可以让部属表现得比自己更优秀,而你当初写的程式码,就是部属事业道
路上最好的绊脚石。你除了可以一边抱怨为什麽新功能开发愈来愈慢,一边说嘴当年你只
花了多短的时间就写了多少程式码,果然只有你有资格担任大家的主管。
当然,总有一天技术负债会大到你的部门什麽东西都做不出来,你的公司什麽服务都拿不
出来卖,但是这一点都不会影响你找新工作,你瞧,现在,你的履历表上面,可写着你当
过主管呢!拿着这份履历表,你更有机会去别的地方,空降担任更高阶的主管。
技术负债从来就不是什麽问题。谁说你制造了技术负债之後,你就得要自己还债?
在你的人生中,你不需要要为其他人而活,也不是为了程式码这种死物而活,你真正应该
要负责的对象只有你自己;而你知道人是经济而自私的动物,既然你的本性就是贪婪,你
就应该成就贪婪。你要舍弃专业才能成就事业,你应该要把握当下的绩效,而不要为了可
能不存在的悲剧结果恓恓惶惶。凯因斯不就曾经说过:「In the long run, we are all
dead」?
身为软体工程师,你应该放心大胆地创造技术负债。这麽做唯一的风险,就只有在你换工
作的时候,也会接手一大笔前人留下来的技术负债。不过,这种事情反正也早就已经发生
了。
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.169.172.125
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1510472387.A.D33.html
1F:推 AV5566: 不知道为什麽 觉得好中肯 11/12 15:45
2F:推 JackChena: 怎麽觉得很现实,却又无奈 11/12 15:53
3F:推 TitanEric: 现在还没工作没办法认同… 但也许工作後想法就会改 有 11/12 15:55
4F:→ TitanEric: 前辈可以分享吗 11/12 15:55
5F:→ pttworld: 创造技术负债怎麽升主管没讲清楚。直接跳当主管谁不会讲 11/12 15:57
6F:推 vi000246: 这种赶专案没时间规划架构的公司 本身就是雷 11/12 15:59
7F:嘘 accessdenied: 你的心态很垃圾! 11/12 16:02
8F:推 shortoneal: 但是其实这个时代还能靠这个爬上主管的机会不多了 11/12 16:03
9F:推 expury: 然後就被主管约谈了xdd 11/12 16:08
10F:推 ian90911: 原文的帐号叫做"工程师干话" XD 11/12 16:09
11F:推 kain777: 写的不错 这就是现实阿 11/12 16:09
12F:嘘 TllDA: 警察的举例就很烂了 後面略过没看 11/12 16:13
13F:推 robler: 写的很好阿,很现实 11/12 16:19
14F:→ robler: 很多主管都会喊着 快速开发 那就快给他看阿 反正以後爆了 11/12 16:20
15F:→ robler: 我不在了他也不在了 大家都开心~ 11/12 16:20
16F:→ gentleman45: 想到之前看一篇文,工程师在程式里加了回圈,老板要 11/12 16:22
17F:→ gentleman45: 求提升速度就拿掉一个回圈并要求加薪 11/12 16:22
18F:推 yyc1217: 警察不是这样算的 破案越多绩效越好才对 11/12 16:30
19F:推 monoceros629: 中肯到不行,快速产生绩效然後升职加薪跳槽,亲眼 11/12 16:32
20F:→ monoceros629: 见证同事升职加薪,然後程式码别人维护 11/12 16:32
21F:推 shps951015: 就不要遇到技术主管跟技术下属 你是我上属 一定检举 11/12 16:40
22F:推 wtao: 不好的程式创造多个工作机会,此言不假 11/12 16:43
23F:→ NodeWay: 是满多公司这样 但也看过不少公司有在执行code review 11/12 17:14
24F:→ NodeWay: 反过来想 一直在写烂code的人 换了工作技术还是没提升 11/12 17:15
25F:→ NodeWay: 一样待在那种不要求技术品质的环境 恶性循环 11/12 17:15
26F:推 chrisjohn214: 工作很久了,这篇是事实没错。 11/12 17:15
27F:→ chrisjohn214: 只有技术主管有话语权时才有用,但是大部分专案一 11/12 17:17
28F:→ chrisjohn214: 赶,技术职往往不敌业务 11/12 17:17
29F:嘘 qazedcrfv: 如果心态这样写程式永远不会变强 11/12 17:24
30F:推 a1982213: 技术是不会强,因为这是公司政治问题 11/12 17:26
31F:推 abccbaandy: 很中肯阿,老板根本不在乎你的code,验收能过就好 11/12 17:27
32F:嘘 Hordor: 其实有小主管有兼开发就避免了 11/12 17:29
33F:嘘 djshen: 以为乱写又埋bug 要解的时候只会有你当初埋的那些? 11/12 17:29
34F:推 A90812345: 中肯文章收录XDD 11/12 17:30
35F:→ keke0421: 不是不想写好,而是大环境和公司政治问题 11/12 17:32
36F:推 stitchris: 太中肯了!! 台湾环境是如此没错 11/12 17:35
37F:→ wt: 用这些招最多就是在後段的公司里跳来跳去。想要进到前段的公司 11/12 17:41
38F:→ wt: (薪水也前段),好好精进自己、展现实力,比较实际 11/12 17:42
39F:推 chuegou: 够酸 我连续两个工作都在收烂摊 觉得酸的好 11/12 17:51
40F:→ MOONY135: 不知道该说什麽 但的确很符合 11/12 17:53
41F:推 anandydy529: 中肯 11/12 18:01
42F:推 cokellen: 台湾就是这样 11/12 18:03
※ 编辑: keke0421 (1.169.172.125), 11/12/2017 18:17:22
43F:嘘 jen1121: 自掘坟墓&心态不对 11/12 18:19
44F:→ MOONY135: 不打算维护的话只要能动就可以了 11/12 18:24
45F:推 drajan: 会看不到你做的成果的主管跟公司 你还待着干嘛?慢性自杀? 11/12 18:25
46F:嘘 g001613001: 感觉这种心态不对... 11/12 18:30
47F:推 ssufoppp: 中肯啊虽然是反讽但是很符合台湾软体产业现实 11/12 18:50
48F:→ sojoasd: 若每天都在维护痛苦的程式,花时间弄还被嫌做太久,也没 11/12 19:02
49F:→ sojoasd: 时间、没心想改,只好能跳就跳比较实在,钱越多改烂code 11/12 19:02
50F:→ sojoasd: 还比较情愿 颗颗 11/12 19:02
51F:推 codehard: 符合现实给推 11/12 19:15
52F:→ y3k: 看状况吧 要这种作为还能赚钱 公司对外的政治力要很高 11/12 19:22
53F:→ y3k: 如果上面太软 弄到最後还是丢回来自己人再扛 我是搞不清楚这 11/12 19:22
54F:→ y3k: 样是搞啥小... 常觉得跳一跳去国外或自己存钱出来闯比较实在 11/12 19:24
55F:推 vi000246: 反正我很简单 上头要我快我就快 等烂摊收不掉了再跳槽 11/12 19:55
56F:→ vi000246: 上头肯给我时间 那我就把公司专案当自己的 好好规划维护 11/12 19:56
57F:→ vi000246: 不过这种专生大便的公司我也待不下去就是了 11/12 19:57
58F:→ cha122977: 台湾真是这样的话 也难怪软体业起不来了 11/12 20:55
59F:推 TAKADO: 觉得要耍这种小手段才能生存/上位的公司本身体制就有很大 11/12 21:07
60F:→ TAKADO: 问题。就跟某些产业,认真踏实有专业背景的业务没业绩, 11/12 21:07
61F:→ TAKADO: 而靠带客户踹酒家收回扣顺便A公款的业务反而是公司红牌一 11/12 21:08
62F:→ TAKADO: 样不健康。 11/12 21:08
63F:推 NCUking: 很中肯呀 硬体厂里面的软体部门都是这样搞 11/12 21:13
64F:推 RunRun5566: 烂地方的确可以这样搞 11/12 21:44
65F:推 jlhc: 这篇讲的很对呀 事实上软体开发的大企业都是这样搞的吧 11/12 22:15
66F:→ jlhc: 只是作法不一定一样 11/12 22:15
67F:推 setterwu: 大致上是正确不过预留客户可能要你修改你可以快速改架构 11/12 22:24
68F:推 lovving777: 认真推中肯文 11/12 23:21
69F:推 aacs0130: 很多公司都这样。技术债的痛只有技术人懂,高层如果只要 11/12 23:56
70F:→ aacs0130: 求时程<最後就会债越欠越多越来越难开发 11/12 23:58
71F:→ aacs0130: 时程+技术债压下来就是工程师们无止尽的加班 11/12 23:58
72F:推 XJY13: 正解啊 就像我学长离开前说 想要我的code吗 到svn/git 挖 11/12 23:58
73F:→ XJY13: 就开启大bug时代 我转到新公司尽量把code品质弄好反被说慢 11/12 23:59
74F:→ aacs0130: ASAP, time to market, "最小可行产品"现在听到都会头痛 11/12 23:59
75F:推 shortoneal: 好高高层会觉得这些就是请贵松松工程师的意义啊 11/13 01:37
76F:→ t64141: 觉的心态不对,但非技术出身的主管真的会被这种手段骗过去 11/13 01:48
77F:→ flash5408: 这啥 不用code review 吗 11/13 03:29
78F:→ joyce66789: 通常做得到这种境界的人都是浑然天成的就成功了 XDDD 11/13 03:42
79F:推 pig0038: 新人表示...面过的 50k/m 以上 entrance level 外商工作 11/13 08:00
80F:→ pig0038: 主管都会 coding, 单位都会unit test 跟 code review... 11/13 08:00
81F:→ pig0038: .还有这种老人思维只能一辈子卡外包公司 11/13 08:00
82F:→ pig0038: 面试主管直接看实作包含 unit test, 以及 code 可读性, 11/13 08:04
83F:→ pig0038: O(n)反而是其次 11/13 08:04
84F:嘘 abc01251: 狗咬狗 一嘴毛 11/13 09:51
85F:推 usoko: 推 我也是不断refactor然後考绩被打很差的人 哈哈哈哈哈 11/13 10:29
86F:推 Neisseria: 这是作官的思维,真的要写好软体不要学这些奥步 11/13 11:46
87F:→ Neisseria: 不过... 必要时还是可以小用一下啦,有时候要看时势 11/13 11:46
88F:→ ku399999: 嘘的到底是...看不懂反讽吗 11/13 12:39
89F:推 d1288999: 觉得相当中肯 11/13 13:15
90F:推 cerwvk: 中肯 11/13 13:17
91F:推 alan23273850: 中肯 只能找有code review的公司了 11/13 16:36
92F:嘘 wellkom: 这种废文竟然可以赚稿费,台湾真的要沉了(我是说原文) 11/13 17:23
93F:→ wellkom: 国之将亡百鬼夜行 11/13 17:23
94F:嘘 s860134: 低能思想,code review 叫你翻掉重写 11/13 19:01
95F:→ s860134: 没 code review 就是会有这种妖魔鬼怪 11/13 19:02
96F:推 supernow: 中肯推,啥code review能吃吗?老板就只要快 11/13 21:49
97F:推 Lorekeeper: 老实说...中肯 XDDD 11/13 22:29
98F:推 fish0112: code review是啥XD 号称了1年继续期许XD 11/13 23:52
99F:推 doranako: 有点现实,但是很反对,因为这样也对自己也是很麻烦 11/14 08:33
100F:推 oyaji5566: 我开始相信你了!准备进行人工程式码混淆作业 11/14 15:49
101F:→ odahawk: 所以有些公司股价只剩几元不是没道理的 11/14 16:47
102F:→ viper9709: 心态不对+1 11/14 22:42
103F:嘘 THEWORLDS: 可怜 没遇过国际等级骇客写这啥文章 11/15 02:22
104F:推 sthermit: 虽然一看就是错的,但是在现实生活是对的 11/15 10:45
105F:推 twolight: 如果觉得是对的,该思考究竟自己待在什麽环境了吧 11/15 19:43
106F:推 internetms52: Unit test 是没办法阻止种做法的,code review 完要 11/15 21:41
107F:→ internetms52: 改架构也很为难,就变这样子了,一天到晚review跟 11/15 21:41
108F:→ internetms52: 自己写没什麽两样... 11/15 21:41
109F:推 leolarrel: 台肯! 11/17 17:09
110F:推 Void956: 年轻的时候的我一定不认同 11/25 10:08
111F:→ Void956: 但是现在的我大概可以理解你为什麽这麽做 11/25 10:08
112F:推 Ghamu: 觉得有点中肯 我都想一堆後续维护 把开发时间弄长 结果另一 11/26 13:45
113F:→ Ghamu: 位写一堆鬼命名超长function 快速做出来 在外人眼中我就是 11/26 13:45
114F:→ Ghamu: 效率差他就速度快 11/26 13:45
115F:→ Ghamu: 然後我就是接受他legacy code维护的人 他老兄去跑去新专案 11/26 13:46
116F:→ Ghamu: 写新的害人code XDDD 想必後来也都是我来维护 呜呜 11/26 13:47
117F:推 david7539: 没错,尤其在共同开发的时候,同事想要把你搞慢就酱干 11/30 21:21