程式設計師如何讓自己的工作更上一層樓

zhs1994發表於2018-08-06

軟體開發可能是一份吃力不討好的工作,你要有創意,並能解決問題。有時候你覺得自己的程式碼寫得很優雅,卻無法向不懂程式碼的人炫耀。經常看見好萊塢電影裡面,導演把我們描繪成精英×××,坐在一個神秘的終端前面,很快就能破解政府部門的密碼,並在60秒內將整個資料庫複製到隨身碟裡。不過,我覺得我連自己的膝上型電腦都破解不了,更不用說去破解別人的了,而且有時候我把一個Word文件複製到隨身碟裡都要花上不止一分鐘。

然而,在現實世界裡,程式設計師並不像好萊塢導演們描述得那麼厲害。我們的老闆和同事並不在乎我們的程式碼有多優雅。他們不明白,我們每天都會被問一些愚蠢的問題,比如估計需要多長時間可以完成某項功能,而之前我們對這些功能可能一無所知。坦率地說,我們經常被要求做一些甚至連他們自己都不知道是什麼事情的事情!我們的價值常常以能否在數小時內快速寫出程式碼來衡量。我們經常要面對不合理的截止期限,工作和生活的平衡往往是不存在的。不小心出個bug就有可能讓之前所有獲得的“好評”功虧一簣。事實上,更努力地工作通常只會讓別人提高對你的期望,而當你稍稍沒有達到“標準”,你在別人眼裡就成了一個“懶鬼”。

我們都很欽佩像賈伯斯和祖克伯這樣的人,並且認為如果我們更有才華、更有創造力、更有動力,也會在工作中取得更大的成功。我們會一直工作到凌晨,學習最新的框架和技術,花費整個週末來重構我們的核心庫,以便更快、更高效地完成工作。而在很多情況下,我們忽視了自己的需求,忽視了朋友和家人,甚至忘記了為什麼要這麼折騰。有多少次,我埋頭苦幹,把程式碼寫出來,只是為了讓老闆和同事不再抱怨,而不是為了得到什麼榮譽或獎勵。

“為什麼你需要這麼長時間開發這個新功能?為什麼QA會在你的程式碼中找到bug?你不測試自己的程式碼嗎?”

當有人說我們的小孩長得很醜,或者當我們付出的努力和犧牲只換來消極的反饋和抱怨時,我們很容易就進入“防禦”模式。有時候別人只是指出程式碼中被忽略的一個小問題,或者要求加入一個小功能,都可能會引來我們指責性的回應。我們如何回應他人,如何回應同事和客戶的抱怨,將會對我們的價值產生巨大的影響,並最終影響我們的職業生涯。

成功的程式設計師是那些抱有正確態度的人,好的態度終將勝過高超的技能,並且足以讓你得到非技術人士的認可和賞識。

移情是關鍵

真正能夠影響我們職業生涯的是我們的態度。正如之前所說的,沒有人會關心你工作了多少個小時,或者你的程式碼有多麼優雅、多麼富有想象力。努力寫好程式碼是我們的本職工作,我們不會因為做了分內事而得到額外的獎勵。

別人在意的是你如何回應他們的需求。不管是針對同事、客戶還是終端使用者,這個前提都適用。如果你想成為別人眼裡的優秀員工,首先要讓他們欣賞你。我見過一些我認為最差勁的程式設計師,但他們在公司的位置卻一路直上,超越了那些經驗豐富和才華橫溢的程式設計師,僅僅是因為他們深諳職場的遊戲規則,知道如何與別人相處。通常,這些人最終會成為領導者和管理者,而其他程式設計師則繼續在“氣泡”裡掙扎,不明白自己錯在哪裡,不明白為什麼沒有得到應得的嘉獎。

讓我們舉一些典型的例子,看看我們應該怎樣做才能讓人們對我們做出更積極的回應。

老闆:我不明白為什麼需要3天時間才能在頁面上新增一個按鈕?喬上週新增一個新按鈕只用了2秒鐘!

錯誤的回答:喬開發的是Windows應用程式,並且他是往按鈕欄新增按鈕,而那個按鈕欄本來就是為了方便新增按鈕而設計的!而我這個是一個Web應用程式,它需要支援所有裝置,動態適應螢幕大小,還要支援各種瀏覽器及國際化!頁面上沒有可以放額外按鈕的空間,所以我不得不重新設計頁面,在不同的瀏覽器上進行測試,確保頁面佈局不會在小裝置上發生錯亂,然後建立新服務,新增新邏輯……

那麼為什麼說這樣的回答並不妥當?老闆可能確實不知道“新增一個按鈕”背後究竟有多少“隱形”的工作,不知道需要做多少前端測試,不知道你是加班才把按鈕加好的,他們是在拿蘋果和橘子做比較。但他們沒有義務知道這些,不是嗎?有時候,你的解釋聽起來都是藉口,特別是當老闆開始質疑你的時候。

我的建議是“讀懂老闆的言外之意”,並從老闆的角度看待事情。你的老闆可能從來沒有寫過程式碼,因為可能沒有必要,而且他真正想問的並不是為什麼你花了那麼長時間新增按鈕。你的老闆關心的截止期限,如何讓客戶滿意,增加銷售額。關心你的老闆關心的事情,用你的同理心體會老闆的感受,並解決他們的需求和目標。

更好的回答:我可以理解你為什麼這麼沮喪,也知道新增這個新功能對你來說至關重要。這對我來說也很重要,我希望盡我所能把工作做到最好,讓我們的產品變得更完美,這樣我們的客戶就會很高興。新增這個按鈕涉及到很多後端操作,如果你願意,我很樂意詳細解釋給你聽。花費一些額外的時間來確保按鈕在所有裝置上都能正常工作,並進行徹底測試,這些是很有必要的。以後我會更頻繁地向你彙報進度,讓你更好地瞭解我在做什麼以及進展情況。

換句話說,就是不要找藉口,你甚至不需要解釋什麼,你需要做的是讓他們知道你的感受,讓他們知道你也理解他們的痛點,並且也在關注他們所關注的事情。

QA:我測試了你新增的新按鈕,這是我第二次發現這個bug了。你有沒有看過我寫的bug描述?你在提交程式碼之前有沒有測試過?

不好的回答:是的,我看了你寫的bug描述,並且按照你列出的步驟操作了,但就是無法重現問題,我還把過程錄下來給你了,你看了嗎?如果你想解決這個問題,就要想個辦法把它重現出來。

這樣回答的問題在於,帶有憤怒的情緒對事態的發展一點幫助都沒有。話裡行間透著一股挫敗感,而且還給對方增加工作量,而這些本來是因為你的過錯和你的不作為所導致的。這個時候,要繼續發揮“移情”的能力。

更好的回答:感謝你的耐心,在客戶發現bug之前把它們攔了下來。因為我無法在我的系統中重現這個問題,是否可以明天早上開個會?我帶著膝上型電腦來找你,然後看你是怎麼操作的。這樣可以確保我們都瞭解問題所在,或許我還可以當場把問題給解決了,這樣你就知道它已經過測試並準備好釋出了。

在工作中得到認可的幾個技巧

永遠不要道歉,除非你真的需要彌補過失。相反,進行積極的回應。例如,把“我很抱歉花了這麼長時間”改為“感謝你的耐心等待”。

向頂尖人物學習。找出工作中的“搖滾明星”,那些被人喜歡和信賴的人。他們做事的方式總能獲得他人的積極回應。與他們交朋友,模仿他們的行為方式。

比別人來得早走得晚。雖然不一定非要這麼做,但人們確實會注意到你的來來去去。不過,如果其他人在上午7點就來了,而你在11點左右才到,人們會認為你是個懶鬼。如果大多數人工作到下午6點,而你4點左右就走了,他們也會認為你太懶散。

頻繁溝通。如果你每天都參加Scrum,那麼很好,但如果你不參加Scrum,那麼一定要向你的老闆、領導和同事們說明你正在做什麼,以及遇到什麼困難。沒有必要太過冗長,只要做個快速更新就可以了,讓每個人都知道你正在做某件事,而且很上心。

在不工作時,不要談論工作。如果你和同事出去聚餐,在與工作無關的地方用餐,就沒必要再談論工作。你可以詢問他們家人的情況,問問他們最近的假期過得如何,或者聊聊他們感興趣的事情。

總得來說,當技術能力已經達到了一定階段,影響你後續發展的是軟實力。你可能會發現,積極的態度比優雅的編碼能夠讓你走得更遠。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31546605/viewspace-2199232/,如需轉載,請註明出處,否則將追究法律責任。

相關文章