你所做過最有效提高編程技能的事情是什麼?
- 意識到代碼越少越好,再也不為寫代碼而寫代碼,主動簡化實現
- 從數據而不是邏輯的角度考慮問題,如果可以數據驅動就數據驅動,避免用代碼寫複雜邏輯
- 意識到Antipattern(反模式)的危害,謹慎規避
- 意識到語言都是為了解決領域問題,是相通的,不再以宗教情懷看待技術棧
- 意識到不同的棧是有互相借鑒的地方,有時候廣度就是深度,所以跳出熟悉棧的舒適區
Deadline
都是瞎扯淡的,保證每天的睡眠即可
- 多讀優秀的開源項目代碼,讀不懂硬讀。
- 意識到開發者自己編寫測試用例的重要性,這樣使自己編寫代碼時是面向測試來編程的。
- 目前在進行的,意識到底層、基礎知識的重要性,正在自下而上重新構建我的知識體系。
其他的後續再補充。
我編程技能上升一般都在年度評審前兩周左右
入門時候,在思維混亂中編程,累而且BUG還很多
思考著為什麼,然後慢慢思維規範著編程,開始享受這個過程
慢慢發現,原來各種語言只是實現想法的工具,
進而良好的思維習慣影響到了生活。。。。。。。
慢慢你發現,原來寫文章,說話,甚至生活中遇到的問題,原來都跟編程相同,
編碼的時候,想法用代碼來實現,
寫文章時候,想法用文字來實現,
說話的時候,想法用語言來表達。。。。。。
無處不思維,無處不編碼,慢慢進入恍恍惚惚,道的層次(:
在老代碼上工作的話,定下個規矩,無論是修bug還是實現新功能,項目代碼總行數只能減,不能增。
1. 山寨優秀系統的設計,從幻燈片變現為可運行的代碼;
2. 不斷重構已有的代碼;
3. 和同事討論代碼。
Always Review.
1.寫單元測試。(在我看了TDD和敏捷編程相關的東西以後,構造單元測試比我想像中難一些)
2.看開源代碼。 (python flask之類的開源框架,高手寫的,很適合學習)
3.持續小規模重構。 (有單元測試保證我可以放心大膽地改)
4.重視代碼可讀性、文檔和注釋質量。(看了《代碼大全》《重構》《編寫可讀代碼的藝術》之類的書之後)
5.思維模式,deug和解決問題的模式。(看了《從小工到專家》《程序員的思維修鍊》等之後。
1、通過閱讀開源項目的debug日誌來對開源項目分層,吸收最需要的層次,劃入自己的技術棧
2、不斷否定自己,為什麼要這樣寫?你確定這個指針指向一個指針的指針沒有問題么?
3、編譯之前 review 一遍,提測之前 review 一遍, 上線之前 review 一遍,睡覺那個踏實
睡覺。
i.e:
昨晚:我湊湊湊湊我在編什麼好叼的樣子!
今早:我湊昨天寫的什麼賈斯丁比伯玩意!
睡一覺
不停地寫
不停地寫
不停地寫
煩躁
然後
不停地寫
不停地寫
不停地寫
抓狂
然後
不停地寫
不停地寫
不停地寫
懷疑人生
然後
不停地寫
不停地寫
不停地寫
1+1計算機說等於3了,WTF?
然後
不停地寫
不停地寫
不停地寫
回頭一看,哦,以前好幼稚。
提高鍵盤盲打的水平。
coding reading and thinking~ 多看開源項目 和 利用開源項目做自己的project
別人的技術自己實現一次,否則讀再多代碼也多餘
對著別人的代碼抄,精簡他的代碼實現單一功能
寫代碼前,要搞搞清楚:
1. 要做什麼,不要做什麼(需求分析)
2. 做成什麼樣的(功能設計)
3. 怎麼做(技術選型+架構+模塊設計)
4. 留多大的餘地(規範,介面,參數)
寫代碼的時候
1. 可讀性:現在的代碼都是要給人讀的,都是需要合作的,可讀性不好的結果往往是,別人會另做一套
2. 效率:從時間和空間複雜度的角度來分析,依靠演算法分析而不是個例數據來提升代碼效率。
3. 單元測試:一套基本的單元測試用例足以讓你提早n周發現代碼中的缺陷。
在 StackOverflow 上回答問題。
特別是自己還不會的問題,你需要理解問題(英文),搜索問題的關鍵詞(英文),驗證問題的解答,組織語言回答(英文)。如果你的回答不夠正確,會有熱心人來糾正你。而且還得在儘可能短的時間內完成,否則會有各路大牛來搶答,這時候就只能趕緊學習一個。
我當時(2009)練了一個月之後,能無障礙的閱讀英文文檔了,能很快找到問題的搜索關鍵詞了,能快速搭建各種問題領域的 MCVE 了 (How to create a Minimal, Complete, and Verifiable example - Help Center) ,能和不同國家的開發者進行常規的交流了。
簡而言之,極大提升了解決問題的能力。
再補充一下,通過這個方法進行的練習還是相當全面而實際的:
- 英文。不光是讀文檔,關鍵還要寫成別人能理解的句子。在寫文檔和 Commit message 的時候很有用。
- 還是英文。在搜索的時候得知道搜索哪些關鍵詞。很多時候會有人告訴你,他想盡了辦法也搜不到一個問題的解決方案,這種多半是搜的關鍵詞不對。
- 你要解決的大多是真實的問題。很多問題是有人真的在工作中遇見了才來問的,如果你還處於初學階段,並沒有什麼實踐的機會,這就是非常好的鍛煉。你要解決的很可能是將來也會遇見的問題,不會出現學了太多屠龍之技的情況。
- 有人和你競爭。如果你不能答得比別人更快,你只能答得比別人更完善,更正確。當然這個不像知乎,絕大部分問題都有解(雖然不一定唯一),先回答的多半能拿到更多的分數。久了你會發現,經常和你一起搶答的都是幾個熟面孔,你會去看看ta們的個人資料。
- 反饋相對實時。許多問問題的人都是處於「急,在線等」的狀態,通常會有人在評論里要求更多相關信息,這也是練習英文交流的機會。你回答的好壞很快就會由投票顯現出來。
- 長見識。就算你只看某一個標籤下的問題,依然會有超出你知識範圍的東西不斷出現。可以在其中找到自學的方向。
- 積累社區聲望。StackOverflow 上有個幾十k積分還是能算的上一件吹噓的資本的,而且你還能當上管理員。雖然沒用 StackOverflow Jobs 找過工作,但多少還是能提升一點簡歷上的乾貨的。
另外,偶爾抖一次機靈也是可以的,只是結局是被踩到刪答案還是被頂到保護性鎖帖就是不一定的了。
推薦閱讀:
※windows為什麼不添加圖形界面的定時關機功能?
※ACMer在未來工作中會有哪些優勢?
※請問高並發是誰?
※產品經理究竟是做什麼的?
※怎樣讓別人秒懂什麼是O2O ?給一般人帶來什麼好處?