Re: [請益] 請問有成功在公司內導入OO觀念的案例嗎?

看板Soft_Job作者 (pokerhand)時間13年前 (2011/04/18 00:14), 編輯推噓9(9090)
留言99則, 9人參與, 最新討論串11/15 (看更多)
看著上面的美玉之文 讓我覺得不補充一下細節過意不去 先說, 由上面眾多好文, 我已經大概了解要怎麼做了. 感謝各位寶貴的經驗談. 特別是熱心的lovdkkkk, 來信跟我討論令我受益良多. --- 我所在的team 算新人team, 有支援AB兩個 project, 支援的人數一半一半, 我負責帶支援AB兩個project的新人的技術方面. 我支援的project A的前輩都是身經百戰的強者, design pattern跟OO思維到系統架構熟到爛. 對重構 & 測試先行 & 物件抽象非常在行, 重構在這邊的進行大致上是沒什麼問題的, 也不用特別去推, 大家都有共識. 有問題的是支援project B的新人, 向我們反映那邊的code實在是.... project B的前輩也是相當熱心的在帶支援B的新人, 但無奈觀念還是在functional programming, 很多寫法在maintain上會出問題而不自知. 也因為這樣, project B在code review的情況只有浪費時間可以形容, 因為project B的前輩幾乎沒辦法給任何建議, 卻要project裡所有人一起 一行一行的code review. 大致上就是這樣的情形, 並不是所有的前輩都沒有OO的概念, 而是project上各自不相干, 所以變成"你強是你們家project的事, 與我們無關" (事實上兩邊的project架構看得到時代的眼淚, 一邊是view, logic, dao分層, 另一邊則是MVC, domain model, sql全部的code都在同一個class) 所以在A的credit再強, 要到B去發言一樣是無力的(精確一點說, 是會被反彈). 短期內我都是呆在project A支援, 但是同時我也不希望支援project B的人學了一堆 糟糕的習慣回來. --- 看到這裡你們可能會說, 那隨他們去吧, 關你什麼事? 問題就是關我屁事阿=.=||| 而且是不小的屁事. 因為我們是動態支援的team, 所以會有去project B支援的情形. 我原本天真的希望, 我能透過幾個概念性的演說和proof of concept 能有機會讓project B的人接受新觀念, 改變目前copy & paste的可怕寫法. (他們已經習慣改一個功能要好幾天是非常普通的事) 但就前面的經驗談看起來...好像非得在project B那邊建立起credit才推得了. 即使這樣, 我還是希望早一秒是一秒, 能把好的觀念帶給他們, 但... 可能就像約耳說的 "軟體研發一定有些超自然現象,某種神秘的特質,讓每個人都覺得自己很瞭解它。 這真是太神奇了,沒有人會覺得自己知道怎麼切掉爆開的盲腸,或組裝汽車引擎, 除非他們真的學過,但因為某些神秘不可知的因素,卻使一堆人自以為很懂軟體研發" 我還沒有開始傳教, 因為我知道棒打出頭鳥, 所以一開始我想做的是心得分享而已, 但是我一直在苦惱從哪個切入點才能讓他們願意來聽. 之前他們用原本的方法也活得好好的, 何必學什麼新東西呢? 因為project B走過的路, project A已經走過了. 它們現在改一個地方可能需要一兩天, 但是等到變成project A這種規模的時候 若還是維持原本的寫法不變, 就會變成需要一週. 但是上面給你的期限還是只有2天, 理由是就像lovdkkkk上面提到的, "根據經驗, 這個更動以前就是這麼久". 但以前是十萬本沒歸類的書在圖書館, 現在是百萬本了阿! 趕不上時程怎辦? 加班加爆你那顆健康的肝阿. 因為我們已經走過這段路, 所以一直很重視OO 跟物件權責, 所以我們希望在事情惡化前能先修正它們. 等到我真的去支援project B, 見到百萬本散落一地的書, 然後想到還要先建立 project B的 credit才能防止讓他們繼續腐化, 老實說跟本是浪費project A的經驗. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.248.140

04/18 00:26, , 1F
其實我覺得你這篇講的東西跟一開始描述的完全不一樣了XD
04/18 00:26, 1F

04/18 00:26, , 2F
不過我覺得這是個值得討論的問題,我們置底討論幾天好了。
04/18 00:26, 2F

04/18 00:29, , 3F
我沒提到refactor喔~ 頂多因為懶而少打"希望新code別爛"
04/18 00:29, 3F

04/18 00:31, , 4F
你這篇文章跟你一開始的文章似乎沒人說你提到refactor 。XD
04/18 00:31, 4F

04/18 00:31, , 5F
我提refactor只是因為要在舊的code基礎上長出新的code,
04/18 00:31, 5F

04/18 00:32, , 6F
refactor 是躲不掉的。當然如果舊的已經都不動了,只做新專
04/18 00:32, 6F

04/18 00:32, , 7F
案或功能彼此無複雜相依,那當然不需要refactor。
04/18 00:32, 7F

04/18 00:33, , 8F
不過我想你的問題並不是技術上的問題,我們留看看有沒有組織
04/18 00:33, 8F
※ 編輯: pokerhand 來自: 220.135.248.140 (04/18 00:33)

04/18 00:33, , 9F
的強者可以給你什麼妙招。XD
04/18 00:33, 9F

04/18 00:34, , 10F
下面的文很大一部份開始往refactor走去啦啦啦@"@
04/18 00:34, 10F

04/18 00:35, , 11F
如果只是怕Proj-B的人爛掉,定時的拿Proj-B的case
04/18 00:35, 11F

04/18 00:35, , 12F
來與Proj-A,B的team member一起討論,有救嗎?
04/18 00:35, 12F

04/18 00:37, , 13F
最理想的狀況就是要A,B更上層的主管授權給p或A team指導B的
04/18 00:37, 13F

04/18 00:37, , 14F
跟 code review B 的權限,不過會有這種煩惱當然就是要不到
04/18 00:37, 14F

04/18 00:38, , 15F
兩邊project都有夠份量的老人, 這樣比相當於是在打擊
04/18 00:38, 15F

04/18 00:38, , 16F
project B的人的自尊, 不太好
04/18 00:38, 16F

04/18 00:39, , 17F
這種授權,權限的不足是很難只靠政治方法彌補的。
04/18 00:39, 17F

04/18 00:40, , 18F
不要說coding,使用者介面和遊戲設計也莫名其妙一堆人
04/18 00:40, 18F

04/18 00:41, , 19F
自以為懂
04/18 00:41, 19F

04/18 00:41, , 20F
重點就在授權的也會想,B做得好好的,也沒出大包
04/18 00:41, 20F

04/18 00:41, , 21F
突然A的人跑去他們頭上指東指西, 會打擊B team的自尊
04/18 00:41, 21F

04/18 00:41, , 22F
所以你的契機就得等B趕不上時程出包囉。
04/18 00:41, 22F

04/18 00:42, , 23F
有可能調動嗎? 調一些A裡已經穩定的去B, 換些B的回來
04/18 00:42, 23F

04/18 00:42, , 24F
調過去也沒用啊,講話沒聲音的話去了也是被洗腦回來。XD
04/18 00:42, 24F

04/18 00:43, , 25F
不要被洗 當耳邊風 @@
04/18 00:43, 25F

04/18 00:44, , 26F
先知總是痛苦的阿阿..我開始能體會我阿母的心情了O_Q
04/18 00:44, 26F

04/18 00:44, , 27F
其實我個人私心的建議是覺得你思考超過你地位的東西了,
04/18 00:44, 27F

04/18 00:45, , 28F
只是想想的話沒關係,但是真的要這樣做事的話,要保護好自己
04/18 00:45, 28F

04/18 00:45, , 29F
除非你今天是有權限管理A,B的人,或者你有把握遊說B聽你的,
04/18 00:45, 29F

04/18 00:46, , 30F
不然以你現在要用A的做事方法去說服B,說真的成功率.......
04/18 00:46, 30F

04/18 00:46, , 31F
即使知道這樣是繞遠路,很多時候還是得乖乖照遊戲規則走。
04/18 00:46, 31F

04/18 00:46, , 32F
我知,所以想用我這位子能做的,以發表心得的方式分享
04/18 00:46, 32F

04/18 00:47, , 33F
但是這種"演講" 你知我知, 是很難吸引沒這概念的人聽的
04/18 00:47, 33F

04/18 00:47, , 34F
至少討論時要盡量避免用A的心得進行分享,不然一旦激起競爭
04/18 00:47, 34F

04/18 00:47, , 35F
心態就不用說下去了......
04/18 00:47, 35F

04/18 00:48, , 36F
老實說這件事說急也滿緊急的,我沒權限改做法但是之後
04/18 00:48, 36F

04/18 00:48, , 37F
所以我才說契機要是B真的出包,或者有什麼狀況可以減少B趕工
04/18 00:48, 37F

04/18 00:48, , 38F
維護的 加班的 落後被釘的卻是我
04/18 00:48, 38F
還有 21 則推文
04/18 01:10, , 60F
我是你的話,我會選擇慢慢洗腦新人,但是口頭上絕對不要直
04/18 01:10, 60F

04/18 01:11, , 61F
要戰鬥之前也要練功拿神器才能打大魔王呀.
04/18 01:11, 61F

04/18 01:11, , 62F
接批評B專案。不小心的話會變成逼著新人選你或選老人,雖
04/18 01:11, 62F

04/18 01:11, , 63F
新手村的勇者打大魔王也只有被秒殺的份
04/18 01:11, 63F

04/18 01:11, , 64F
然明明你不是要把老人轟下台自己當王...
04/18 01:11, 64F

04/18 01:12, , 65F
例如說「B案這樣的作法會有XXX的問題,但是由於專案目前OO
04/18 01:12, 65F

04/18 01:13, , 66F
O,所以這樣做也許比較好」之類的台詞,搭配無奈的表情
04/18 01:13, 66F

04/18 01:13, , 67F
點的通的人其實會看的出來你想表達的意思 XDD
04/18 01:13, 67F

04/18 01:15, , 68F
然後也要看同事間的話題氛圍決定推行的力道。保護好自己你
04/18 01:15, 68F

04/18 01:16, , 69F
可以戰鬥十年,不小心的話一年之後你就變黑人,縱使你的
04/18 01:16, 69F

04/18 01:16, , 70F
思想是「對」的,但政治上得不到支持...
04/18 01:16, 70F

04/18 01:18, , 71F
還有另外一個很大的問題,你認為這樣子的專案成員,轉向OO
04/18 01:18, 71F

04/18 01:19, , 72F
後剛開始切的 class,會不會問題更大...[汗]
04/18 01:19, 72F

04/18 01:20, , 73F
如果不讓他們長時間接觸切的優雅的範例,那切出鬼東西的機
04/18 01:20, 73F

04/18 01:20, , 74F
其實他們的問題還沒有到OO階段,目前他們還在copy&paste
04/18 01:20, 74F

04/18 01:21, , 75F
會其實很高...也就是說,對專案B來說,OO可能真的沒有效益
04/18 01:21, 75F

04/18 01:21, , 76F
至少要先想辦法教他們copy&paste的害處(都co十年了...)
04/18 01:21, 76F

04/18 01:21, , 77F
啊,我太注意OO的部份了...
04/18 01:21, 77F

04/18 01:22, , 78F
這個也是...慢慢洗腦新人吧[苦笑]
04/18 01:22, 78F

04/18 01:23, , 79F
其實偶而,偶而啦,CP還是有好處的,例如說每個東西都類似
04/18 01:23, 79F

04/18 01:24, , 80F
但卻又不完全相同的時候,當然最好是能把相同的部份抽出就
04/18 01:24, 80F

04/18 01:24, , 81F
抽出...這就是一個可以用來慢慢洗腦的點
04/18 01:24, 81F

04/18 01:25, , 82F
找出「老人的作法確實有其價值」的點,然後塞入「不過在另
04/18 01:25, 82F

04/18 01:26, , 83F
外一些狀況下,這樣會更好」的台詞。
04/18 01:26, 83F

04/18 01:27, , 84F
然後要搭配無辜的苦笑(Y)
04/18 01:27, 84F

04/18 01:27, , 85F
H大真的很會說話呢 學習
04/18 01:27, 85F

04/18 01:28, , 86F
因為我以前就是這樣跟老人打架 XD 不過還是要注意氣氛
04/18 01:28, 86F

04/18 01:29, , 87F
推死人是不能戰鬥的
04/18 01:29, 87F

04/18 01:34, , 88F
話說回來,這樣子講話習慣以後也可能被人當油條也不一定
04/18 01:34, 88F

04/18 01:37, , 89F
總之大原則是沒有資源的人,儘量不要擺出嫉惡如仇的態勢
04/18 01:37, 89F

04/18 01:37, , 90F
至於你能用的力道有多兇,要看你們公司/部門氛圍而定。有
04/18 01:37, 90F

04/18 01:38, , 91F
公司是工程師跟協理可以直接對嗆事後還被稱讚,有公司是學
04/18 01:38, 91F

04/18 01:39, , 92F
長學弟制度重到不能頂嘴,後者就只能輕巧的鴨子滑水了
04/18 01:39, 92F

04/18 01:41, , 93F
也要想一下你帶的新人在這中間會做什麼反應XD
04/18 01:41, 93F

04/18 12:40, , 94F
H大說的真是讓人心有戚戚焉啊~這不叫油嘴滑舌~這叫高EQ XD
04/18 12:40, 94F

04/18 12:41, , 95F
不過現在趕時程又想把B帶起來~如同H大說的~只能先靠範例了
04/18 12:41, 95F

04/18 12:42, , 96F
不然就算教會了~也不知道要多久才能等到他們切出好東西
04/18 12:42, 96F

04/19 21:56, , 97F
Project B可以先把project拆成數個DLL, 然後以DLL為單位
04/19 21:56, 97F

04/19 21:57, , 98F
重整結構...
04/19 21:57, 98F

04/19 21:58, , 99F
我還是回文好了... :P
04/19 21:58, 99F
文章代碼(AID): #1Dgn7AHx (Soft_Job)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 11 之 15 篇):
文章代碼(AID): #1Dgn7AHx (Soft_Job)