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