Re: [請益] 工作四年多開始迷惘
還是很多人對 clean code 的烏托邦有著不切實際的夢想....
醒醒看看 real world 的例子吧......
下面都是真人真事
有一天,客服接到客訴,客人發現我們用戶條款有模糊不清的地方,導致客人使用我們的
服務權益受損。因為某個功能,原本設定為VIP方案才能使用,但用戶權益沒有釐清,導
致這個初階用戶認為自己應該也享有這個功能。
在解說無效下(通常都是無效的),客戶要求退費並且威脅要 消保官和發文抹黑,客服
經理當然為了公司品牌、保全用戶,決定個案處理讓這位客戶能特別使用這個VIP功能...
.,並且承諾明天就生效。
回到 RD 場景,這種 Member.Level 1 的客人要能夠使用 某特定 Level 3 的功能,而且
不是所有 Level 3 都能用,只有某一隻 Level 3 的功能....
幹,明天就要生效?RD 默默地下 SQL 查出這位客戶的 ID, 在那隻 Level 3的功能的 au
thorize code 寫下一行非常骯髒的
if (cid == 65432) return true;
上版。
事情過後,客戶不吵了,RD 內部安排要不要 重購 這個 hotfix, 在 Db 內設定一個exce
ptional member 的資料表,讓客服可以有 UI 設定這種 Level 不到位的特殊顧客?
客服經理說:不用,這種情況不會再發生!我們已經更新的客戶權益說明,排除這種誤解
!不會再有下一人!
RD 面面相覷,客服經理說不會再發生,那我們還需要投入資源做一個例外模組嗎?還是
就讓那個帶著 magic number 的怪異 if 停留在程式碼中?
真實世界的選項是什麼,相信大家猜得到。
過幾天,又發生公司因為系統上版過久,超過官網公告的 downtime 維護時間。等著使用
公司系統的用戶逐一抗議自己的權益受損,支付吃到飽的費用卻超過公告時間無法使用..
..
接下來談的補償辦法,又是目前系統根本沒有設計過的方式,跟上面提到超越Level限制
又是不同的作法。RD 們又開始那著這些客戶清單,一條條地輸入
If (cid == .....
回頭來看,當初沒有開發那個 Level 例外的模組是對的,因為後面發生的例外處理,解
決方案是什麼根本無法預料!
但是,這就是「營運」啊!這些處理真的就讓公司能在市場上繼續發光發熱!
就連 MS 也做過類似的事情,這未來有空再說。
這些dirty code有沒有影響未來系統的修改?
有的!像是這些寫死的邏輯,那些客戶現在還在使用嗎?還是早就解約離開了?還在使用
的,我們更新功能要怎麼維持當初客服保證的補償不會受影響?
這些都變成修改系統的干擾。
但是,這些頂多增加修改的成本和難度,卻沒有害當初公司業務根本做不起來。
這就是一種技術債槓桿。
我想問那些把 clean code 和 DP 看得甚高的工程師們,在這樣現實的商業生活中,你會
怎麼做的讓我刮目相看呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.20.48
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1523793727.A.CA1.html
推
04/15 20:08,
6年前
, 1F
04/15 20:08, 1F
推
04/15 20:09,
6年前
, 2F
04/15 20:09, 2F
→
04/15 20:09,
6年前
, 3F
04/15 20:09, 3F
→
04/15 20:09,
6年前
, 4F
04/15 20:09, 4F
推
04/15 20:09,
6年前
, 5F
04/15 20:09, 5F
→
04/15 20:13,
6年前
, 6F
04/15 20:13, 6F
→
04/15 20:13,
6年前
, 7F
04/15 20:13, 7F
推
04/15 20:14,
6年前
, 8F
04/15 20:14, 8F
推
04/15 20:17,
6年前
, 9F
04/15 20:17, 9F
→
04/15 20:17,
6年前
, 10F
04/15 20:17, 10F
→
04/15 20:17,
6年前
, 11F
04/15 20:17, 11F
推
04/15 20:17,
6年前
, 12F
04/15 20:17, 12F
→
04/15 20:18,
6年前
, 13F
04/15 20:18, 13F
→
04/15 20:21,
6年前
, 14F
04/15 20:21, 14F
→
04/15 20:21,
6年前
, 15F
04/15 20:21, 15F
推
04/15 20:22,
6年前
, 16F
04/15 20:22, 16F
推
04/15 20:23,
6年前
, 17F
04/15 20:23, 17F
→
04/15 20:24,
6年前
, 18F
04/15 20:24, 18F
推
04/15 20:24,
6年前
, 19F
04/15 20:24, 19F
→
04/15 20:25,
6年前
, 20F
04/15 20:25, 20F
→
04/15 20:26,
6年前
, 21F
04/15 20:26, 21F
→
04/15 20:28,
6年前
, 22F
04/15 20:28, 22F
→
04/15 20:28,
6年前
, 23F
04/15 20:28, 23F
→
04/15 20:28,
6年前
, 24F
04/15 20:28, 24F
→
04/15 20:28,
6年前
, 25F
04/15 20:28, 25F
→
04/15 20:28,
6年前
, 26F
04/15 20:28, 26F
推
04/15 20:46,
6年前
, 27F
04/15 20:46, 27F
→
04/15 20:46,
6年前
, 28F
04/15 20:46, 28F
推
04/15 20:49,
6年前
, 29F
04/15 20:49, 29F
→
04/15 20:49,
6年前
, 30F
04/15 20:49, 30F
→
04/15 20:49,
6年前
, 31F
04/15 20:49, 31F
推
04/15 20:50,
6年前
, 32F
04/15 20:50, 32F
推
04/15 20:56,
6年前
, 33F
04/15 20:56, 33F
→
04/15 20:58,
6年前
, 34F
04/15 20:58, 34F
推
04/15 21:01,
6年前
, 35F
04/15 21:01, 35F
推
04/15 21:05,
6年前
, 36F
04/15 21:05, 36F
推
04/15 21:07,
6年前
, 37F
04/15 21:07, 37F
→
04/15 21:07,
6年前
, 38F
04/15 21:07, 38F
→
04/15 21:07,
6年前
, 39F
04/15 21:07, 39F
還有 298 則推文
→
04/16 10:23,
6年前
, 338F
04/16 10:23, 338F
→
04/16 10:24,
6年前
, 339F
04/16 10:24, 339F
→
04/16 10:24,
6年前
, 340F
04/16 10:24, 340F
→
04/16 10:25,
6年前
, 341F
04/16 10:25, 341F
→
04/16 10:25,
6年前
, 342F
04/16 10:25, 342F
噓
04/16 10:39,
6年前
, 343F
04/16 10:39, 343F
→
04/16 10:39,
6年前
, 344F
04/16 10:39, 344F
推
04/16 10:53,
6年前
, 345F
04/16 10:53, 345F
推
04/16 12:50,
6年前
, 346F
04/16 12:50, 346F
→
04/16 12:50,
6年前
, 347F
04/16 12:50, 347F
→
04/16 12:51,
6年前
, 348F
04/16 12:51, 348F
→
04/16 14:15,
6年前
, 349F
04/16 14:15, 349F
→
04/16 14:16,
6年前
, 350F
04/16 14:16, 350F
→
04/16 14:17,
6年前
, 351F
04/16 14:17, 351F
→
04/16 14:30,
6年前
, 352F
04/16 14:30, 352F
→
04/16 14:32,
6年前
, 353F
04/16 14:32, 353F
→
04/16 14:33,
6年前
, 354F
04/16 14:33, 354F
→
04/16 14:35,
6年前
, 355F
04/16 14:35, 355F
→
04/16 14:39,
6年前
, 356F
04/16 14:39, 356F
→
04/16 14:46,
6年前
, 357F
04/16 14:46, 357F
→
04/16 15:02,
6年前
, 358F
04/16 15:02, 358F
→
04/16 15:02,
6年前
, 359F
04/16 15:02, 359F
推
04/16 15:10,
6年前
, 360F
04/16 15:10, 360F
→
04/16 16:49,
6年前
, 361F
04/16 16:49, 361F
→
04/16 17:30,
6年前
, 362F
04/16 17:30, 362F
推
04/16 19:14,
6年前
, 363F
04/16 19:14, 363F
→
04/16 19:16,
6年前
, 364F
04/16 19:16, 364F
→
04/17 00:02,
6年前
, 365F
04/17 00:02, 365F
推
04/17 00:55,
6年前
, 366F
04/17 00:55, 366F
→
04/17 00:55,
6年前
, 367F
04/17 00:55, 367F
推
04/17 01:19,
6年前
, 368F
04/17 01:19, 368F
→
04/17 01:19,
6年前
, 369F
04/17 01:19, 369F
推
04/17 08:15,
6年前
, 370F
04/17 08:15, 370F
→
04/17 09:57,
6年前
, 371F
04/17 09:57, 371F
→
04/17 10:01,
6年前
, 372F
04/17 10:01, 372F
→
04/17 10:02,
6年前
, 373F
04/17 10:02, 373F
推
04/21 18:49,
6年前
, 374F
04/21 18:49, 374F
→
04/21 18:49,
6年前
, 375F
04/21 18:49, 375F
→
05/09 19:18,
6年前
, 376F
05/09 19:18, 376F
→
05/09 19:18,
6年前
, 377F
05/09 19:18, 377F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
請益
7
20
請益
55
161
請益
63
365
完整討論串 (本文為第 6 之 12 篇):
請益
22
81
請益
13
40
請益
13
58
請益
14
27
請益
68
377
請益
7
20
請益
55
161