從高校校園進入職場,環境的轉換通常也意味著生存規則的改變。我們在學校里所信奉和追求的那些在職場環境中是否適用?工作之后,是否只要足夠努力、悶頭工作就能像在學校一樣拿到最好的成績?本文作者 Mitchell Irvin 分享了他進入軟件工程工作兩年之后的所思所想,其中并不僅僅適用于軟件工程師,對于告別校園、初入職場甚至有過多年工作經驗的“老手”都有很大的借鑒意義。
接下來你會看到我的一些個人職業經歷,包括成為軟件工程師以及工作兩年之后學到的一些經驗、教訓和其中存在的一些遺憾之處。
大學和工作場所
2015 年,我還是佛羅里達大學的一名學生。當時,我研修了一門可能是整個學院最難的課程,當時負責授課的教授在課程展開的那個學期內會分配給學生多個團隊項目。在每個項目結束時,這名教授會單獨對每位學生的表現進行評估。然后在分配下一個團隊項目時,他會將之前項目任務中表現最優秀的學生整合到一個組,表現最差的學生會繼續留在他們原來的組。這樣到學期結束時,班里的學生要么是竭盡全力并且成功進入了一個強大的團隊,要么是最終待在了一個表現差勁的團隊。這樣的分配與激勵方式很美妙,強者不必去忍受弱者或者是為弱者買單,而弱者可以選擇讓自己變得強大,否則就只能面對失敗。用“唯才是用”(meritocracy,也有譯為優績制度,指應該根據才能、努力以及成果來評定一個人,而不是根據性別、種族、年齡或財富等其它因素)一詞來形容這一環境系統可謂最恰當不過,這樣的系統獎勵的是那些最有才華的學生,而那些不努力的學生也必須自食其力,自己承擔后果和責任,我真的非常喜歡這種環境系統。
一年之后,我畢業了。當時的我干勁十足、精力滿滿、胸懷大志,十分理想主義地準備在我過去四年學習的專業領域內大干一場。實習結束之后,我收到了來自一家大型企業軟件工程師職位的邀請,我接受了這一職位,內心渴望自己能夠成為一名優秀的軟件工程師。
開始我參與了一個項目,這一項目嚴重缺乏相關支持資源。我們負責構建一個 Web 應用程序,這一應用程序的功能與大多數 Web 應用程序的功能無異:公開一些數據并且可以讓用戶操作這些數據。我和其他兩位工程師一起負責開發工作,另有一位質量控制工程師負責測試方面的工作。僅僅幾個月的時間我就開始認為自己是這個團隊中拱心石般的角色,負責撐起一切。用戶需要我們去構建一個新功能嗎?沒問題,我能搞定。需要有人去促成一下回顧會議?當然可以。很快我就發現自己所處的是一個沒有我的努力就毫無進展的環境體系。就這樣,在我 22 歲那年,我在一家財富 25 強企業扮演起了首席工程師的角色。
但是問題在于,盡管我在近一年的時間里一直承擔著團隊的絕大部分工作任務,我所得到的報酬仍然只是團隊里其他經驗豐富成員的一小部分。我沒有得到“A”的學分成績,他們也不是“F”,我沒有分到股票期權福利,休假時間也更少了。我不久就意識到了這些,之后很快我的挫敗感就明顯地表露了出來。當與那些不熟悉該軟件的工程師合作時,我很難再對他們保持耐心,很難再展示出樂于助人的態度。我的冷漠感不斷增長,工作效率急劇下降。如果我與另外一位工程師合作負責一項工作,那我保持與他的工作步調統一(即便可能只是我原來工作效率的 5%),我也仍然算是做了我的工作,對吧?
我就是在這樣的狀態中度過了這一項目最后三個月的工時間,項目完成的并不算從容,團隊士氣低落,沒有人為過去這 14 個月的“努力”終于開花結果而興奮。更重要的是,我知道其中一些隊友不會再為將來可能與我合作而心存期待。我這才開始意識到我對于工作環境的態度已經對我以及周圍的隊友產生了不利影響。
幾個星期之后,我發起了一項調查,關于該如何讓自己成為一名更好的隊友這一問題而尋求其他隊友的反饋。最終的調查結果有一點非常明確,那就是個人表現并不能決定一切。在我開始職業生涯之后,我想當然地認為工作場所也是采用 “唯才是用”的分配和選拔標準,就像我在大學校園里的那門課程一樣,強者會得到應有的獎勵而弱者也會為他們自己的行為買單。正是這種看法影響到了我與他人合作的能力,使我不再感謝他人的貢獻和付出,喪失了謙虛學習和耐心指導他人的品質,團隊其他成員對我的印象也成為了“過于看重個人表現”。
我學到的第一課:你的技術實力(硬技能)很重要,但是你與同事的關系(人際關系/領導技能)與之同等重要。
要想成為一名出色的軟件工程師,你需要用多年的時間不斷磨練自己的專業技能。隨著時間的推移,你會進步、會遇到瓶頸、會上下沉浮,或許也會遭遇鄧寧-克魯格效應(Dunning-Kruger effect,能力欠缺者們沉浸在自我營造的虛幻的優勢之中,常常高估自己的能力水平,卻無法客觀評價他人的能力)所描述的情節。在這過程中,你會犯錯誤,會吸取他人的經驗教訓,也會分享自己的所學所思。毫無疑問,你必須要具備強大的專業技術能力,但是如果這就是你唯一的專長,那你很快就會發現自己處于一個很不利的境地。如果你的目標是成為一名最優秀的軟件工程師,那在通往這一目標的旅程上你必須也要讓自己成為最優秀的隊友(也可能是領導者),而這首先就意味著你要看重他人的付出。
我合作過的最優秀的工程師
九月的一個上午,兩名新簽約的員工加入了我們團隊。因為我們團隊一直以來都以二人配對合作編程為安排準則,于是當天我就和其中一位新加入的隊員一起開啟了配對編程工作。在接下來的七、八個小時里,這名工程師,我們暫且稱呼他為 Bob,不停地問我各種問題。在我們開發一個新功能時,Bob 問了一些關于我們所用的語言和框架方面的問題。在我們打磨具體的業務規則細節時,Bob 又問了我關于產品以及我們正在解決的問題方面的信息。那一天,Bob 并沒有寫多少代碼。說實話,到下班時,我對 Bob 的表現有些失望。我本來對于他作為工程師的專業技能有著很高的期望,也滿心歡喜地以為自己可以從他身上學到不少東西。
第二天,Bob 和我一起負責編寫另一個產品功能。我寫出了該功能的初始測試用例,并進行試運行,當屏幕上所有的檢查標記都顯示準確無誤之后,我不禁露出了微笑。Bob 在一旁看著,面露沉思之意。在我的測試結束之后,他使用這一測試方法,并且改變了其中一兩行的代碼。我開始表示反對,“等等!你這樣做不對。”他點點頭表示同意,然后繼續運行我們的測試用例。這樣所有測試都以通過告終,令人驚喜!
幾周過后,Bob 和我依然在這樣配對合作。在我們工作過程中,他依然會不斷地提出問題。在我主導工作時,他會提出一些建議,在他認為合適的時候,他也會介入短暫地占據主導地位。我問了他幾個關于我們所用框架和語言內部工作模式的問題,除此之外,他還向我介紹了一款我并不熟悉的 OO 設計模型。他對域名和業務問題提出的一些疑問讓我發現了軟件中的漏洞所在,他找出了我們代碼中所存在的錯誤和缺陷,而這些本來是我根本發現不了的問題。但現在,我也發現了這些漏洞,清晰無比的存在。日子一天天過去,Bob 和我解決了他發現的這些漏洞,對軟件設計進行了加固和防護,大大改善了業務問題和我們所寫的代碼之間的關系。
在我們團隊合作的整個交流過程之中,當 Bob 認為其他人犯錯時,他并沒有強行去讓他人接受自己的觀點,也沒有偏執地想要去在與他人的辯論中占據上風。但是他不停地提出問題,在別人回答這些問題的過程中,他們經常會發現自己也存在 Bob 提出的這些疑問。在于軟件相關的幾乎所有的決策過程中,我們幾乎都會發現 Bob 所提出的問題的蹤影。Bob 并沒有就自己對團隊的貢獻而四處宣揚,也沒有拿自己作為工程師的專業水平去壓別人。他似乎并不介意自己在配對合作過程中有多久的時間是自己掌控鍵盤,占據主導地位。可以說他是我合作過的最優秀的一位工程師。
我學到的第二課:你影響他人的能力取決于你能否幫助他人、引導他人靠他們自己來推導出與你所做的相同的結論。
Bob 幾乎從不說“我們就應該這樣做,因為……”,他會就你們目前所考慮的一些想法提出幾個問題,到你們討論的最后,你會發現絕大多數情況下,他的問題都會引導其他人與他達成共識。Bob 并不是自己提出什么完美無暇的想法,通常情況下,他都是先提出幾個問題,然后得到其他人的回答,其中一個問題的答案通常會實現這樣的效果,就是讓他說出“這是一個好點子,我們繼續探究一下”類似這樣的話。但是,就是這樣的方式讓他對我們的軟件質量產生了最積極的影響,因為他擁有著影響我們團隊成員推理過程和方向的強大能力。但是,他實現這一目的并不是通過直接分享他自己的想法,更多的是通過提問的方式來實現。
我學到的第三課:在開始考慮一個問題的解決方案之前,先提出許多的問題,這是一位優秀的問題解決者的標志。
作為軟件工程師,我們的核心工作就是解決問題。學習新東西是一個需要解決的問題,編碼是一個需要解決的問題,溝通也是一個需要解決的問題。優秀的軟件工程師就是優秀的問題解決者,而要解決問題的一個好辦法就是通過提出問題來理解問題。提出問題表明你尊重他人的想法,提出問題可以幫助你更好的理解事物,提出問題能夠讓你有更大的可能性得出獲得他人認知的答案。最能提出解決方案的人往往就是那些愿意花時間去理解問題的那些人。
關于 Bob 的故事還有一點,他在技術方面很有天賦,完全可以成為團隊主力和領軍人物。如果他愿意,我相信他都可以成為一名設計師,只是他沒有那個想法。Bob 喜歡寫代碼,他喜歡做域名分析,喜歡設計業務對象,喜歡編寫測試套件,喜歡交付高質量的軟件。
回顧
回首我做軟件工程師的前兩年可以說是一趟充滿冒險的旅程。我不停地構建軟件、破壞軟件以及修復軟件。我參加了好多無聊的會議,無聊到你真的可以趴在桌上睡著的那種程度。我悶頭扎入工作的海洋,體會著其中的酸甜苦辣。
回看最開始的那兩年的軟件工程師時光,我發現自己有以下幾點需要改進:
我將工作放在了人之上。我們工作(產品)的問題總是能夠自己解決,但是與團隊其他成員的關系要維護和修復起來顯然難度指數高很多。
我將更多地時間用來環顧四周,而不是向上看,向內看。只是一味地看別人在哪些方面可以做的更好,挑別人的問題,并不能讓自己成為更好的隊友。只有認識到自己的弱點和優勢,你才有機會變得更好。
在應該聆聽的時候選擇了說話。只是一味滔滔不絕的講話并不會讓自己變得更聰明,也不會喚起他人的共鳴。
在我遇到挫折感覺沮喪的時候并沒有與隊友和領導開誠布公的交流和溝通。如果他人根本就不知道你的問題所在,那他們自然也幫不上你。
如果你非常看重你的工作并且非常努力,那你可能會成為他人的絆腳石,可能會冒犯到他人,也可能會時常遭遇失敗的挫折。無論怎樣,請一定記住將人放在第一位,而不是工作。要勇于承擔責任,誠懇的道歉,不斷進取。能否做到這些決定著你是只能做一名普通的軟件工程師,還是成為行業的領導者。
在我接下來沿著職業生涯不斷前進的道路上,以下幾點需要我時刻謹記:
目標:成為最優秀的軟件工程師,不積跬步無以至千里。
目標:成為最好的隊友。如果我不能積極地處理好團隊關系,那成為優秀的軟件工程師這事就無從談起。團隊凝聚力第一,個人才能其次。
目標:分清主次。雖然軟件對我來說很重要,但我的信仰、我的婚姻、我的友情以及我的身體健康比軟件還要重要。想清楚對你來說最重要的是什么,這一點很重要。我不會為了讓自己工作更高效而犧牲這其中任何一樣。
-
軟件工程師
+關注
關注
8文章
218瀏覽量
21142
發布評論請先 登錄
相關推薦
評論