|
老羅的Smartisan T1手機(jī)發(fā)布會很多人應(yīng)該都看了,發(fā)布會的最后老羅凝視著自己的工匠自畫像,半晌沒說話,隨后轉(zhuǎn)過身,慢慢離開舞臺,屏幕下方只留下一句話:
我不是為了輸贏,我就是認(rèn)真。
這一瞬間讓我想起93年「獅城舌戰(zhàn)」的主角蔣昌建,在「人性本善還是人性本惡」的總結(jié)陳詞最后,以顧城的名句,「黑夜給了我黑色的眼睛,我卻用它尋找光明」,把整個辯論賽的氛圍推向高潮。
而老羅的這句話,和這句話背后的工匠背景,卻以另外一種無聲的卻震人心魄的力量,敲打著每一個在場的,或是觀看著整個發(fā)布會的觀眾的心緒。
「工匠情懷」,我深有體會,就像我在 面向GC的Java編程 一文中所提到的:
優(yōu)秀程序員的價值,不在于其所掌握的幾招屠龍之術(shù),而是在細(xì)節(jié)中見真著。
如果我們可以一次把事情做對,并且做好,在允許的范圍內(nèi)盡可能追求卓越,為什么不去做呢?
追求卓越,追求完美,追求細(xì)節(jié)的極致。小時候看到那些修表匠,握著一個小螺絲刀,或是看著電工,用烙鐵沾著錫和松香,在那一小寸的世界里,把壞了的地方修好,那種專注的眼神,覺得很厲害。
現(xiàn)在再去回想那些工匠工作的場景,越發(fā)覺得欽佩。在我老家有一家刻章的店,在我上幼兒園的時候就已經(jīng)在那開了很多年了。前段時間需要刻一個章,發(fā)現(xiàn)那家店還在,于是走進(jìn)去,門口坐著一個老人,我確實記不得當(dāng)年是不是他,不過看這歲數(shù)八九不離十。我以前在別的地方刻的章,都是在電腦里設(shè)計完圖案后,激光刻蝕。但那次老人卻是用的手刻,我著實驚呆了。只看他拿出一塊紅色的印底,右手持著刻刀,開始一下一下地刻著。雖然老人連話都不怎么說得清了,但是工作時那專注的神情,和精湛的手藝,以及最后成品那比機(jī)器更完美的效果,著實讓我心里非常動容。
一、技術(shù)人的執(zhí)著
我見過很多人,也見過很多程序員,都有如此的「工匠情懷」。
做產(chǎn)品需求評審,有的人善于快速提供技術(shù)解決方案,在最短的時間內(nèi)解決問題。
但我見過的很多牛人,他們除了能在腦海里最快地形成方案原型,并且更深入地考慮各種細(xì)節(jié)點,最終能給出一個更趨于完善的技術(shù)方案。
在他們身上,我看到了對這項職業(yè)的自我尊重,對自我價值的追求,也有對「卓越」的理解和渴求。
《精通正則表達(dá)式》的譯者余晟老師寫過他和正則表達(dá)式的 緣起 。只是因為項目經(jīng)理讓他「多用Google,查查正則表達(dá)式的資料」,余老師打開了正則的大門,讀完了英文原版的《Mastering Regular Expression》,如今成為了國內(nèi)最了解正則表達(dá)式的人之一。
看完那篇文章其實我想起了我的實習(xí)經(jīng)歷。那時候我剛?cè)ス緝扇欤幸惶煳依习逭椅易屛已芯恳幌氯绾斡?a href=/itjie/Javajishu/ target=_blank class=infotextkey>Java里的MappedByteBuffer做文件內(nèi)存映射來讀取大文件。盡管我們當(dāng)時要處理的文件很大,以我在學(xué)校編碼的經(jīng)驗看,用普通的Reader也是可以很好地解決的。
于是我說,「這個其實用Reader也能做,更簡單一些,沒那么麻煩。」
老板反問我,「什么叫沒那么麻煩,這是一個做技術(shù)的人的態(tài)度嗎?」
那幾天我花了很多時間,去從Linux一直到JVM,去了解什么是內(nèi)存映射,底層原理是什么,和其它技術(shù)的比較、優(yōu)缺點,并和其它幾種讀文件的技術(shù)做了性能對比。
雖然最后項目沒有采用這個方案,但是那句反問直到現(xiàn)在一直在我腦海里,時時地提醒我:「做技術(shù)的人,對待技術(shù),應(yīng)該擁有什么樣的態(tài)度?」
所以其實我很感謝我的老板,以前他教我們這些新人優(yōu)秀的職場習(xí)慣,有一條是每天的郵件必須沒有未讀數(shù),即便是不需要閱讀的郵件,也要一鍵置為已讀,不要留一個未讀的數(shù)字在那。現(xiàn)在想起來,有點像ios App右上角那個提醒數(shù)的角標(biāo),有些強(qiáng)迫癥的人怎么也忍受不了有個紅圈圈在那。開個玩笑,雖然有些習(xí)慣看起來可有可無,無關(guān)緊要,但這確實映射了一種態(tài)度和思維習(xí)慣。
完美有多遠(yuǎn)?我不知道,但我愿意多往前走一步。
二、拾起初衷
我們的生活,每天很忙碌。有時候忙得自己都忘記了為什么在此處,有時候忙得只能不斷地用直覺、用以往的經(jīng)驗去設(shè)計一個解決方案,而沒有時間去思考需求是不是合理,方案是不是最佳,我們以為自己設(shè)計的是最佳實踐,誰知道呢?
這個社會,這個世界,處在一個以不可思議的速度向前直奔的時間線上,我們處在這個時代的浪潮之上,每個人都感到了那種令人窒息的緊迫感。
父母都是不希望孩子太累的,我們見過很多這樣的話:
差不多就行了。
糊弄糊弄就完事了。
不要與眾不同。
順其自然。
但是你應(yīng)該問問自己,是不是真的要 順其自然 ?
我記得在上大二的時候,聽一個叫端木恒的人說過一句話,大意是,這個世界上,政治可以改變很多事情,而科技,可以通過促進(jìn)信息的流通,最終去推動政治的變革,去改變整個世界。
當(dāng)時覺得這事兒太酷了,是的,所以我當(dāng)時的想法是,要去一個技術(shù)足夠強(qiáng)大,并且對人們的生活有實質(zhì)影響的公司。希望用技術(shù)的力量去讓更多人生活地更好。
這當(dāng)然是一種不自量力,但又如何呢?只是一個普通人小小的想法,不斷追求卓越,愿意比別人多往前走一步而已。
就像馮大輝說的:
所有人都說你做不成,都告訴你不要去做,不靠譜,嘲諷你,而你最后真的把事情做起來了,這就是牛逼。
做成了,其實牛不牛逼對你自己而言已經(jīng)不重要了。
沒做成,所有人都笑你是傻逼,但起碼也對得起自己的內(nèi)心。
再說,如果 青年人 想的都是養(yǎng)老和退休,那做事的人在哪?
三、發(fā)現(xiàn)更好的自己
老羅最后的一個問題是:
在一個完美主義者的眼里,這是一個怎樣的世界?
這個社會上很多人在生活上追求更高的品質(zhì),但愿意對自己手頭所做的事情堅持高標(biāo)準(zhǔn)堅持卓越理念的人已經(jīng)不多見了,以至于我們發(fā)現(xiàn)花再多的錢也買不到安全的食品了,花了一輩子的積蓄買的房子卻有各種質(zhì)量問題。捫心自問自己在工作中是否能堅持某些東西,大部分人的態(tài)度都差不多,只是你糊弄一下不會怎樣,而他馬虎一點就會死人,區(qū)別僅僅在于這里。
M·斯科特·派克說過一句話:
規(guī)避問題和逃避問題的趨向,是人類心理疾病的根源。
很多人把隨大流把妥協(xié)作為一種「成熟」的標(biāo)志,小時候敢想敢說可能也敢做,長大以后懂得了人情世故,懂得向現(xiàn)實妥協(xié),45度角仰望天空說自己終于長大了。再看身邊那些「冥頑不靈」、「認(rèn)死理」的所謂完美主義者,認(rèn)為這些人才是不正常的群體,把這些人要么當(dāng)做傻逼要么當(dāng)做裝逼。
天哪,我都想問,「這是一個怎樣的世界?」
肯定有人會說,站著說話不腰疼。誠然,在生活中,有的人是為了活下去,有的人是為了活得更好,有的人是為了幫助別人活得更好。這是不同的人生階段,每個人的情況不一樣,但這并不影響每個人內(nèi)心的精神寄托和對信念的追求。
我從不指望去改變別人,但我相信我可以改變自己,雖然也很難。
學(xué)生都喜歡問,如何最快地告訴自己的能力。說實話,我真的不知道什么是捷徑,我的經(jīng)驗就是和比你優(yōu)秀的人一起工作,經(jīng)常請教比你資深的人,不斷挑戰(zhàn)過去的自己(每天審視自己太緊張了,只要比前段時間的自己更好就可以了)。
四、細(xì)節(jié)是魔鬼
Devils are in the details,細(xì)節(jié)是魔鬼,這句話很多人都聽過,但要在工作中時時刻刻注意?難。
前幾天給同事做Code Review,就幾行代碼,發(fā)現(xiàn)了一個問題。
場景是我們發(fā)現(xiàn)某個系統(tǒng)中存在占用內(nèi)存超大的HTML字符串,需要統(tǒng)計HTML字符串的長度,于是為了獲得準(zhǔn)確的字節(jié)長度,這段代碼調(diào)用的是String.getBytes().length,一眼看起來并沒有什么大問題。
但是考慮到本身這個字符串就比較大,聯(lián)想到Java內(nèi)部是用UTF-16存儲字符串的,而getBytes()會轉(zhuǎn)換為系統(tǒng)默認(rèn)編碼(GBK或是UTF-8等等),這里必然存在底層字符數(shù)組的拷貝(可以去參考String.getBytes()的源代碼證實),一個本身就很大的字符串,經(jīng)過拷貝,將會占用更多的內(nèi)存,加劇這個問題,而在HTML中,中文其實只占了非常小的一部分,所以直接用String.length(),雖然會少數(shù)幾個字符,但對統(tǒng)計結(jié)果影響其實并不大,并且這里不存在任何數(shù)組分配的開銷。
另外建議所有調(diào)用String.getBytes()的地方通通顯式傳入編碼,這是個大坑。
另外一個案例,也是在Code Review的時候發(fā)現(xiàn)的。
某個調(diào)用場景下,每次都會新建一個解析器對象去解析結(jié)果,盡管解析器沒有任何實例變量不會產(chǎn)生線程安全問題,創(chuàng)建的開銷也并不大,但我還是堅持要改成單例,使用同一個實例去處理,這也符合面向GC編程的思想。
這些場景,每天我們都在遇到,也許我們會說這些都是很小的問題,無傷大雅,差不多就行了。但就像前面說的,這是一種態(tài)度,一種思維習(xí)慣,當(dāng)你堅持用最高的標(biāo)準(zhǔn)去要求自己,去要求自己的工作時,你才有可能漸漸接近卓越。細(xì)節(jié)是魔鬼,它會在完全察覺不到的時刻,把人拉回平庸。
「我不是為了輸贏,我就是認(rèn)真。」這不代表我們不在乎輸贏,從頭至尾我都堅信,只有堅持完美,堅持品質(zhì),堅持那些我們曾經(jīng)了解現(xiàn)在可能已經(jīng)放棄了的美好的東西,像一個老工匠,把一種專注、追求極致的情懷融入我們的作品里,也許有一天,就有人,追尋著 夢想 ,發(fā)現(xiàn)了 生活更多的可能性 ,像喬布斯、像貝索斯,改變整個行業(yè),改變?nèi)澜纭?/p>
我們是被這個時代推上浪潮之巔的人,是去做一個見證者,或是一個沖在最前面也不怕被拍死的傻瓜,是我們每個人選擇的權(quán)利。
只是不要忘記,那些傻瓜,不是真的不怕死,他們只是認(rèn)真。
it知識庫:「我只是認(rèn)真」——聊聊工匠情懷,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。