原文出處:知乎
姚冬的觀點
學(xué)習(xí)能力,尤其是自學(xué)能力拔莱,你啥時看到那些有名的程序高手在論壇上問“學(xué)習(xí) XX 該看什么書碗降,如何快速學(xué)習(xí) XXX隘竭,學(xué)習(xí) XXX 有什么代碼推薦”之類的問題,他們想學(xué)什么很快就能自己找到相關(guān)資料讼渊。這個行業(yè)發(fā)展太快动看,技術(shù)淘汰的速度也很快,3 年不學(xué)新東西就可能落伍了爪幻。
動手能力菱皆,都是看書看資料,當(dāng)別人還在糾結(jié)看什么書挨稿,還在糾結(jié)書里的字句是什么意思的時候仇轻,有些人的幾百上千行代碼都已經(jīng)能運行了。
耐心和毅力奶甘,做程序員興趣固然重要篷店,寫自己喜歡的代碼那是相當(dāng)愉快的事情,但是程序開發(fā)中無論如何還有大量乏味無趣的事情臭家,要能堅持疲陕,咬牙把這些做完。
表達能力钉赁,能在大庭廣眾下蹄殃,把自己的想法邏輯清晰流暢地講出來,讓人聽懂你踩。
那么技術(shù)呢诅岩?技術(shù)不重要,有了以上幾種能力带膜,市場上需要什么技術(shù)吩谦,很快就能掌握了。
最后再說說工資的事钱慢,記住兩句話:
工資不是老板對你過去貢獻的回報而是對你未來貢獻的預(yù)期逮京。
現(xiàn)任老板不可能給出讓你滿意的工資卿堂,下一任老板才會束莫。
曹政的觀點
姚冬回答的非常好,我狗尾續(xù)貂的說幾句草描。
我們都知道學(xué)習(xí)能力很重要览绿,那么學(xué)習(xí)能力從何而來,除了去看書上課這種穗慕,如何在實踐工作中學(xué)習(xí)成長饿敲?
我之前微博說了一個籠統(tǒng)的概念,什么是能力逛绵? 對待問題的態(tài)度怀各,以及處理問題的思路和方法倔韭。
先說態(tài)度
你服務(wù)器偶爾出 501 錯誤,也許比例不高(知乎也出現(xiàn)過很多次)瓢对,很多程序員寿酌,沒錯,是很多硕蛹,假裝看不見醇疼,不在乎,或者歸咎于人品問題法焰。 這就是態(tài)度問題秧荆。
再往后,負載高了或者其他什么原因埃仪,突然頻繁出現(xiàn) 501 錯誤乙濒,不去追尋深入的原因,而是找各種借口卵蛉, 什么 IDC 服務(wù)商不好琉兜,服務(wù)器品牌不好,操作系統(tǒng)不好毙玻,數(shù)據(jù)庫不好豌蟋,CDN 不好,網(wǎng)絡(luò)狀況不好桑滩,web server 不好梧疲,甚至,直接對 Boss 說我們被 DDOS 啦T俗肌(遇到過幌氮,幫他 Boss 找過多個安全專家會診,最后發(fā)現(xiàn)根本不是 DDOS胁澳,是程序員太爛该互。)
這就是態(tài)度,觸目驚心韭畸,如果能對問題有敏感性宇智,能知道對任何小的,輕微的問題有足夠的敏銳度胰丁,你就有了一個快速成長的基礎(chǔ)随橘。對問題的敏銳度是非常重要的。很多性能或程序邏輯上非致命的 bug锦庸,在不夠敏銳的時候是發(fā)現(xiàn)不了的机蔗,但是一旦進入特殊場景就會驟然爆發(fā),你多一點敏銳度,就會減少這種危機的風(fēng)險萝嘁。
第二個態(tài)度是解決問題的態(tài)度梆掸,有人對自己的解決方案信心滿滿,認為萬無一失牙言,但有的人就會多留一條后路沥潭;就好比你說我服務(wù)器要不要做安全加固,肯定要做對不對嬉挡,要做到盡可能嚴謹和周全钝鸽,但是你數(shù)據(jù)庫保存密碼的時候是不是還要加密?而且要隨機 salt,不就是防止萬一依然有漏洞被人拿庫怎么辦么庞钢。程序也一樣拔恰,以前寫的一些服務(wù)端守護進程,有 bug基括,會莫名其妙的終止颜懊,這個 bug 當(dāng)然要定位,要修復(fù)风皿,但是同時河爹,寫一個 cron 檢查這個守護進程狀態(tài),一旦遇到終止給予自動恢復(fù)桐款,這就是第二手準(zhǔn)備咸这,即便你多么不希望他執(zhí)行,這個準(zhǔn)備還是要做的魔眨。對問題 做兩手甚至三手準(zhǔn)備媳维,也是優(yōu)秀程序員,架構(gòu)師的關(guān)鍵素質(zhì)遏暴。
第三個態(tài)度是基于溝通與理解的態(tài)度侄刽,產(chǎn)品或運營提了一個不靠譜需求,一句話打回去當(dāng)然很爽很威風(fēng)朋凉,但是有沒有仔細溝通分析過州丹,這個需求基于怎樣的實際訴求,這個實際訴求有沒有更合理的實現(xiàn)途徑杂彭,一句話“這個沒法做墓毒,這個實現(xiàn)成本太高”,不是正確的溝通態(tài)度盖灸,而且蚁鳖,最優(yōu)秀的產(chǎn)品,往往是實現(xiàn)了那些原本人們認為無法實現(xiàn)的訴求赁炎。
這樣的態(tài)度,才有了一個持續(xù)進步的基礎(chǔ),下面說思路和方法徙垫。
優(yōu)秀 的程序員和平庸的程序員讥裤,如果只看敲打代碼的速度,我覺得是分不出來的姻报,也許每人都可以一天寫很多行代碼己英,但是遇到問題后,平庸的程序員的解決效率吴旋,和優(yōu)秀程序員相比就會有天壤之別损肛。 所謂解決效率,不外乎對 bug 的分析荣瑟、定位治拿,以及 思考。
最基本的一條笆焰,看執(zhí)行日志劫谅,看各種日志,web server 的日志嚷掠,數(shù)據(jù)庫 的日志捏检,慢查詢?nèi)罩荆琤inlog 日志不皆,php 的錯誤日志贯城,等等等等,線上出問題瞎猜連日志都不看的大有人在霹娄≡┙疲看日志不仔細不完整的也大有人在,你能去認真研究日志已經(jīng)超越很多人了项棠。
第二條悲雳,模塊測試和斷點分析,程序員一個壞習(xí)慣就是上來就寫很大一坨代碼然后再執(zhí)行香追,不知道一個模塊一個模塊來寫來測試合瓢,執(zhí)行出了問題不知道設(shè)置斷點,縮小范圍逐步分析透典。斷點分析非常簡單晴楔,將整個代碼中插幾個中間輸出,觀察哪個環(huán)節(jié)出了問題峭咒,或者觀察每個環(huán)節(jié)的系統(tǒng)開銷税弃,對調(diào)錯和性能優(yōu)化都非常重要,高手們大概認為這是 ABC 的東西凑队,但是就這玩意我看到的大部分程序員都沒有這個習(xí)慣则果。
第三條,錯誤信息 的理解和搜索,搜索引擎上有各種豐富的技術(shù)資料和技術(shù)問答西壮,你所遇到的錯誤信息和錯誤提示遗增,通常都能在網(wǎng)上搜索到,當(dāng)然款青,搜索到后要結(jié)合你的場景認真思考做修,并理解透徹,而不是照貓畫虎的去處理抡草,否則可能這次運氣好就蒙對了饰及,下次運氣不好又不知道怎么回事了。
第四條康震,不斷總結(jié)歸納燎含,對一個問題,一類問題签杈,以及不同類型的問題瘫镇,善于歸納整理,不斷反思自己的問題答姥,即便是不出 bug 的代碼铣除,你經(jīng)過一段時間去回頭看,也有很多思考不正確不合理的地方鹦付,有很多優(yōu)化點尚粘,如果你覺得自己的代碼一向牛逼,毫無破綻敲长,那你一定是原地踏步郎嫁,毫無進展。
關(guān)于 歸納總結(jié)祈噪,我說個案例
以前我們有個系統(tǒng)泽铛,請求量非常大,負載非常高辑鲤,有個不錯的技術(shù)經(jīng)理來處理盔腔,他列了幾個升級計劃,都很靠譜月褥,去執(zhí)行了弛随,效果非常好,然后我們跟進匯報的時候他來講宁赤,做了幾項升級舀透,整體效果如何,然后我就批評了他决左。
我批評了什么呢愕够?他是一起做的升級走贪,然后一起觀測的效果,那么這幾個方案里链烈,具體每個方案的實際效果怎樣厉斟,對提升的幫助多大挚躯,他沒有任何數(shù)據(jù)强衡。所以對具體每個升級方案的價值和重要性,他沒有任何概念码荔。你正確的解決了問題漩勤,卻沒有認真的去歸納整理,你的收獲是有限的缩搅。一起做升級不能說是錯的越败,但是效果評估需要單獨去做,而這個數(shù)據(jù)是非常有價值的硼瓣,知識積累究飞,不是你處理過的就一定有積累,而是整理過的堂鲤。
大概就這些
最后重述一遍
什么是能力亿傅?
遇到問題的態(tài)度
處理問題的思路和方法
這就是能力