編程教會我的5個生活信條

1、不要等準備好了再出發,優秀的程序員都是“探路者”

我見過不少程序員不敢嘗試新技術,空有好的idea卻從不去實施。他們不是懶,而是“完美主義”,永遠解釋自己能力不夠、沒想好、準備中...

編程的經歷讓我發現,只要你開始瘋狂敲代碼,會不斷蹦出新點子,很多問題也會迎刃而解。因爲編程的過程中,你會不自覺地去思考邏輯、檢索資料、諮詢大佬、反覆糾錯校驗,最後發現做出來的東西居然有模有樣。

一旦你想法太多,始終在起跑線上觀望,會陷入“完美主義”的陷阱,久而久之就成了拖延症晚期。拿學Python來說,其實語法並不難,但很多人死在了安裝Python軟件上,覺得各種麻煩、複雜,懷疑自己搞不定。也就一直處於“我對Python念念不已,Python對我愛答不理”的狀態。

《黑客與與畫家》書裏說:你把整個程序想清楚的時間點,應該在編寫代碼的同時,而不是在編寫代碼之前,這與作家、畫家和建築師的做法完全一樣。

相信程序員都會有體驗,你不可能每個功能都完美設計好,纔開始寫代碼。

電影《飲食男女》也講到:人生不像做菜,不能等一切都準備好了才下鍋。

確實這麼個道理。

2、很多事都是孰能生巧,沒有足夠多練習不要提天賦

編程應該是最能體驗prctice make perfect的技能之一,在前期積累的階段,往往要大量的去刷題、比賽、模仿,才能顯得遊刃有餘。

資深碼農就像是老師傅,哪個不是鍵盤敲到發白。

可能練習不一定會讓你完美,但大量的練習會讓你產生髓磷脂,一種神經元外側的脂質,能讓你的腦回路更加靈活。

人的大腦可以分爲反射、思考、記憶三個功能,大腦可以通過大量的反覆練習讓思考演變成習慣,最後跳過思考只需要反射的指令操控就能完成,從而達到“生巧”的效果。

當然作爲程序員,練習不是一味的重複,或者去完全復刻別人的代碼,每一次練習都應該增加難度,有突破自己認知的成長。這樣經過反覆的輸入、評估、輸出、糾正,你會有驚人的變化。

當然練習不光是程序員需要做的事,幾乎任何能力的修煉都離不開反覆練習。

3、要有良好的習慣,才能事半功倍

編程是一項系統工程,就和寫小說、建大廈一樣,所以需要有模式、規矩、條理,才能不至於變成“屎山”。建議大家在寫一個程序之前,可以用腦圖軟件理一下思路,也可以用僞代碼提煉核心邏輯。

還有比如說規範代碼命名、規範註釋、模塊化、版本控制、注意備份等等,都是需要養成的好習慣。

我非常喜歡Python編程的理念,儘量寫符合Python習慣的代碼,它在Python之禪裏解釋道:

優美勝於醜陋(Python 以編寫優美的代碼爲目標)

明瞭勝於晦澀(優美的代碼應當是明瞭的,命名規範,風格相似)

簡潔勝於複雜(優美的代碼應當是簡潔的,不要有複雜的內部實現)

複雜勝於凌亂(如果複雜不可避免,那代碼間也不能有難懂的關係,要保持接口簡潔)

扁平勝於嵌套(優美的代碼應當是扁平的,不能有太多的嵌套)

間隔勝於緊湊(優美的代碼有適當的間隔,不要奢望一行代碼解決問題)

可讀性很重要(優美的代碼是可讀的)

即便假借特例的實用性之名,也不可違背這些規則(這些規則至高無上)

不要包容所有錯誤,除非你確定需要這樣做(精準地捕獲異常,不寫 except:pass 風格的代碼)

當存在多種可能,不要嘗試去猜測

而是儘量找一種,最好是唯一一種明顯的解決方案(如果不確定,就用窮舉法)

雖然這並不容易,因爲你不是 Python 之父(這裏的 Dutch 是指 Guido )

做也許好過不做,但不假思索就動手還不如不做(動手之前要細思量)

如果你無法向人描述你的方案,那肯定不是一個好方案;反之亦然(方案測評標準)

命名空間是一種絕妙的理念,我們應當多加利用(倡導與號召)

寫代碼需要好習慣,對個人學習、工作來說更需要。

你看看高中班裏那些拔尖考名校的同學,基本都是上課認真聽、考試不粗心,在同一個班裏智商差異不明顯的前提下,拉開差距的都是學習習慣。

我一個前同事,有個習慣非常讓我佩服,他每次演講PPT前,都要花一兩天時間給每一頁做備註,然後寫演講稿,在家不斷練習。

這其實是一種習慣的養成,既然他在演講PPT上這般用心,其他工作必然不會差。

4、最簡單的往往是最有效的

很多人喜歡把簡單的事複雜化,比如說一個線性迴歸能解決的事,非要用神經網絡,浪費大量機器資源,跑出來的效果也不好。其實在編程領域,往往簡單勝於複雜。

Python提倡一個函數只做一件事,一件事只有最好的一種解決方法,這其實就是把複雜問題簡單化。

當然這裏的簡單不是幼稚、容易,而是最優解法,並且儘可能讓更多人看懂。

5、愚者困惑,智者提問

如果你是程序員,會發現有大量的技術網站和博客,比如stackoverflow、csdn、博客園、github、掘金等等,似乎程序員比其他行業更需要交流和分享。

編程教給我最好的學習方法就是提問和搜索,遇到bug我可以百度、谷歌,肯定有現成的答案等着你,因爲你遇到的難題前人基本都遇到過,並且絕大多數都給出了答案。

所以對一個初學代碼的新手來說,千萬不要買本書、看門課就ok了,其實學會提問和搜索纔是你編程生涯的開始。

說到學會提問和搜索,有些人會疑惑這也要學嘛?

那是當然,會提問題代表你知道自己不懂什麼,並且能準確的描述出來,會搜索代表你知道在哪找答案,並且能識別答案的真僞。

愚者困惑,智者提問。對每一個人都是真理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章