筆者曲健挫鸽,1024生人说敏,天選程序員,漿糊人送外號“大爺Dà Yé”丢郊,目前在奧琪科技擔(dān)任首席架構(gòu)師一職盔沫。
彼得德魯克的經(jīng)典之作《卓有成效的管理者》里提到医咨,知識管理者必須學(xué)會自我驅(qū)動、自我管理架诞,而動力取決于工作是否卓越有效腋逆,是否有所成就。程序員就是典型的知識工作者侈贷,本文就是細(xì)數(shù)一下程序員的生存之道,或者說自驅(qū)之道等脂。
00 優(yōu)雅的命名
程序員生存法則Number One, 無出其右者俏蛮,且不接受挑戰(zhàn)。
務(wù)必記住上遥,程序員的第一武裝不是格子衫不是脫發(fā)搏屑,是代碼! 如果把代碼比喻成人體,那么邏輯(指令)是經(jīng)脈粉楚,數(shù)據(jù)是氣血辣恋,而命名就是穴位。
大家想想在閱讀代碼的時候模软,不管是變量名伟骨、方法名、類名還是系統(tǒng)名燃异,都是用于輔助理解邏輯/功能的特別重要的標(biāo)識携狭。我可以負(fù)責(zé)任的說:程序員命名能力的高度基本決定了他/她未來的高度。命名絕不僅是名字本身回俐,它更可映射出作者的思維框架逛腿、知識外延、邏輯推理仅颇、語言能力单默、創(chuàng)造力、想象力等等忘瓦,所以是不是瞬間拔高了搁廓?
可以參見我之前關(guān)于取名技巧的一篇文章《IT范兒 | 你是個會取名兒的人么?》
DàYé啰嗦
# 長點(diǎn)心好好補(bǔ)補(bǔ)英文政冻,程序員閱讀各種英文文檔需要詞匯量自不必說枚抵,如果你每次命名都需要翻譯軟件,不自知的取最生僻的那層含義明场,或者各種拼寫錯誤汽摹,往大了說特別容易引入BUG,往小了說實(shí)在丟人丟份苦锨。
# 同一代碼塊/層級/工程中一定不要出現(xiàn)過于相似的名字逼泣。由于相似導(dǎo)致寫邏輯的時候把自己整亂的大有人在趴泌!每每評審看到這種代碼吾必痛心疾首。
userVo, userDTO, userBo, userPo...
userAddedList, userAddedLists...
getUsers(), usersQuery(), getUserList()...
# 切不可文不對題拉庶,切不可“百轉(zhuǎn)千回”嗜憔。何意?比如說判斷一個人是否是注冊會員氏仗,變量名被定義成了 notRegisteredUser吉捶,大家想想在寫各種if條件組合的邏輯判斷時會有多酸爽。
01 想清楚再動手
我經(jīng)常跟團(tuán)隊的人強(qiáng)調(diào)慢動手腦先行皆尔,可惜能領(lǐng)悟到精髓的人真心不多呐舔,其余的通常會以項(xiàng)目進(jìn)度為由,將“先碼起來”列為第一要務(wù)慷蠕,殊不知災(zāi)難就是這么悄然來臨珊拼。
書法看筋骨,代碼亦如此流炕。
代碼的“筋骨”無非就是分層澎现、結(jié)構(gòu)、邏輯每辟、抽象剑辫、封裝、模式...曾經(jīng)大行其道逢人必談渠欺,到現(xiàn)在感覺都沒什么人提起了的GoF 23種設(shè)計模式揭斧,其實(shí)就提供了23種“筋骨”范例,大家依葫蘆畫瓢就行峻堰。
代碼沒有編譯成機(jī)器碼之前讹开,都是給人讀的。業(yè)界戲稱的衡量代碼好壞的指標(biāo)就是“閱讀該代碼時說臟話的次數(shù)”捐名,我們罵的通常就是代碼“筋骨”旦万。
要“想清楚”就是想辦法練好“筋骨”。TDD測試驅(qū)動模型的話镶蹋,考慮應(yīng)該怎么設(shè)計邏輯控制成艘?DDD領(lǐng)域建模的話,考慮應(yīng)該怎么建立領(lǐng)域?qū)嶓w贺归?BDD老板驅(qū)動的話淆两,考慮迅速翻翻老板以前寫過的代碼、說過的話拂酣、下過的KPI秋冰,當(dāng)然這是玩笑。
曾有多少次婶熬,我們懷著一顆要求完美的心剑勾,罵著前人寫的狗屎一樣的舊代碼埃撵,不得不妥協(xié)著項(xiàng)目壓力,不斷降低著那條曾經(jīng)的標(biāo)準(zhǔn)虽另,敲出自我放逐的同樣狗屎一樣的新代碼暂刘,附上那句可能永遠(yuǎn)無法兌現(xiàn)的“以后重構(gòu)”的承諾,最終進(jìn)入一個不斷償還他人和自己技術(shù)債的死循環(huán)里...
DàYé啰嗦
經(jīng)典的《Java編程規(guī)范》里開篇總則里的“第一次就做對”捂刺,聽起來輕飄飄的一句話谣拣,背后深意滿滿。帶腦子有思考的編碼族展,想第一次能做對都不是那么容易芝发,別說沒動腦的了。這里羅列一些身邊實(shí)際發(fā)生過的錯誤行為模式苛谷,供君一品:
# “初期沒多少數(shù)據(jù)量的,我循環(huán)著一條一條Insert沒什么問題格郁,等哪天數(shù)據(jù)量大了腹殿,我再考慮批量插入吧!” 請問批量插入很難么例书?還需要以后锣尉?
**# **“這個代碼是我從另一個項(xiàng)目里拷貝過來的,他那邊運(yùn)行的一直沒有什么問題决采∽圆祝” 然后某一天出現(xiàn)了內(nèi)存泄漏,因?yàn)閮蓚€項(xiàng)目的流量完全不對等树瞭,不求甚解不動腦拇厢,搬磚型碼農(nóng)這里體現(xiàn)的淋漓盡致。
**# **“為了測試環(huán)境方便聯(lián)調(diào)晒喷,易于排障孝偎,我每個關(guān)鍵點(diǎn)都打印了Info日志×骨茫” 實(shí)際上打印的都是無腦的不攜帶任何參數(shù)線索的trans begin/trans end類日志衣盾,在分布式日志平臺里看到的各種無法上下串聯(lián)的孤島日志,我常常邊心疼著磁盤存儲和索引計算成本爷抓,邊碎碎念著這些系統(tǒng)真的可以做好線上運(yùn)維排障么势决?
**# **“某些邏輯點(diǎn)我hardcode了一些代碼,用來觸發(fā)某些特殊邏輯分支方便測試蓝撇,等上線的時候這些我都會刪掉果复。” 等真的上線了渤昌,這些hardcode被帶上去的不在少數(shù)据悔。
**# **“系統(tǒng)有兜底的全局異常攔截器传透,就算有些異常沒catch, 最終也會被攔截器包裝成標(biāo)準(zhǔn)報文返給前端的,所以有些類似空指針異常我就無視掉了极颓≈煅危” 結(jié)果就是APP用戶不勝其煩的看到各種“系統(tǒng)未知異常”的彈窗菠隆。
**# **“Service層就是簡單的數(shù)據(jù)庫CRUD兵琳,Business層這么多業(yè)務(wù)邏輯,保證數(shù)據(jù)一致那就讓事務(wù)的邊界擴(kuò)大一些骇径,直接把事務(wù)管理放到Business層不就完事了躯肌。” 結(jié)果就是事務(wù)里面包裹了各種耗時數(shù)據(jù)IO破衔、邏輯計算甚至更耗時的RPC調(diào)用清女,導(dǎo)致事務(wù)整個被拉長,資源被鎖住的時間也加長晰筛,最后就是各種阻塞直至雪崩嫡丙。
02 動手能力
東北大兄弟說:能動手就別BB。
程序員的基本工作除了前面說的動腦读第,緊接著就是動手了曙博。這里需要做一下澄清:基礎(chǔ)的編碼僅僅是動手能力的一部分,而真正的動手能力遠(yuǎn)不僅于此怜瞒。
身為一個程序員父泳,可以搭建一個完整的網(wǎng)站,可以開發(fā)一個桌面效率工具吴汪,可以編寫一個Excel的VBA腳本惠窄,可以根據(jù)官方文檔部署和定制開源系統(tǒng),可以根據(jù)API實(shí)現(xiàn)自動化偷懶...
以上才是我想說的動手能力漾橙。
大家都知道人和動物的區(qū)別是“使用工具”睬捶,而程序員群體是更加需要善用工具、甚至創(chuàng)造工具的一類人近刘。當(dāng)然不要本末倒置擒贸,使用工具不是目的只是手段,是為了提高效率觉渴、保證質(zhì)量介劫、降低成本等的手段。
那么最牛逼的工具是什么唻案淋?
Quora有個回復(fù)很帶感:“A web browser, with Google as its default opening page.” 一個默認(rèn)打開首頁是Google的瀏覽器座韵。
隱晦的表達(dá)了我們程序員很多時候是面向搜索引擎編程的尷尬...
程序員應(yīng)該跪謝這位大神,Larry Tesler, 就是他發(fā)明了Copy&Paste。
這是如此偉大的一項(xiàng)發(fā)明誉碴,如此的基礎(chǔ)和常用宦棺,以至于大家好像都忽視了它的巨大能量。
DàYé啰嗦
# “代碼的搬運(yùn)(Copy&Paste)”絕對不是動手能力黔帕,“搜索”卻是代咸。因?yàn)閮?yōu)秀的程序員必然善用搜索引擎、具備良好的搜索技能成黄。
參見我之前的一篇推文《技術(shù)人如何高效搜索》
# 承認(rèn)Copy&Paste是個偉大的發(fā)明呐芥,但是我還是建議能不用就不用,能手敲就手敲奋岁,除非是嚴(yán)重影響工作效率不得不C&P思瘟。歷史上由復(fù)制黏貼引起的BUG還小么?
# 熟練IDE、操作系統(tǒng)闻伶、常用軟件的一些快捷鍵滨攻。不使用快捷鍵,就和手機(jī)不用手勢一樣蓝翰。先不說了光绕,WIN+L鎖屏,泡個程序員紅茶去霎箍。
03 提問的藝術(shù)
程序員骨子里的孤傲?xí)r常會把自己定位成一個問題終結(jié)者,提問題似乎與此格格不入澡为。我到現(xiàn)在都沒太想明白這種孤傲源自于哪里漂坏,也可能是知識工作者特有的清高。其實(shí)吧媒至,大家日不離手的搜索引擎顶别,不就是一種另類的提問么?
卜學(xué)良 子曰
亮子的中心思想是個Why拒啰,Why的表現(xiàn)是驯绎,搞不懂就問人,搞得懂就答人谋旦,沒有人懂還可以問神...要懂得推理要心存懷疑钦睡,要充滿好奇要巨細(xì)靡遺赏胚,要打破砂鍋問到底。
Come on everybody!
全套流程建議的第一步是先把自己的問題明確化,并耗費(fèi)一定的精力去研究琢磨呛踊,直到卡滯;第二步是不恥上問/不恥下問, 敢于開口去提問含蓉,不要怕丟人以政,面子相對于知識不值一提;第三步將自己的問題、自己研究的發(fā)現(xiàn)等等一并列出芒粹,給解答者一個完整的上下文和盡可能多的線索兄纺,以節(jié)省雙方的大量時間;第四步化漆,不管最終是否解決估脆,可以基于解答者給出的方案或者方向,自己在想其他辦法去深挖获三,補(bǔ)齊自己的只是短板旁蔼。That's it.
心理專家亞瑟·阿倫有個著名的讓陌生人快速熟悉的“36問”,就是好問題的模板疙教,節(jié)選幾個:
1棺聊、如果可以跟世上任何人共進(jìn)晚餐,你會選擇誰贞谓?
2限佩、你會想出名嗎?以什么樣方式出名呢裸弦?
3祟同、在打一通電話之前,你會先排演要在電話中說什么嗎理疙?為什么晕城?
4、你心中最完美的一天是做哪些事呢窖贤?
5砖顷、你上一次唱歌給自己聽是什么時候?上一次唱給別人聽又是何時赃梧?
12滤蝠、如果你明早一覺醒來發(fā)現(xiàn)自己獲得了某種能力,你希望是什么能力授嘀?
30物咳、你上一次在別人面前哭是什么時候?上一次自己哭是什么時候蹄皱?
36览闰、 說一個個人問題并詢問對方的處理意見,讓對方向你反饋巷折,你對這個問題所表現(xiàn)出的態(tài)度焕济。
DàYé啰嗦
以下的反面教材大家耳熟能詳:
# 以他的能力和水平完全可以幫我解答這個問題,為什么他不肯幫我盔几?
幫你是情分晴弃,不幫是本分,沒有什么理所應(yīng)當(dāng)。程序員群體大部分時候是和諧互助的上鞠,當(dāng)然前提是你的問題問到點(diǎn)上际邻、足夠清楚、有挑戰(zhàn)芍阎、禮數(shù)到位或者紅包打頭陣世曾,否則參見下面的細(xì)分場景。
# “大神救命啊谴咸,我用這個框架老是啟動不起來轮听。我可是嚴(yán)格按照手冊一步一步來的!”
然后就沒有然后了岭佳。你的詳細(xì)線索呢血巍,你怎么排障的呢,你有初步的懷疑對象么珊随?這種賣慘式發(fā)問只會給人一種感覺:你自己壓根沒分析過述寡!我的時間可不是浪費(fèi)來解決你分內(nèi)事情的。
#“字符集是UTF8的Mysql5可以存儲emoji表情么叶洞?”
這種簡單的問題要不自己去試鲫凶,要不去搜,順便把這塊相關(guān)的知識點(diǎn)都去閱讀一下衩辟。你指望某個人給你個答復(fù)的同時螟炫,還能把整個知識點(diǎn)給你解釋一番?
# 劈頭蓋臉的一堆問題懟出來艺晴,沒有停頓昼钻、沒有組織、沒有循序漸進(jìn)财饥。
散彈槍式的發(fā)問極容易引起他人的反感换吧,因?yàn)槟惆褎e人當(dāng)成了答題人折晦,而不是有來有往的虛心求教钥星。適度且有節(jié)奏的發(fā)問才是王道。
# 發(fā)問前禮貌性的確認(rèn)對方是否有時間幫忙满着,發(fā)問后不管是否解決都要表示感謝谦炒,禮數(shù)一定要到位。不要整成一次性買賣风喇,畢竟因?yàn)橐淮尾欢Y貌導(dǎo)致未來可能再難得到幫助宁改,得不償失。
# 有些人眼花繚亂的問題描述完全不在點(diǎn)子上魂莫,解答人若善于引導(dǎo)和抽絲剝繭还蹲,能從源頭上幫忙解決,若只是純粹的一問一答,那答案可能壓根幫不上忙谜喊,因?yàn)閱栴}本身的方向就錯了潭兽。這種體現(xiàn)邏輯洞察能力或者溝通能力,下面會提到斗遏,要做到“直抒胸臆”不簡單山卦。類似的場景在程序員和產(chǎn)品經(jīng)理之間也時常發(fā)生,聊的牛頭不對馬嘴诵次,雙方都找不到中間的那個契合點(diǎn)账蓉,沖突也就難免。
04 邏輯推理
程序員日常編碼80%的工作除了想變量的命名逾一,就是在寫邏輯分支铸本。而日常非編碼80%的工作就是理解需求或設(shè)計架構(gòu),都需較要強(qiáng)的邏輯思維嬉荆。
先玩?zhèn)€游戲:估算下中國有多少程序員(不嚴(yán)格定義邊界)归敬?
基于GitHub的2018年度數(shù)據(jù)報告,目前一共3100萬注冊用戶鄙早,20%美國本土用戶汪茧,中國是僅次于美國的GitHub大戶,打個八折限番,算出中國注冊用戶500萬(無視不同程度的水分)舱污。
https://www.idc.com/getdoc.jsp?containerId=US44363318
再按照IDC估算的全世界2200萬左右軟件工程師,按比例折算下中國碼農(nóng)群體 500萬/1.4≈350萬弥虐。
本人宣稱對中國碼農(nóng)群體350萬這個虛數(shù)負(fù)責(zé)到2019年年底扩灯。
參考鏈接:
世界人口(77億):https://www.worldometers.info/cn/
中國人數(shù)(13億,就業(yè)人數(shù)7.7億):
https://www.ceicdata.com/zh-hans/country/china
以上是個典型的考察邏輯推理能力的小例子霜瘪≈椴澹《超級思維》這本書里面有更多奇奇怪怪的邏輯題目,都是讓你感覺無從下手的颖对。
其實(shí)捻撑,在拿到一個即使簡單如APP登錄的需求時,作為知識工作者的程序員就也需要展現(xiàn)出自身強(qiáng)大的邏輯推演能力缤底,抽絲剝繭顾患,將需求抽象為領(lǐng)域模型或者轉(zhuǎn)化為系統(tǒng)設(shè)計。這方面有大量的方法論个唧,比如奧卡姆剃刀江解,比如WBS,都不重要徙歼。重要的是你一定要沉心靜氣犁河,不能是悶頭蒼蠅似的一通亂撞鳖枕。要找到最適合自己、最適用當(dāng)下的那個方法桨螺。是砍掉枝葉先看主干耕魄,還是抽絲剝繭層層拆解,都是邏輯推理的一種體現(xiàn)罷了彭谁。
DàYé啰嗦
APP登錄過程究竟發(fā)生了什么吸奴,或者應(yīng)該發(fā)生什么,是我面試時經(jīng)常用來考察一個人邏輯思維能力的題目缠局。除了是人都知道的用戶名密碼校驗(yàn)還有什么呢则奥?
# 用戶名的長度區(qū)間是什么?
# 用戶名支持的字符集是什么狭园?存儲會亂碼么读处?
# 密碼的長度區(qū)間是什么?字符組合是什么唱矛?
# 密碼的加密方式是什么罚舱?如何確保傳輸通道不會被中間人劫持?
# 用戶名/密碼是否含有非法字符(代碼注入)绎谦、政治敏感管闷、低俗不雅的文字?
# 密碼最多可以輸錯多少次窃肠?超過后賬戶禁用多久包个?
# 是否支持用戶多終端登陸?如果支持的話冤留,賬戶在A終端被禁用后碧囊,在B終端的已登入態(tài)是否被踢出?
# 用戶在終端的登錄有效時長如何考慮的纤怒?
# 登錄的錯誤提示有很多種糯而,用戶名不存在、密碼錯誤泊窘、賬戶禁用熄驼,還有哪些?
還有很多沒展開州既,如手機(jī)號/郵箱綁定谜洽,短信/郵件驗(yàn)證碼驗(yàn)證萝映,常用設(shè)備管理等等吴叶,可以繼續(xù)推演下去,但是如果能在面試的壓力環(huán)境下序臂,有條不紊的羅列出用戶名蚌卤、密碼实束、安全、狀態(tài)逊彭、話術(shù)咸灿、用戶體驗(yàn)面等等這些維度上的思考,那基本上沒毛病侮叮。真實(shí)情況是不少人在這些維度上跳來跳去避矢,沒有條理性、延續(xù)性囊榜,想到哪兒是哪兒审胸,只能說明邏輯推理上有所欠缺。
05 時間規(guī)劃, 要事優(yōu)先
我們身邊不乏這種人:每日忙忙活活卸勺,勤勤懇懇砂沛,樂于助人,看起來是公司里最敬業(yè)愛崗的那個曙求。實(shí)情卻是大量任務(wù)一旦堆積到他手里就失去了進(jìn)度碍庵,甚至因?yàn)橥瑫r趕很多任務(wù),導(dǎo)致高優(yōu)先級任務(wù)的質(zhì)量不達(dá)標(biāo)悟狱。這類人的典型問題就是做不好時間規(guī)劃静浴,分不清輕重緩急。
愛因斯坦老頭的相對論告訴我們挤渐,時間是相對的马绝。同樣的每天8小時,有序挣菲、有效和高效的使用了這8小時的產(chǎn)出富稻,可以比無序、無效和低效的產(chǎn)出高出2倍不止白胀。核心點(diǎn)是什么呢椭赋?
DàYé啰嗦
# 讓時間的無效流逝產(chǎn)生罪惡感
理解前先舉個栗子。小時候暑假的前半段基本都是瞎玩或杠,最后一周瘋狂的寫作業(yè)哪怔,連吃飯都覺得在浪費(fèi)時間,如果吃飯的時候還在看電視向抢,那時的罪惡感爆棚认境,時刻覺得我的作業(yè)還在等著我...所以明白了么,產(chǎn)生罪惡感的前提是我的任務(wù)是有優(yōu)先級的挟鸠,加上自己的責(zé)任感叉信,一旦高優(yōu)先級任務(wù)阻滯了,而我還在浪費(fèi)時間在某個無意義的事務(wù)上艘希,就會及時叫醒自己硼身,阻止自己的繼續(xù)浪費(fèi)硅急。
# 好記性不如爛筆頭
曾幾何時公司里的筆記本還是用來記事的,現(xiàn)在好像成了用來涂鴉的了佳遂。一般開會我都會要求大家都帶筆記本营袜,無他,我就是不信你的腦子記得住會議上的所有要點(diǎn)或者決議丑罪;而日常項(xiàng)目中有些重要的事項(xiàng)或者節(jié)點(diǎn)也都應(yīng)該記錄下來荚板,項(xiàng)目上線前翻一翻確認(rèn)自己沒有遺漏;等等吩屹。當(dāng)然上面說的這些你可能有其他的工具來實(shí)現(xiàn)啸驯,殊途同歸罷了。
# 請學(xué)會拒絕
爛好人這種事情在職場基本是行不通的祟峦。因?yàn)槟愫梅6罚愕氖虑榫蜁喽s;因?yàn)槟愫谜悖愕氖虑榫投际歉邇?yōu)先級针姿;因?yàn)槟愫茫鞒桃?guī)范就容易違反厌衙;因?yàn)槟愫镁嘁瑫r間一長就成了理所當(dāng)然,這事將永遠(yuǎn)粘著你婶希;因?yàn)槟愫瞄畔荆蝿?wù)積壓到你手里,任務(wù)最終延期交付喻杈,你得背鍋彤枢;因?yàn)槟愫茫憔驮僖簿芙^不了別人了筒饰,因?yàn)椤袄卒h”是不會也不該拒絕他人缴啡,會一直被道德綁架在十字架上。
06 心向自由, 遵紀(jì)守法
人是生而自由的瓷们,卻無往不在枷鎖之中业栅。
-- 盧梭 《社會契約論》
人生而自由,清高的程序員更加的心向自由谬晕。不喜歡西裝革履碘裕,不喜歡一板一眼,不喜歡上班打卡攒钳,不喜歡規(guī)章制度...
每家公司都制定了各種各樣的制度帮孔、規(guī)范、流程夕玩,這些東西經(jīng)常被視為洪水猛獸你弦,枷鎖鐐銬。只有不成熟的人才會把自由放在嘴邊燎孟,成熟的人怎么會不知道
自由是要付出代價的禽作!
上班時間是自由彈性的,結(jié)果可能是開敏捷站會的時候少一個人更新進(jìn)度揩页,因?yàn)槟銢]來旷偿,這個代價誰來支付?
生產(chǎn)上線可以隨意發(fā)揮爆侣,上掛了再上一次唄萍程。如果一個面向C端用戶的產(chǎn)品,你確定要讓用戶承擔(dān)無法使用兔仰、公司承擔(dān)損失用戶的代價么茫负?
數(shù)據(jù)權(quán)限是自由的,這樣查數(shù)據(jù)方便多了乎赴,誰來承擔(dān)數(shù)據(jù)被導(dǎo)出打包賣的代價忍法?
開發(fā)私接需求,不走那套評審榕吼、設(shè)計和進(jìn)入迭代的繁瑣流程饿序,測試不知道這塊的回歸內(nèi)容,上線后出問題才發(fā)現(xiàn)羹蚣,這個代價誰承擔(dān)原探?
選擇了自由,必須承擔(dān)代價顽素,也同時選擇了責(zé)任咽弦。沒有責(zé)任的自由只是小孩子過家家。所以在感覺自已被約束了之前胁出,先捫心自問离唬,自己是否有能力消解跳出框架的風(fēng)險,是否有擔(dān)當(dāng)承擔(dān)自由之后的代價划鸽。
07 羞恥心
有羞恥心的程序員才有資格清高输莺,因?yàn)樾邜u心是你的底氣。一個成天寫一堆低級bug毫無羞恥的程序員憑什么清高裸诽?自己首先會恥于不完美嫂用,做到無可挑剔,當(dāng)然可以清高丈冬。
剖開羞恥的表層嘱函,本質(zhì)其實(shí)是程序員對于自身的高要求。程序員對自己沒有要求埂蕊,和咸魚有什么分別往弓。這里還沒要求程序員主動去提升自己這個層面疏唾,就是靠錯誤的羞恥感驅(qū)動自己提升這一層,很多人做的都不夠好函似。出現(xiàn)BUG無所謂槐脏,上線失敗問題不大,這是自我放逐到了如何野蠻的地步了撇寞?
DàYé啰嗦
現(xiàn)在的互聯(lián)網(wǎng)應(yīng)用相對企業(yè)應(yīng)用顿天,可以更快更輕更容錯,給年輕人一種錯覺好像出點(diǎn)錯沒什么大不了的蔑担,也導(dǎo)致現(xiàn)在的年輕程序員對于BUG, 對于生產(chǎn)環(huán)境沒有太多的敬畏心牌废。
而從做企業(yè)應(yīng)用那個年代出來的程序員,對于這些都是謹(jǐn)小慎微啤握,一點(diǎn)點(diǎn)小錯都了不得鸟缕,感覺要死了,這或多或少與不同時代的程序員文化有關(guān)排抬。
# 只要是BUG就是丟人的叁扫,不是拿來自黑和一笑而過的。
# 代碼被評審出一堆意見來是丟人的畜埋,重復(fù)犯錯更丟人莫绣。
# 系統(tǒng)上線漏了個配置是丟人的,就算你前面的開發(fā)測試再完美悠鞍,最后臨門一腳沒做好对室,前功盡棄不羞恥?
# 系統(tǒng)上線后的問題都是客戶報障的咖祭,自己的監(jiān)控不到位掩宜,告警處理不到位,永遠(yuǎn)是落后客戶一步么翰,自己的系統(tǒng)自己HOLD不住牺汤,羞恥么?
# DaYe自己對于有些異常如NPE浩嫌、越界檐迟、類型轉(zhuǎn)換,一旦拋出來會覺得特別羞恥码耐,會捶胸頓足為何寫這部分代碼的時候沒有考慮清楚追迟。你會么?
08 同理心
同理心Empathy骚腥,簡單來說就是換位思考敦间,懂得傾聽,設(shè)身處地的共情共感。也是情商EQ理論里的專有名詞廓块。我覺得程序員在同理心方面做的奇差厢绝,也是程序員畫像“智商高情商低”的口實(shí)之一。
程序員思維特別擅長把任何交流轉(zhuǎn)換成技術(shù)語言來表述带猴,程序員說的口沫橫飛昔汉,其他人一臉懵逼。不會說“人”話這一點(diǎn)浓利,一直是程序員的硬傷挤庇,緣由大概是大部分時間跟電腦打交道钞速,導(dǎo)致的達(dá)爾文式退化吧贷掖。
程序員會說“人”話,境界必然升華渴语。因?yàn)槟闳裟馨殉绦蛩季S包裝成一種非技術(shù)人也能聽懂的語言苹威,說明你已經(jīng)脫離了程序員固有的思維框架,可以對等的用對方的語言來直接交流驾凶。就像我們在英語對話中牙甫,過程是對方的英語通過耳朵進(jìn)入腦中,先轉(zhuǎn)換成中文调违,然后想好中文的回答窟哺,再翻譯成英文,最后用嘴說出來技肩。都知道這是不對的且轨,但礙于英文水平渣渣,臣妾確實(shí)辦不到屏蔽中文切換環(huán)節(jié)虚婿,直接英文輸入輸出這種最優(yōu)秀的交流方式旋奢。
當(dāng)程序員開始用技術(shù)來碾壓或者嘲笑對方的無知,這時候的交流一定會出現(xiàn)爭執(zhí)和沖突然痊。要求我們立馬停頓且站在對方的立場想事情至朗,確實(shí)有點(diǎn)強(qiáng)人所難,但是我們可以從一個第三方不相干的人的立場來看這次交流剧浸,盡量保證客觀锹引,可能會發(fā)現(xiàn)另一種思路。
特別程序員在面對BUG和線上故障時的第一反應(yīng)唆香,通常也不是站在對方立場粤蝎,而是下意識的抗拒。前線一線商務(wù)人員密切關(guān)心故障進(jìn)度袋马,一定會時不時的催促初澎,而程序員思維這時經(jīng)常會丟出來的一句話是“在處理呢,別催”,如果站在對方的角度來表述“我們已經(jīng)找到問題的癥結(jié)了碑宴,還需要大約一刻鐘的時間软啼,走個緊急審批流程,已在著手修復(fù)了延柠,請再耐心等待一下”祸挪,將我們的努力過程表達(dá)出來,再給一個可期的未來時點(diǎn)贞间,會好一些么贿条?
09 近距離榜樣的力量
有人說“我的偶像是Linus Benedict Torvalds”,這個事情對你當(dāng)前的職場可能并無太多益處增热。因?yàn)長inus人家底子硬整以,可以懟天懟地懟上帝,而大部分愚鈍的我們還差得遠(yuǎn)...
所以我標(biāo)題里的重點(diǎn)是“近距離”和“榜樣”峻仇。也就是在你當(dāng)前職場環(huán)境下公黑,離你最近的最容易效仿和咨詢的那個榜樣型人才,才是你需要當(dāng)下盡全力追逐的摄咆。
比如自己的代碼在最近幾次評審里老是被提出很多評審意見凡蚜,傻的程序員沒感覺怎么樣,每次提多少改多少吭从,下次可能還犯朝蜘;聰明的程序員會每次做好總結(jié),保證下次不會再犯涩金;而智慧的程序員谱醇,會直接找評審人聊聊他心目中的好代碼的標(biāo)準(zhǔn),找公司的代碼規(guī)范checklist鸭廷,翻閱有優(yōu)秀編程能力同事的代碼枣抱,反復(fù)的學(xué)習(xí)和實(shí)踐,主動推動自己往下一個Level演進(jìn)辆床。
不管是技術(shù)佳晶、業(yè)務(wù)、產(chǎn)品還是管理讼载,除非你一騎絕塵轿秧,公司范圍內(nèi)在你視野里已經(jīng)Nobody了,否則每個維度都會有自己可以對標(biāo)的對象咨堤,務(wù)必虛心求教菇篡,刻苦訓(xùn)練。
我不知道程序員是不是很容易看不上公司內(nèi)部的一些分享課程一喘,經(jīng)常因故缺席驱还。然而在收集想聽什么課程的時候嗜暴,又說分享少,最好請外面的一些大神來講講課啥的议蟆。我一直斷言闷沥,有這種想法的程序員就不是為了知識,而只是為了有個接觸所謂大神的機(jī)會咐容,甚至最后能加個好友就有吹噓資本了舆逃。且不說有些所謂的大神很水,就是真正的大神講的那些干貨戳粒,你先確定自己能接得住么路狮?根基不穩(wěn)、眼高手低蔚约,所以別怪DaYe啰嗦奄妨,先找近前看得見摸得著的對象,試試超過他看看炊琉?
10.24 擁抱開源
現(xiàn)而今很多國際頂級的開源技術(shù)都是國人搞出來的展蒂,不僅讓世界看到了國人的技術(shù)能力又活,也讓國內(nèi)的信息化水平有了質(zhì)的飛越苔咪。
開源這個大寶藏用不好,就是可恥的浪費(fèi)柳骄。我經(jīng)常提醒團(tuán)隊在造輪子之前可以先去開源社區(qū)团赏,找找靈感找找思路,千萬別一頭扎進(jìn)去耐薯,寫出來一個殘次品沒人愿意用舔清。
反過來,開源對于程序員還是比較神圣的一種認(rèn)可曲初,所以我也會推動團(tuán)隊做一些開源方向的努力体谒。當(dāng)團(tuán)隊在開發(fā)一個內(nèi)部系統(tǒng),被安上一個開源的KPI之后臼婆,大家的專注力和自我要求都會加強(qiáng)N個檔位抒痒,畢竟誰也不想開源一個讓人嗤之以鼻的軟件,執(zhí)行力颁褂、羞恥心和榮譽(yù)感會無限爆棚故响。
以上,是我心目中程序員安身立命的幾條黃金法則颁独。有人可能會說彩届,扯了那么多,竟沒提程序員的基本功誓酒,其實(shí)基本功就藏在這10.24條里了樟蠕,自己去發(fā)現(xiàn)吧。
THE END