看板 Soft_Job 關於我們 聯絡資訊
看著上面的美玉之文 讓我覺得不補充一下細節過意不去 先說, 由上面眾多好文, 我已經大概了解要怎麼做了. 感謝各位寶貴的經驗談. 特別是熱心的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
TonyQ:其實我覺得你這篇講的東西跟一開始描述的完全不一樣了XD 04/18 00:26
TonyQ:不過我覺得這是個值得討論的問題,我們置底討論幾天好了。 04/18 00:26
pokerhand:我沒提到refactor喔~ 頂多因為懶而少打"希望新code別爛" 04/18 00:29
TonyQ:你這篇文章跟你一開始的文章似乎沒人說你提到refactor 。XD 04/18 00:31
TonyQ:我提refactor只是因為要在舊的code基礎上長出新的code, 04/18 00:31
TonyQ:refactor 是躲不掉的。當然如果舊的已經都不動了,只做新專 04/18 00:32
TonyQ:案或功能彼此無複雜相依,那當然不需要refactor。 04/18 00:32
TonyQ:不過我想你的問題並不是技術上的問題,我們留看看有沒有組織 04/18 00:33
※ 編輯: pokerhand 來自: 220.135.248.140 (04/18 00:33)
TonyQ:的強者可以給你什麼妙招。XD 04/18 00:33
pokerhand:下面的文很大一部份開始往refactor走去啦啦啦@"@ 04/18 00:34
ericwang1017:如果只是怕Proj-B的人爛掉,定時的拿Proj-B的case 04/18 00:35
ericwang1017:來與Proj-A,B的team member一起討論,有救嗎? 04/18 00:35
TonyQ:最理想的狀況就是要A,B更上層的主管授權給p或A team指導B的 04/18 00:37
TonyQ:跟 code review B 的權限,不過會有這種煩惱當然就是要不到 04/18 00:37
pokerhand:兩邊project都有夠份量的老人, 這樣比相當於是在打擊 04/18 00:38
pokerhand:project B的人的自尊, 不太好 04/18 00:38
TonyQ:這種授權,權限的不足是很難只靠政治方法彌補的。 04/18 00:39
littlethe:不要說coding,使用者介面和遊戲設計也莫名其妙一堆人 04/18 00:40
littlethe:自以為懂 04/18 00:41
pokerhand:重點就在授權的也會想,B做得好好的,也沒出大包 04/18 00:41
pokerhand:突然A的人跑去他們頭上指東指西, 會打擊B team的自尊 04/18 00:41
TonyQ:所以你的契機就得等B趕不上時程出包囉。 04/18 00:41
lovdkkkk:有可能調動嗎? 調一些A裡已經穩定的去B, 換些B的回來 04/18 00:42
TonyQ:調過去也沒用啊,講話沒聲音的話去了也是被洗腦回來。XD 04/18 00:42
lovdkkkk:不要被洗 當耳邊風 @@ 04/18 00:43
pokerhand:先知總是痛苦的阿阿..我開始能體會我阿母的心情了O_Q 04/18 00:44
TonyQ:其實我個人私心的建議是覺得你思考超過你地位的東西了, 04/18 00:44
TonyQ:只是想想的話沒關係,但是真的要這樣做事的話,要保護好自己 04/18 00:45
TonyQ:除非你今天是有權限管理A,B的人,或者你有把握遊說B聽你的, 04/18 00:45
TonyQ:不然以你現在要用A的做事方法去說服B,說真的成功率....... 04/18 00:46
TonyQ:即使知道這樣是繞遠路,很多時候還是得乖乖照遊戲規則走。 04/18 00:46
pokerhand:我知,所以想用我這位子能做的,以發表心得的方式分享 04/18 00:46
pokerhand:但是這種"演講" 你知我知, 是很難吸引沒這概念的人聽的 04/18 00:47
TonyQ:至少討論時要盡量避免用A的心得進行分享,不然一旦激起競爭 04/18 00:47
TonyQ:心態就不用說下去了...... 04/18 00:47
pokerhand:老實說這件事說急也滿緊急的,我沒權限改做法但是之後 04/18 00:48
TonyQ:所以我才說契機要是B真的出包,或者有什麼狀況可以減少B趕工 04/18 00:48
pokerhand:維護的 加班的 落後被釘的卻是我 04/18 00:48
TonyQ:的妙招。不然沒痛過很難說服他們做什麼事情。 04/18 00:48
TonyQ:我覺得你應該要改的是support這件事,這應該有政治方法可以 04/18 00:50
Hiigara:這種情況...如果老闆不挺的話,感覺沒多少手段可用 /__\a 04/18 00:52
Hiigara:但是如果主動去找老闆,相對的要有被老闆認為你是顛覆份子 04/18 00:53
Hiigara:的可能性。這要看你們老闆的思維以及你在公司/部門的份量 04/18 00:53
Hiigara:如果沒有上層壓力的話,老人本身的戰功就夠他把你甩一邊了 04/18 00:55
Hiigara:另外一個問題是,如果現在他們認同你了,你預期他們要怎麼 04/18 00:59
Hiigara:做?原本的 Code 不動,未來新程式都用比較優雅的新作法? 04/18 01:00
Hiigara:那你就會碰到風格不統一,在兩邊切換會傷腦袋的問題。若是 04/18 01:01
Hiigara:期望他們把舊程式全部改成新作法,那就是大型重構... 04/18 01:01
Hiigara:不管哪個方向,如果要短時間完成都會很辛苦,而且你可能會 04/18 01:03
Hiigara:在公司裏面黑掉... 04/18 01:03
Hiigara:對於大型或老舊的組織專案,驟變的風險跟成本不見得會比 04/18 01:04
Hiigara:繼續錯下去還低。這種情況下我其實會比較建議你慢慢敲邊鼓 04/18 01:04
pokerhand:風格不一這一點倒不用擔心,反正本來就沒有風格 04/18 01:05
pokerhand:或者說copy&paste風格 = =? 04/18 01:05
pokerhand:btw,我目前就知道沒功蹟,講什麼都是屁,所以還沒行動前 04/18 01:07
pokerhand:先上這邊問問有沒有軟性的方式. 04/18 01:07
pokerhand:另,如果鳥老了都像老鳥一樣明哲保身不問世事 04/18 01:08
pokerhand:那人活著跟鹹魚有什麼兩樣阿!! 04/18 01:08
Hiigara:自保原因很多,死人是不能戰鬥的..[望向自己黑掉的前老闆] 04/18 01:09
Hiigara:我是你的話,我會選擇慢慢洗腦新人,但是口頭上絕對不要直 04/18 01:10
rawpacket:要戰鬥之前也要練功拿神器才能打大魔王呀. 04/18 01:11
Hiigara:接批評B專案。不小心的話會變成逼著新人選你或選老人,雖 04/18 01:11
rawpacket:新手村的勇者打大魔王也只有被秒殺的份 04/18 01:11
Hiigara:然明明你不是要把老人轟下台自己當王... 04/18 01:11
Hiigara:例如說「B案這樣的作法會有XXX的問題,但是由於專案目前OO 04/18 01:12
Hiigara:O,所以這樣做也許比較好」之類的台詞,搭配無奈的表情 04/18 01:13
Hiigara:點的通的人其實會看的出來你想表達的意思 XDD 04/18 01:13
Hiigara:然後也要看同事間的話題氛圍決定推行的力道。保護好自己你 04/18 01:15
Hiigara:可以戰鬥十年,不小心的話一年之後你就變黑人,縱使你的 04/18 01:16
Hiigara:思想是「對」的,但政治上得不到支持... 04/18 01:16
Hiigara:還有另外一個很大的問題,你認為這樣子的專案成員,轉向OO 04/18 01:18
Hiigara:後剛開始切的 class,會不會問題更大...[汗] 04/18 01:19
Hiigara:如果不讓他們長時間接觸切的優雅的範例,那切出鬼東西的機 04/18 01:20
pokerhand:其實他們的問題還沒有到OO階段,目前他們還在copy&paste 04/18 01:20
Hiigara:會其實很高...也就是說,對專案B來說,OO可能真的沒有效益 04/18 01:21
pokerhand:至少要先想辦法教他們copy&paste的害處(都co十年了...) 04/18 01:21
Hiigara:啊,我太注意OO的部份了... 04/18 01:21
Hiigara:這個也是...慢慢洗腦新人吧[苦笑] 04/18 01:22
Hiigara:其實偶而,偶而啦,CP還是有好處的,例如說每個東西都類似 04/18 01:23
Hiigara:但卻又不完全相同的時候,當然最好是能把相同的部份抽出就 04/18 01:24
Hiigara:抽出...這就是一個可以用來慢慢洗腦的點 04/18 01:24
Hiigara:找出「老人的作法確實有其價值」的點,然後塞入「不過在另 04/18 01:25
Hiigara:外一些狀況下,這樣會更好」的台詞。 04/18 01:26
Hiigara:然後要搭配無辜的苦笑(Y) 04/18 01:27
pokerhand:H大真的很會說話呢 學習 04/18 01:27
Hiigara:因為我以前就是這樣跟老人打架 XD 不過還是要注意氣氛 04/18 01:28
lovdkkkk:推死人是不能戰鬥的 04/18 01:29
Hiigara:話說回來,這樣子講話習慣以後也可能被人當油條也不一定 04/18 01:34
Hiigara:總之大原則是沒有資源的人,儘量不要擺出嫉惡如仇的態勢 04/18 01:37
Hiigara:至於你能用的力道有多兇,要看你們公司/部門氛圍而定。有 04/18 01:37
Hiigara:公司是工程師跟協理可以直接對嗆事後還被稱讚,有公司是學 04/18 01:38
Hiigara:長學弟制度重到不能頂嘴,後者就只能輕巧的鴨子滑水了 04/18 01:39
Hiigara:也要想一下你帶的新人在這中間會做什麼反應XD 04/18 01:41
andymai:H大說的真是讓人心有戚戚焉啊~這不叫油嘴滑舌~這叫高EQ XD 04/18 12:40
andymai:不過現在趕時程又想把B帶起來~如同H大說的~只能先靠範例了 04/18 12:41
andymai:不然就算教會了~也不知道要多久才能等到他們切出好東西 04/18 12:42
leicheong:Project B可以先把project拆成數個DLL, 然後以DLL為單位 04/19 21:56
leicheong:重整結構... 04/19 21:57
leicheong:我還是回文好了... :P 04/19 21:58