老師教我們怎麼寫程式,但從來沒告訴我們在公司裡,會有個叫做PM的人每天分派作業給我們,還逼著我們趕快做完。這是許多軟體工程師進入職場的第一個驚喜。隔了不久,還會發現,這些可能把你壓得死死的PM,多半一行程式都不會寫。於是我們會面臨一種很矛盾的心情,有時候會是一種有點被欺負的心理。我們討論的是工程師在這樣狀況下的生存之道。
(1)提高自己的能見度
在非常多的公司,上層的老闆或公司的大老闆只看得到一個project的PM,而看不到背後辛苦的工程師。也就是說,你的努力和成果,被遮敝了。我一直相信在職場上,讓自己在老闆或其他同事前有「能見度」是重要的。能見度除了在很多狀況下(會議發言、討論…)可以顯現出來外。提供一個我有個朋友很厲害的一招給各位參考。身為一個工程師的他,在每個大的project進行完後,都會「不經意」的寄出一封「謝謝信」給參與這個project的每個人,順便cc給本來根本不知道他在做什麼的大老闆。信裡面一一點名感謝每個人給他的指導和這個project的協助。這種信每個人看了都很高興,最重要的是最後大老闆也對他有了深刻的印象。
(2)不要每天只埋頭寫程式:
工程師大部份很喜歡埋頭寫程式,因為這是自己最擅長,也是最不花力氣的事情。但如果你每天100%時間寫程式,我保證你會自我感覺良好,但是所有人都不知道你在做什麼。所以也許該換換策略,讓自己的時間有多一點的部份是用來「表現自己」。「表現自己」不代表做一些表面功夫浪費時間。而是以你的角色,來參與討論,給出有意義的建議。工程師很喜歡只用電腦和其他人溝通,想要進度都用一個系統來追蹤,想法都用email來討論。在職場上,很重要的是你要學習少用email,多走過去和那個人說話。也許走過去多花了1分鐘,但是你和其他人互動良好,會讓你在職場上過得比較順利。
(3)站在老闆的角度想事情:
工程師由於角色的關係,非常容易會站在「技術」的角度想事情,但往往常被主管否決而覺得灰心。公司的想法通常和PM的想法比較接近,都是站在公司的利益想事情,極少用「技術」的角度想事情。你要試著跟他們想的一樣,你的日子才會過得快樂。舉例來說: 假如我們公司現在要輸入10000筆資料。有兩個方案,方案A是「手動輸入」,方案B是「用程式自動匯入」。方案A要請10個工讀生,一筆一筆輸入幾乎都沒有差太多的資料。方案B是支無敵厲害的程式,你開發一天,程式跑3秒鐘就全部完成。但評估起來方案A的總體成本比方案B還要低。我相信極大多數的公司經營者,都會願意找來10個人,做著重複的事情,一筆一筆key in資料。如果你以工程師的角度來想,你可能會覺得「這個這麼簡單,一支程式就好了」,然後開始覺得老闆選擇方案B真迂腐。你要試著讓你的大腦跟公司的利益sync,這樣會讓你好過很多。因為絕大多數的PM都知道他們的大腦要怎麼跟老闆sync。在老闆面前讓自己顯得比PM聰明的方法只有一個,那就是大腦和公司利益的sync做得比PM還徹底。
(4)用PM害怕的弱點有效去爭取更多開發時間
PM很喜歡每個東西都如期上線,如果提早上線就更好。很多人會因為deadline而跟PM翻臉,這是不智的。回到我那位工程師朋友的例子,他會和顏悅色的對PM說「我可以每天熬夜來把它做完,有可能可以如期上線,但我知道它會出現很多『我們』現在都沒想到的問題,那可能會讓老闆(或客戶)覺得我們很不仔細。但如果你可以幫我爭取多一點時間,我可以讓它品質好很多。」對PM來說,除了要「快」以外,東西如果出來很爛,也打到了他的痛點。我的工程師朋友用這個方法幫自己爭取到了比較長的開發時間,和更好的睡眠。
(5)用PM的語言和他溝通
很多工程師會習慣用自己的語言和PM溝通,於是造成溝通不良。我們得試著讓自己對他們的談話,是世界上任何一個人都聽得懂的語言。儘量少提技術的術語,儘量少讓PM覺得你用你的技術優勢在打壓他。因為PM不可能學會工程師的語言,所以你們唯一能溝通的可能,就是你學會用PM的語言。
(6)變成工程師團隊裡面最受PM們歡迎的人
你會發現,如果叫PM們投票,從最喜歡合作的工程師,排到最不喜歡合作的工程師。大家的清單常常非常一致。而且你會發現,在清單名列前矛的人,通常在職場上容易步步高升。所以,想辦法變成那個人吧! 因為PM們對你的評價,往往在公司裡,和你的工程師主管對你的評價同樣重要。
(7)上班前三個月,不要試著改變公司任何東西
公司的系統、公司的project、流程,所有的東西。會是現在這個樣子,都必定有它的原因。有理性的原因,也有不理性的原因,也可能它的原因就是沒有原因。但絕大多數的公司找你進去,是想要你把一個東西,在他「現在的架構」下開發出來。在前三個月,如果你覺得大家用的開發環境很爛、測試的流程很爛、任何平台很爛。請先忍耐一下,因為除了非常非常open minded的主管和同事,絕大多數的人不會對你剛進來就想改變一切的想法太歡迎。
(8)歸功給PM:
EQ好的PM會把project歸功給工程師。但做為工程師的你,如果EQ夠好,應該再把它歸功給PM。不要因為這是你寫的code,就認為這是你自己做出來的。因為這樣除了自己感覺良好外,對職場生存沒有幫助。想辦法「言必談PM」。把自己和PM當成一個team,這個project是我們一起做出來的。雖然很多PM會戲稱自己是在旁邊幫忙打雜的,但是他會很感謝你很體貼的把一些功勞歸於他。
(9)不要為了enjoy自己的成就感,浪費公司的資源
很多工程師喜歡把公司當lab,去試驗一些新的技術。如果這對公司「真的有幫助」的話,那當然很好。在做這些事或提議前,請試著用老闆的角度想,在公司利益最大化的前提下(而非個人學習或成就感),他會不會打從心裡支持你做這樣的試驗。如果不會,那就千萬不要做。因為在你做的很開心的同時,別人可能覺得這只是在浪費公司資源。
(10)變成一個更像PM的人
在技術上你應該向你其他工程師同事看齊,但在「性格」或「行為」上,通常你應該去模仿PM team的人。請相信我,在絕大多數公司,「性格」和「行為」近似於PM的工程師,在公司裡是最吃香的。