程序員如何讓自己的工作更上一個臺階

軟件開發可能是一份吃力不討好的工作,你要有創意,並能解決問題。有時候你覺得自己的代碼寫得很優雅,卻無法向不懂代碼的人炫耀。經常看見好萊塢電影裏面,導演把我們描繪成精英×××,坐在一個神祕的終端前面,很快就能破解政府部門的密碼,並在60秒內將整個數據庫複製到U盤裏。不過,我覺得我連自己的筆記本電腦都破解不了,更不用說去破解別人的了,而且有時候我把一個Word文檔拷貝到U盤裏都要花上不止一分鐘。
然而,在現實世界裏,程序員並不像好萊塢導演們描述得那麼厲害。我們的老闆和同事並不在乎我們的代碼有多優雅。他們不明白,我們每天都會被問一些愚蠢的問題,比如估計需要多長時間可以完成某項功能,而之前我們對這些功能可能一無所知。坦率地說,我們經常被要求做一些甚至連他們自己都不知道是什麼事情的事情!我們的價值常常以能否在數小時內快速寫出代碼來衡量。我們經常要面對不合理的截止期限,工作和生活的平衡往往是不存在的。不小心出個bug就有可能讓之前所有獲得的“好評”功虧一簣。事實上,更努力地工作通常只會讓別人提高對你的期望,而當你稍稍沒有達到“標準”,你在別人眼裏就成了一個“懶鬼”。
我們都很欽佩像喬布斯和扎克伯格這樣的人,並且認爲如果我們更有才華、更有創造力、更有動力,也會在工作中取得更大的成功。我們會一直工作到凌晨,學習最新的框架和技術,花費整個週末來重構我們的核心庫,以便更快、更高效地完成工作。而在很多情況下,我們忽視了自己的需求,忽視了朋友和家人,甚至忘記了爲什麼要這麼折騰。有多少次,我埋頭苦幹,把代碼寫出來,只是爲了讓老闆和同事不再抱怨,而不是爲了得到什麼榮譽或獎勵。
“爲什麼你需要這麼長時間開發這個新功能?爲什麼QA會在你的代碼中找到bug?你不測試自己的代碼嗎?”
當有人說我們的小孩長得很醜,或者當我們付出的努力和犧牲只換來消極的反饋和抱怨時,我們很容易就進入“防禦”模式。有時候別人只是指出代碼中被忽略的一個小問題,或者要求加入一個小功能,都可能會引來我們指責性的迴應。我們如何迴應他人,如何迴應同事和客戶的抱怨,將會對我們的價值產生巨大的影響,並最終影響我們的職業生涯。
成功的程序員是那些抱有正確態度的人,好的態度終將勝過高超的技能,並且足以讓你得到非技術人士的認可和賞識。
移情是關鍵
真正能夠影響我們職業生涯的是我們的態度。正如之前所說的,沒有人會關心你工作了多少個小時,或者你的代碼有多麼優雅、多麼富有想象力。努力寫好代碼是我們的本職工作,我們不會因爲做了分內事而得到額外的獎勵。
別人在意的是你如何迴應他們的需求。不管是針對同事、客戶還是最終用戶,這個前提都適用。如果你想成爲別人眼裏的優秀員工,首先要讓他們欣賞你。我見過一些我認爲最差勁的程序員,但他們在公司的位置卻一路直上,超越了那些經驗豐富和才華橫溢的程序員,僅僅是因爲他們深諳職場的遊戲規則,知道如何與別人相處。通常,這些人最終會成爲領導者和管理者,而其他程序員則繼續在“氣泡”裏掙扎,不明白自己錯在哪裏,不明白爲什麼沒有得到應得的嘉獎。
讓我們舉一些典型的例子,看看我們應該怎樣做才能讓人們對我們做出更積極的迴應。
老闆:我不明白爲什麼需要3天時間才能在頁面上添加一個按鈕?喬上週添加一個新按鈕只用了2秒鐘!
錯誤的回答:喬開發的是Windows應用程序,並且他是往按鈕欄添加按鈕,而那個按鈕欄本來就是爲了方便添加按鈕而設計的!而我這個是一個Web應用程序,它需要支持所有設備,動態適應屏幕大小,還要支持各種瀏覽器及國際化!頁面上沒有可以放額外按鈕的空間,所以我不得不重新設計頁面,在不同的瀏覽器上進行測試,確保頁面佈局不會在小設備上發生錯亂,然後創建新服務,添加新邏輯……
那麼爲什麼說這樣的回答並不妥當?老闆可能確實不知道“添加一個按鈕”背後究竟有多少“隱形”的工作,不知道需要做多少前端測試,不知道你是加班才把按鈕加好的,他們是在拿蘋果和橘子做比較。但他們沒有義務知道這些,不是嗎?有時候,你的解釋聽起來都是藉口,特別是當老闆開始質疑你的時候。
我的建議是“讀懂老闆的言外之意”,並從老闆的角度看待事情。你的老闆可能從來沒有寫過代碼,因爲可能沒有必要,而且他真正想問的並不是爲什麼你花了那麼長時間添加按鈕。你的老闆關心的截止期限,如何讓客戶滿意,增加銷售額。關心你的老闆關心的事情,用你的同理心體會老闆的感受,並解決他們的需求和目標。
更好的回答:我可以理解你爲什麼這麼沮喪,也知道添加這個新功能對你來說至關重要。這對我來說也很重要,我希望盡我所能把工作做到最好,讓我們的產品變得更完美,這樣我們的客戶就會很高興。添加這個按鈕涉及到很多後端操作,如果你願意,我很樂意詳細解釋給你聽。花費一些額外的時間來確保按鈕在所有設備上都能正常工作,並進行徹底測試,這些是很有必要的。以後我會更頻繁地向你彙報進度,讓你更好地瞭解我在做什麼以及進展情況。
換句話說,就是不要找藉口,你甚至不需要解釋什麼,你需要做的是讓他們知道你的感受,讓他們知道你也理解他們的痛點,並且也在關注他們所關注的事情。
QA:我測試了你添加的新按鈕,這是我第二次發現這個bug了。你有沒有看過我寫的bug描述?你在提交代碼之前有沒有測試過?
不好的回答:是的,我看了你寫的bug描述,並且按照你列出的步驟操作了,但就是無法重現問題,我還把過程錄下來給你了,你看了嗎?如果你想解決這個問題,就要想個辦法把它重現出來。
這樣回答的問題在於,帶有憤怒的情緒對事態的發展一點幫助都沒有。話裏行間透着一股挫敗感,而且還給對方增加工作量,而這些本來是因爲你的過錯和你的不作爲所導致的。這個時候,要繼續發揮“移情”的能力。
更好的回答:感謝你的耐心,在客戶發現bug之前把它們攔了下來。因爲我無法在我的系統中重現這個問題,是否可以明天早上開個會?我帶着筆記本電腦來找你,然後看你是怎麼操作的。這樣可以確保我們都瞭解問題所在,或許我還可以當場把問題給解決了,這樣你就知道它已經過測試並準備好發佈了。
在工作中得到認可的幾個技巧
永遠不要道歉,除非你真的需要彌補過失。相反,進行積極的迴應。例如,把“我很抱歉花了這麼長時間”改爲“感謝你的耐心等待”。
向頂尖人物學習。找出工作中的“搖滾明星”,那些被人喜歡和信賴的人。他們做事的方式總能獲得他人的積極迴應。與他們交朋友,模仿他們的行爲方式。
比別人來得早走得晚。雖然不一定非要這麼做,但人們確實會注意到你的來來去去。不過,如果其他人在上午7點就來了,而你在11點左右纔到,人們會認爲你是個懶鬼。如果大多數人工作到下午6點,而你4點左右就走了,他們也會認爲你太懶散。
頻繁溝通。如果你每天都參加Scrum,那麼很好,但如果你不參加Scrum,那麼一定要向你的老闆、領導和同事們說明你正在做什麼,以及遇到什麼困難。沒有必要太過冗長,只要做個快速更新就可以了,讓每個人都知道你正在做某件事,而且很上心。
在不工作時,不要談論工作。如果你和同事出去聚餐,在與工作無關的地方用餐,就沒必要再談論工作。你可以詢問他們家人的情況,問問他們最近的假期過得如何,或者聊聊他們感興趣的事情。
總得來說,當技術能力已經達到了一定階段,影響你後續發展的是軟實力。你可能會發現,積極的態度比優雅的編碼能夠讓你走得更遠。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章