你的工作不是寫(xiě)代碼
"我足夠幸運(yùn)到和一個(gè)充滿激情工程師的小團(tuán)隊(duì)一起工作,他們真的在意他們的客戶。如果你不那么幸運(yùn),你可以把這封信分享給你的工程師團(tuán)隊(duì)。"
親愛(ài)的工程師們:
你的工作不是寫(xiě)代碼。
我明白。你認(rèn)為你被雇來(lái)寫(xiě)代碼的。實(shí)際上,你的整個(gè)面試過(guò)程是圍繞著你寫(xiě)的代碼怎么樣。我確信你做的非常好了。
不過(guò),這不是你的工作。
你的工作是為我們的用戶改善產(chǎn)品。如果你想為產(chǎn)品獲取技術(shù),那么你的工作就是以提高公司的主要績(jī)效指標(biāo)的方式來(lái)為用戶改善產(chǎn)品。老實(shí)講,你對(duì)第二點(diǎn)不會(huì)一直有太多的控制權(quán)。然而,你應(yīng)當(dāng)對(duì)***點(diǎn)有大量的控制權(quán)!
當(dāng)然,如果你想做好工作,就意味著你或許不得不改變你當(dāng)前的一些行為。
首先,你需要確保你寫(xiě)的代碼(順便提一句,寫(xiě)代碼仍然是在你工作時(shí)要做到的主要部分之一)是按照期望在運(yùn)行,甚至在用戶的機(jī)器上。
你知道嗎?我們的用戶很可能沒(méi)有、為高分辨率配置的巨大 Thunderbolt 顯示器的全新 MacBook Air,也沒(méi)有運(yùn)行著***的 Chrome?我確認(rèn)過(guò)。他們當(dāng)中大部分人使用的是超過(guò) 4 年的筆記本上的 IE 瀏覽器,因此有時(shí)候你開(kāi)發(fā)的東西在他們的機(jī)器上運(yùn)行不正常。他們?nèi)匀皇俏覀兊挠脩簦瑸樗麄兏纳飘a(chǎn)品仍然是你的工作,因此要確保你寫(xiě)的代碼在一定規(guī)模的環(huán)境下運(yùn)行正常。
實(shí)際上,你通常需要確保運(yùn)行在生產(chǎn)環(huán)境上的代碼。我真的不關(guān)心你的代碼是否運(yùn)行在本地。如果你的代碼只是運(yùn)行在本地,那么我唯一的選擇就是連同你的電腦一起賣掉,這樣用戶就能使用我們的軟件了,這真的行不通。
為了避免這種情況,你需要檢查生產(chǎn)環(huán)境上的變化。每一次都如此。記住,你的工作不只是發(fā)布,而是為我們的客戶發(fā)布一些代碼來(lái)改善我們的產(chǎn)品。如果你沒(méi)有檢查它是否按照期望運(yùn)行,你就不知道它將來(lái)是否正常。
當(dāng)然,為了檢查生產(chǎn)環(huán)境變化,你將需要確保代碼真正被合并以及推送到了生產(chǎn)環(huán)境。我的意思是,如果你只是讓修改數(shù)小時(shí)或數(shù)天處于未推送狀態(tài),你就不能真正檢查生產(chǎn)環(huán)境上的變化。推送你的代碼,整合到生產(chǎn)環(huán)境,然后運(yùn)行,確認(rèn)一下。
如果你處于不能做持續(xù)部署(Continuous Deployment)的環(huán)境里,很明顯是很難做到的,不過(guò)這個(gè)理論仍然值得堅(jiān)守。無(wú)論什么時(shí)候,當(dāng)你的代碼整合到生產(chǎn)環(huán)境里了,你都要負(fù)責(zé)到底。確信它按照既定方式運(yùn)行——讓我們的產(chǎn)品對(duì)用戶變得更好。
另一件需要記住的地方就是,有時(shí)候用戶做了讓人驚奇的事情,這意味著,你的代碼運(yùn)行在***條件下的測(cè)試,是遠(yuǎn)遠(yuǎn)不夠的。你需要確保你的代碼甚至在錯(cuò)誤情況、沒(méi)有數(shù)據(jù),以及當(dāng)用戶做了點(diǎn)擊回退按鈕、錯(cuò)誤地使用了兩個(gè)賬號(hào)等一些你可能沒(méi)有期望到的操作時(shí),能夠做一些合理的響應(yīng)。
這不容易,這意味著你將不得不花時(shí)間考慮我們用戶可能要做的不同操作。但是,這是你工作的重要一部分,因?yàn)槿绻麄兘?jīng)常找不到 bug、或臨界情況、或死角,將為用戶極大地改善產(chǎn)品。
你的工作中還有一項(xiàng)重要的部分。你需要確保我們能夠衡量我們是否都做好了工作。這意味著添加指標(biāo)和分析,便于我們測(cè)試修改帶來(lái)的效果。如果你期望你編寫(xiě)的代碼能夠提高用戶參與度(在某些地方提高用戶體驗(yàn)),那么你需要有一種方式來(lái)了解你是否做到了。你該怎樣知道工作完成了?正如我上面提到的,在你為用戶改善了產(chǎn)品之前,你的工作是沒(méi)有完成的。
我知道你在想什么。這將花很多時(shí)間!我的效率將大大降低!
不是這樣的。你將更加有效率,因?yàn)槟銓⒄嬲τ谀愕墓ぷ鳌H绻?a >拿寫(xiě)的代碼少了來(lái)說(shuō)事,那么這是管理上的失敗,我為此道歉。我們需要在你開(kāi)發(fā)功能的需求上花更少的時(shí)間,在自己反思為用戶改善產(chǎn)品上多花些時(shí)間。如果我們不是這樣的,我強(qiáng)烈建議你要求我們這樣做。如果我們?nèi)匀痪芙^,你應(yīng)當(dāng)辭職,找到讓你做真正工作的環(huán)境。這不是多此一舉,而是為了用戶讓產(chǎn)品變得更好。
請(qǐng)不要覺(jué)得我在找你麻煩。你不是唯一一個(gè)應(yīng)該做這份工作的人,為用戶把產(chǎn)品做得更好,是我們所有人的工作。做為產(chǎn)品經(jīng)理、用戶體驗(yàn)設(shè)計(jì)師和經(jīng)理,全面理解我們的用戶是我的工作,我能夠幫你理解如何為用戶改善產(chǎn)品。這也是 CEO 的工作,找到讓我們通過(guò)為用戶改善產(chǎn)品來(lái)賺錢(qián)的戰(zhàn)略。
不管我們工作上的頭銜是什么,我們的工作都是一樣的——為我們的用戶把產(chǎn)品做得更好。每一次。開(kāi)干吧。
謝謝大家,
你們的產(chǎn)品經(jīng)理
英文原文:Your Job Is Not to Write Code
譯文出自:http://www.labazhou.net/2014/11/your-job-is-not-to-write-code/