有人說:一個人從1歲活到80歲很平凡,但如果從80歲倒著活,那么一半以上的人都可能不凡,
生活沒有捷徑,我們踩過的坑都成為了生活的經驗,這些經驗越早知道,你要走的彎路就會越少,

關于作業
1.積極大膽地谷歌,
你得知道如何有效地組織搜索關鍵字,查閱別人寫的代碼,然后合理地用在代碼里,從而解決問題,
2.擁抱變化,堅持不懈,
老手程式員在接觸新技術時,能欣然接受像個初學者一樣處處受挫,并總能在完成作業的同時自學成才,
3.承認細節的重要性,
例如變數和函式的命名、CSS屬性的命名、該用哈希還是用陣列,以及其他看起來微不足道,但可能對專案有深遠影響的事情,
4.承認大多數的“重要決定” 其實并沒有那么重要,
一般的開發者經常在技術選型等“重大問題”上陷入唇槍舌戰,而程式員老鳥們會避免浪費時間在罵戰中,這一點上,他們就像禪宗大師一樣(zen-like),
5.選擇合適的工具解決問題,
網上有無數的開源庫、工具和框架,讓人眼花繚亂,而老手們清楚地知道針對怎樣的問題,應該用什么樣的工具,

圖片源自網路,僅做配文展示
6.明白代碼「不值錢」(該刪就刪),
你必須習慣于刪掉幾百行代碼來重寫程式的某一部分,毫不留情,
7.在評估技術的時候要全面,
例如,我一直在鼓吹Elixir,它語法優美,社區完善,有很大的潛力,但Elixir誕生的時間太短,所以如果要構建復雜的功能,可能會難以找到能幫你提高效率的開源工具,因此,在評估要不要選擇使用一項技術時,你得把所有這些因素都考慮在內,
8.學會說“我不知道”,
沒有比拒絕承認自己不知道更能浪費一個開發者的時間了,
9.仔細分析錯誤資訊里的線索,
傳統教育告訴我們:失敗是壞事,報錯資訊這種東西也經常被跟失敗聯系起來,然而優秀程式員明白,這些錯誤訊息里其實隱藏著能將你指向最終正確解決方案的線索,
10.了解過早優化和必要的“炫技式” 優化的區別,
老手們清楚在什么時候需要寫一些看上去沒那么好懂,但會讓程式運行更快的代碼,
11.每個人都會犯錯,為自己的過失負責,
而尤其在團隊里,把責任推來推去沒有任何意義,因為錯誤的發生往往不只是一方的因素造成的,
12.成為你所用的開發工具的重度用戶,
如果長期在某個開發環境下有相當比例的開發作業,那你應該去掌握使用它的細節,
13.不要接陌生技術領域的私活,
個人做自由職業專案,其中很大一部分挑戰就是評估專案時間,不要規劃自己未知領域的事情,那會讓你處于想當尷尬的境地,
14.學會坦然接受批評,
當你的代碼因為各種原因四分五裂時,你需要培養用理性和邏輯的方式來應對(而不是情緒化處理),
15.同有更多經驗的人結對編程,
沒有比這個更高效的編程學習方式了,

圖片源自網路,僅做配文展示
16.一定要先自己做一遍代碼審查,
當你在GitHub上發起一個pullrequest 之前,先把代碼當成別人寫的,自己先審查一遍,
17.認識到做自由職業的難點不是寫代碼,而是其余的所有事情,
銷售、推廣、客戶支持,質量保證以及產品管理,所有這些都會花費大量時間,
18.發現并解決更大的問題,
優秀的程式員不拘泥于眼前的問題,而是清楚如何用更長遠的方式徹底的解決這一類問題,
19.深入了解一些大型開源專案的核心能讓你開發時如虎添翼,
如果你知道如何給你的專案打猴子補丁(MonkeyPatch), 那么你將無所不能,
20.知道什么時候開始回饋,
到了某個時候你需要將你的技能和經驗傳授給年輕的開發人員,就像你的導師當時教授你一樣,
21.能寫爛代碼,
有時候可以當一當“膠帶式程式員”,關鍵是隨著時間推移,你需要弄清楚什么時候可以走捷徑,什么時候必須走捷徑,這其實是最難掌握的技能之一,

圖片源自網路,僅做配文展示
22.像一個領導者(Leader)一樣做事,而不是老板(Boss),
老板是讓別人為他作業的人,領導者是人們追隨的人,做個領導者,
23.在壓力下學習,
你需要知道如何應對像系統宕機而你要負責將它復原的情況,即使一開始你完全沒有頭緒,
24.“Movefast and break things”別讓完美主義阻止你做事,
錯誤往往是最好的學習機會,所以別把犯錯當作失敗,而應該把它們當作值得學習的經歷,并意識到:正是不斷克服和突破這些錯誤,作為一個程式員,你才能不斷成長起來,

關于情緒
1.如果你想做自己喜歡的事、必須付出別人三倍的努力,
大多數人不能把他們的生命,花在他們熱愛的事情上,相反,他們按照別人告訴他們應該做的去做,或者他們的父母,城鎮居民朋友或者同齡人,建議他們做的事,
或者干脆什么都不追求,但如果你想做你熱愛的事,你需要把它看做一種特權,而不是一種期望,這些人并不占大多數,
如果這是你真正想要的,你現在就必須投入努力,
2.憤怒之下總是恐懼,
起初我們認為這是因為一些外部因素,一些我們討厭的東西,如果我們能克服各種情緒,我們會發現憎恨之下是憤怒的咆哮,當然這是我們已經固執太久的東西,但是在這一切的背后總是恐懼,
對失去的恐懼,脆弱的恐懼,放手的恐懼,但如果你能承認你的恐懼,你會看到它快樂的一面,同時你也得繼續前行,
3.我們的日常習慣形成了我們未來的自己,
你今天所做的事,都是在向著明天的你前進,當你一周內重復同樣的行動,你就開始觸及到變化的表面,當你一個月內重復同樣的行動,你就開始注意到細微的差別,當你堅持這樣做一年或者兩年或者五年,你再也不是從前的自己了,你會完全改變以一種特別的方式,
不要低估每一點力量和每一個小習慣,隨著時間的推移重復,無論好壞,你的習慣決定了你最侄訓成為什么樣的人,

圖片源自網路,僅做配文展示
4.你的情緒需要練習,
我們談論學習時,經常會談論技巧,你練習鋼琴或者練習打曲棍棒,但問題是你在情感上也需要練習,你可以練習謙卑,你可以練習寬恕,你可以練習自我意識和幽默,就像你可以很容易地練習憤怒、怨恨、戲劇和沖突一樣,在情感上的你是誰是你有意識(或無意識)練習的事情的反映,
不是生來就灰心喪氣,只是那種情緒遠遠超過了你的快樂,
5.成就永遠不會像程序那樣充實,
設定一個目標,并尋求他人的幫助來完成它是一回事,為了這個目標和它的實作,而犧牲自己和周圍的人的幸福,則完全是另一回事,
最終的終點遠不值得,程序中的情感耗竭,如果你不能和周圍的人一起享受這段旅程,那么最終的目標將變得好毫無意義,
6.努力作業和歡笑并不相互排斥,
建立在前面的基礎上,我一直不明白,為什么人們覺得笑意味著不認真對待手頭的事情,最好的想法來自于放松,最自由的思想發生在快樂的時刻,人與人之間的聯系始終于笑聲,而在作業和解決問題時大笑,
就是為新的可能性敞開大門,有些人學不會這一點,他們變得暴躁又衰老,但生活在快樂,而且通常享受樂趣,并不意味著,你沒有完成任何事情,相反你可以在開心的同時,做的比你想像的還要多,

關于個人成長
1.思考力和推動力
處理bug、崩潰、調優、入侵等突發事件比編程本身更能體現平庸程式員與理想程式員的差距,
當面對一個未知的問題時,如何定位復雜條件下的核心問題、如何抽絲剝繭地分析問題的潛在原因、如何排除干擾還原一個最小的可驗證場景、如何抓住關鍵資料驗證自己的猜測與實驗,都是體現程式員思考力的最好場景,
是的,在衡量理想程式員的標準上,思考力比經驗更加重要,
有時候小伙伴跑過來,問我「提交了一個任務被卡住了,怎么辦」的時候,我總覺得他可以做得更好,
比如,可以檢查試驗別的任務,以排除代碼自身的原因;可以通過WebUI 檢查例外(如果沒有賬號,可以讓我提供);可以排查主機日志或洗掉快取,再不濟,總應該提供任務ID和控制臺日志給我,理想的程式員永遠不會等事情前進,他們會用盡一切方法讓事情前進,

圖片源自網路,僅做配文展示
2.管理時間
在完成任務時你必須像荒野里的狼一樣,「獨行」,沒有外界約束的情況下還能穩定控制自己,保證能高效率地作業和學習,那么榷訓月累你肯定會變得比一般人厲害,
程式員干的是高強度的腦力活,一般每天集中4-5個小時應對本職作業就足夠了,但作業之外,一定要安排時間用于學習,除了學習,留點時間放空自己也是必要的,利用泡茶或者喝咖啡的間隙,把彌足珍貴的時間留給自己,往前想往后想,事半功倍,
3.never say no
很多團隊存在一種技術和產品的對立,程式員往往以「技術上無法實作」來擋產品的需求,而產品也往往以「Facebook可以為什么我們做不到」來奚落程式員,這兩句話應該屬于禁語,從根本上都不利于程式猿和產品狗的相親相愛,
一句「技術上無法實作」是容易出口,可有多少人在說出這句話的時候,心里是100%肯定的?如果不肯定,為什么不能回去谷歌一下再回答?
原本我以為程式員是充滿想象力,在因為有想象力,才能誕生那么多改變我們生活的軟體和互聯網產品,見識多了,才了解大部分程式員已經在與bug的對抗中變得保守而不愿擔當風險,與此同時許多團隊也不愿意寬容失敗,
于是「SayNo」變成一種習慣性的抵觸,還記得曾國藩為什么解散湘軍么?他說那支軍隊已「暮氣漸深」,不能打仗了,
要做理想的程式員,就不能給自己滋生暮氣的機會,如果面對不合理的需求,可以把時間成本擺出來,把曲線救國方案亮出來,簡單粗暴「SayNo」是不可取的,

圖片源自網路,僅做配文展示
總之,像生活中的很多事情一樣,程式員的作業也是你做的越多,了解的就越多,真正聰明的人,都肯下笨功夫,
那些老老實實做人,踏踏實實做事的人,幾十年后回頭再看,就會發現這條看似最慢的路,其實才是真正的捷徑,

千萬不要一鍵三連,要不然上圖女神的笑容會消失
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/295232.html
標籤:其他
上一篇:世界上第一部智能手機27歲了
