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

1、不要等準(zhǔn)備好了再出發(fā),優(yōu)秀的程序員都是“探路者”
我見過不少程序員不敢嘗試新技術(shù),空有好的idea卻從不去實施。他們不是懶,而是“完美主義”,永遠解釋自己能力不夠、沒想好、準(zhǔn)備中...
編程的經(jīng)歷讓我發(fā)現(xiàn),只要你開始瘋狂敲代碼,會不斷蹦出新點子,很多問題也會迎刃而解。因為編程的過程中,你會不自覺地去思考邏輯、檢索資料、咨詢大佬、反復(fù)糾錯校驗,最后發(fā)現(xiàn)做出來的東西居然有模有樣。
一旦你想法太多,始終在起跑線上觀望,會陷入“完美主義”的陷阱,久而久之就成了拖延癥晚期。
拿學(xué)Python來說,其實語法并不難,但很多人死在了安裝Python軟件上,覺得各種麻煩、復(fù)雜,懷疑自己搞不定。也就一直處于“我對Python念念不已,Python對我愛答不理”的狀態(tài)。
《黑客與與畫家》書里說:你把整個程序想清楚的時間點,應(yīng)該在編寫代碼的同時,而不是在編寫代碼之前,這與作家、畫家和建筑師的做法完全一樣。
相信程序員都會有體驗,你不可能每個功能都完美設(shè)計好,才開始寫代碼。
電影《飲食男女》也講到:人生不像做菜,不能等一切都準(zhǔn)備好了才下鍋。
確實這么個道理。
2、很多事都是孰能生巧,沒有足夠多練習(xí)不要提天賦
編程應(yīng)該是最能體驗prctice make perfect的技能之一,在前期積累的階段,往往要大量的去刷題、比賽、模仿,才能顯得游刃有余。
資深碼農(nóng)就像是老師傅,哪個不是鍵盤敲到發(fā)白。
可能練習(xí)不一定會讓你完美,但大量的練習(xí)會讓你產(chǎn)生髓磷脂,一種神經(jīng)元外側(cè)的脂質(zhì),能讓你的腦回路更加靈活。
人的大腦可以分為反射、思考、記憶三個功能,大腦可以通過大量的反復(fù)練習(xí)讓思考演變成習(xí)慣,最后跳過思考只需要反射的指令操控就能完成,從而達到“生巧”的效果。
當(dāng)然作為程序員,練習(xí)不是一味的重復(fù),或者去完全復(fù)刻別人的代碼,每一次練習(xí)都應(yīng)該增加難度,有突破自己認知的成長。這樣經(jīng)過反復(fù)的輸入、評估、輸出、糾正,你會有驚人的變化。
當(dāng)然練習(xí)不光是程序員需要做的事,幾乎任何能力的修煉都離不開反復(fù)練習(xí)。
3、要有良好的習(xí)慣,才能事半功倍
編程是一項系統(tǒng)工程,就和寫小說、建大廈一樣,所以需要有模式、規(guī)矩、條理,才能不至于變成“屎山”。建議大家在寫一個程序之前,可以用腦圖軟件理一下思路,也可以用偽代碼提煉核心邏輯。
還有比如說規(guī)范代碼命名、規(guī)范注釋、模塊化、版本控制、注意備份等等,都是需要養(yǎng)成的好習(xí)慣。
我非常喜歡Python編程的理念,盡量寫符合Python習(xí)慣的代碼,它在Python之禪里解釋道:
?優(yōu)美勝于丑陋(Python 以編寫優(yōu)美的代碼為目標(biāo))
?
明了勝于晦澀(優(yōu)美的代碼應(yīng)當(dāng)是明了的,命名規(guī)范,風(fēng)格相似)
簡潔勝于復(fù)雜(優(yōu)美的代碼應(yīng)當(dāng)是簡潔的,不要有復(fù)雜的內(nèi)部實現(xiàn))
復(fù)雜勝于凌亂(如果復(fù)雜不可避免,那代碼間也不能有難懂的關(guān)系,要保持接口簡潔)
扁平勝于嵌套(優(yōu)美的代碼應(yīng)當(dāng)是扁平的,不能有太多的嵌套)
間隔勝于緊湊(優(yōu)美的代碼有適當(dāng)?shù)拈g隔,不要奢望一行代碼解決問題)
可讀性很重要(優(yōu)美的代碼是可讀的)
即便假借特例的實用性之名,也不可違背這些規(guī)則(這些規(guī)則至高無上)
不要包容所有錯誤,除非你確定需要這樣做(精準(zhǔn)地捕獲異常,不寫 except:pass 風(fēng)格的代碼)
當(dāng)存在多種可能,不要嘗試去猜測
而是盡量找一種,最好是唯一一種明顯的解決方案(如果不確定,就用窮舉法)
雖然這并不容易,因為你不是 Python 之父(這里的 Dutch 是指 Guido )
做也許好過不做,但不假思索就動手還不如不做(動手之前要細思量)
如果你無法向人描述你的方案,那肯定不是一個好方案;反之亦然(方案測評標(biāo)準(zhǔn))
命名空間是一種絕妙的理念,我們應(yīng)當(dāng)多加利用(倡導(dǎo)與號召)
寫代碼需要好習(xí)慣,對個人學(xué)習(xí)、工作來說更需要。
你看看高中班里那些拔尖考名校的同學(xué),基本都是上課認真聽、考試不粗心,在同一個班里智商差異不明顯的前提下,拉開差距的都是學(xué)習(xí)習(xí)慣。
我一個前同事,有個習(xí)慣非常讓我佩服,他每次演講PPT前,都要花一兩天時間給每一頁做備注,然后寫演講稿,在家不斷練習(xí)。
這其實是一種習(xí)慣的養(yǎng)成,既然他在演講PPT上這般用心,其他工作必然不會差。
4、最簡單的往往是最有效的
很多人喜歡把簡單的事復(fù)雜化,比如說一個線性回歸能解決的事,非要用神經(jīng)網(wǎng)絡(luò),浪費大量機器資源,跑出來的效果也不好。其實在編程領(lǐng)域,往往簡單勝于復(fù)雜。
Python提倡一個函數(shù)只做一件事,一件事只有最好的一種解決方法,這其實就是把復(fù)雜問題簡單化。
當(dāng)然這里的簡單不是幼稚、容易,而是最優(yōu)解法,并且盡可能讓更多人看懂。
5、愚者困惑,智者提問
如果你是程序員,會發(fā)現(xiàn)有大量的技術(shù)網(wǎng)站和博客,比如stackoverflow、csdn、博客園、github、掘金等等,似乎程序員比其他行業(yè)更需要交流和分享。
編程教給我最好的學(xué)習(xí)方法就是提問和搜索,遇到bug我可以百度、谷歌,肯定有現(xiàn)成的答案等著你,因為你遇到的難題前人基本都遇到過,并且絕大多數(shù)都給出了答案。
所以對一個初學(xué)代碼的新手來說,千萬不要買本書、看門課就ok了,其實學(xué)會提問和搜索才是你編程生涯的開始。
說到學(xué)會提問和搜索,有些人會疑惑這也要學(xué)嘛?
那是當(dāng)然,會提問題代表你知道自己不懂什么,并且能準(zhǔn)確的描述出來,會搜索代表你知道在哪找答案,并且能識別答案的真?zhèn)巍?/p>
愚者困惑,智者提問。對每一個人都是真理。
點擊關(guān)注公眾號,閱讀更多精彩內(nèi)容

