標籤:

你做過的最有效的提高你的編程水平的一件事情是什麼?對於那些想提高水平的程序員,你的建議是什麼?

我希望你們提供的答案是各種各樣的,並且不是那種「放之四海而皆準」的答案 —— 我希望得到適用於不同人的不同的答案。

這裡補充一下「編程水平」這個詞的內涵:

  1. 演算法水平:從日常編程任務中,有效識別出數據模型,並使用正確演算法有效處理;
  2. 軟體設計水平:高內聚性,低耦合性,可復用性;容易部署,容易維護;能適應快速變化的需求
  3. 架構水平:部署容易;擴容容易;容災能力,無單點,有熱備,平滑切換;

請從以上三個角度來回答


我做過的最有效的提高我編程能力的事情是在ACM上刷了很多題。


在我這種碼農的視野看來,編程稱不上是高雅的智力活動,無非是小點小聰明加上一點經驗的積累(可能這種認知也是導致我現在比較迷茫的原因之一)。

從這個視角看過來,小聰明程度是很難提升的,剩下的無非是通過實作一些東西來獲取更多經驗。

我還發現一點,在團隊中工作,提升自己的經驗和能力是比較慢的,遠遠趕不上自己獨立做一個小玩具出來提升的快。

所以,去完完全全實際做一個東西出來吧。

可以訪一個成熟的軟體來做。比如你可以去寫一個聊天程序,從聊天內容的存儲,到伺服器,到通信協議,到各種客戶端(命令行,桌面程序,web客戶端)等等,純手工打造,你甚至可以用不同的語言實現不同的部分,少用開源組件和協議,雖然不會做的有多好,但確實可以一下子學到很多東西。

在我個人這幾年的程序員生涯中,幫我成長的東西,肯定不是在一個龐大的系統中完全熟悉自己負責的內容,而是自己獨立一個人做出來的,有些是玩具,有些實際有不少人使用的那麼幾個小項目。


編程水平的提高,首先是思想意識的提高。自己編或者看別人編好的程序,自己設計框架或者看別人的框架,看不同的語言之間的差異,看解決同樣問題的不同方式,都是思想,或者說一種思維模式。

思想境界提高了,編程的水平自然就高了


做一個PDA


仔細閱讀SICP,領悟當中蘊含的編程以及抽象的思想以及公理體系構建語言的方法,寫出自己的解釋器,同時用編程語言模擬一個寄存器機器、構建一門屬於這個機器的簡易彙編語言,同時基於此彙編語言完成編譯器。

通過整個過程達到對於計算機體系從上到下初步理解。此後對於其他的語言以及程序都會有一些深刻的理解。


和老師同學一起切實地做一個系統,會發現和做課後題差好遠。


我剛畢業一年不到,編程從大一開始有四年了吧。假如你是玩演算法玩ACM的無視我這段話。

個人覺得如果是實用主義程序員,首先端正一個心態:我們程序員是為了解決問題而存在的。

以前我一直很困惑這個問題,怎麼提高,經歷了許多事,漸漸發現,需求驅動去掌握一門技術,是學得最舒心最實在最深刻的!

你興緻勃勃搭個hadoop,也就是按照教程配個環境,打打指令,過後就忘;興緻勃勃看了幾本推薦演算法的書,也就是了解了一下,過後就忘得差不多……(自己體會,相信你也有體會)。

假如,現在有個B2C網站有個小區域需要給用戶推薦一些商品,讓你去完成,這個時候,會考慮業務需求,實現方案,就很自然地很主動地去學以上的東西了。

真的想迅速提高,找點事干吧!

假如在學校,跟老師做點小項目後者幫師兄師姐做畢業設計……

假如在工作,有機會好好思考自己行業的發展,自我驅動去發現一些問題……

問題提到三點:

第一點我比較少用到,忽略。

第二點:當你需要維護團隊的那份噁心代碼,當你由於重構導致一個大bug,那時你就會死死記住了那些「不對味」的代碼,結構等。另外,閱讀優秀項目的源碼可以輔助培養感覺。

第三點:感覺有點像PE去做的事,但是系統架構可能也需要考慮的,還是要有場景才會有提高的可能。

紙上談兵沒用,多實踐,實踐是檢驗真理的唯一標準,也是掌握真理的目的。


我做的最有效的是把google的chromium看了一遍,然後給他替換了一個內核,學到很多東西


總覺得你在看別人優秀的代碼時,也可以根據自己的理解,採用自己的思想寫出同樣功能得代碼,你就提高了很多


1) coding

2) coding

3) coding


新手,自己感覺沒寫過什麼編程水平比較高的玩意..

有的應該是一種思想吧,做事之前把需要的東西列出來再進行編碼...


我覺得是看優秀項目的源碼~


做一個自己想做的項目,開頭做不好不要緊,但要持續改進,把噁心你的所有部分改掉,然後再繼續改。

Digging Deep


閱讀apache的源代碼


最有收穫的是:

1.自己從頭做了個遊戲,各種坑.

2.看相關書籍,研究怎麼把那些坑填平

工作後老在填別人的坑,在別人的架構上寫代碼,收貨甚微,不滿意。


整個團隊把重構這書從頭到尾邊看邊討論一遍,對大項目才有一個宏觀上的理解。不然永遠是看見項目里一個類幾千行還以為很牛的階段


編程水平個人覺得沒有什麼明顯衡量標準,是一種潛移默化的意識。多看看,學寫寫,多問問為什麼。一段時間後,會有所改善的。


推薦閱讀:

自己寫的程序被殺毒軟體殺了怎麼辦?
體積小的軟體佔用內存就小嗎?
在Linux下,如何強制讓GCC靜態鏈接?
多線程網路編程中如何合理地選擇線程數?
補碼10000000為什麼可以表示-128?

TAG:程序員 | 編程 |