拿工資不僅僅是讓你寫代碼的
這是我對團隊每個新進員工說的***件事情。這句話的意思是,我并不關(guān)心你是如何快速完成任務(wù)的,哪怕代碼很差,只要它像救生艇通氣門一樣管用就行。這句話也是我最喜歡的座右銘之一。
這個說法其實很合理:我們的工作是思考客戶提出的問題,然后制定解決方案。思考***,代碼第二,公司請我們的最終目的不是寫代碼,而是想出解決方案。
話粗理不粗。
付你薪水不是讓你來思考的,也不是讓你來寫代碼的,你的目的是交付產(chǎn)品。如果不能交付有效的產(chǎn)品給客戶,那么你的知識,技能,態(tài)度,以及所有能讓人成為高效程序員的特性又有什么意義呢?!
沒有客戶會說:“嗯,如果能用空格代替tab鍵表示縮進,那代碼將更具可讀性。”也沒有客戶會要求我們使用單向散列存儲的密碼,事實上他們可能聽都沒聽說過。沒有客戶會強求我們想出所有可能的架構(gòu)和平臺,然后擇優(yōu)選用。更加沒有客戶會問及他們的項目使用的是什么代碼標(biāo)準(zhǔn)。
客戶不在乎代碼,也不在乎架構(gòu),更加不在乎整個系統(tǒng)是否臃腫不堪。他們想要的就是解決他們的問題。
真正的難點在于權(quán)衡以下這兩個極端:我們的工作就是寫代碼,亦或是認(rèn)為,代碼和產(chǎn)品這兩個條件永遠(yuǎn)無法同時滿足。
下面讓我們認(rèn)識兩位新手程序員——Sam和Ted。ps:如有雷同,純屬巧合。
Sam是一名從剛從當(dāng)?shù)匾凰髮W(xué)畢業(yè)的新員工,是個標(biāo)標(biāo)準(zhǔn)準(zhǔn)的學(xué)霸。她的面試和FizzBuzz測試表現(xiàn)都非常出色,現(xiàn)在她正式開始她的***天程序 員生涯工作(被聘用了?。?。你,作為項目負(fù)責(zé)人,指派給她***個任務(wù)。因為她才剛開始,所以任務(wù)并不難,你(作為一名有經(jīng)驗的開發(fā)人員)覺得大概一小時時 間就能搞定,不過,你基于保守估計,認(rèn)為她可能需要用一天的時間。
最終她花了一個星期時間!從第二天開始,每次檢查的時候,她都信誓旦旦地說一切進展順利,代碼會寫得非常***。***終于完成了,果然如她所說的那樣:代碼***得像藝術(shù)品。但是,請注意,她花了一個星期的時間才完成了這項本應(yīng)該不超過一天的任務(wù)。
現(xiàn)在,來說說Ted。
Ted和Sam同一天被錄用。他的面試也很順利,盡管他完成問題的速度非??臁D阋步o了Ted一個相對簡單的任務(wù):大概需要一天時間。
但是他只花了一小時!在你中午的休息時間,Ted就噌噌噌跑過來交任務(wù)了——瞧那驕傲自得沾沾自喜的樣子,仿佛在一個勁說“求表揚,求給贊!”但是 一看他的代碼,就只能呵呵了:很多復(fù)制粘貼來的代碼片段,亂七八糟的函數(shù)命名,組織混亂,霧里看花的解釋,等等等等,就像一鍋大雜燴一樣,你不認(rèn)識我我也 不認(rèn)識你。
你的團隊更屬意誰呢,Sam還是Ted?都不是。這兩個實際上都不能提供真正的產(chǎn)品?他們一樣糟糕:一個思考得太多,另一個則思考得太少。
所以,謹(jǐn)記這一點,付你薪水不僅僅是讓你來寫代碼的,也不是僅僅只需要思考,你還需要開發(fā)出能夠解決問題的產(chǎn)品。
對此,你的看法呢?歡迎各抒己見。