如何有效(高效)地提升技術實力?

想請教下知乎的大俠,在軟體開發這一行當里,如何快速地提升自己的職業技能(如果您還能具體談到JAVA,更是不勝感激)。

我目前想到的方式是:

1,細心鑽研某一方面的知識,成為某一方面的專家。

2,細心鑽研某一方面的知識到一定程度後,由該門技術(平台)為發散點,拓寬自己的視野與實力。

上面的兩個方式的區別在於「程度」。前者要求在某一方面(平台)達到專家級別的水平,後者則相對來說較為寬鬆,但是可能會有更多的時間去看看「外面的世界「。

希望一些技術牛人能夠解答一下。


我在學校的時候每天8小時就這麼連續練了4年。大三去了微軟上海實習,晚上還在寫自己的代碼(C++和API的長得像Windows Forms的類庫,還有一個山寨haskell用來當畢業設計)。

所以換句話說,如果你不喜歡編程,那隻要你肯付出痛苦,就可以提高效率。如果你喜歡編程,那你只管寫就好了。


你提到「某一方面」。 我想你可能先要搞清楚有「哪些方面」。

對知識點有個整體框架後,就能夠主動吸收知識到自己這顆知識樹上了。

下面分享一下我的一部分:


去威客網上找幾個活做做,實戰最鍛煉了


我也在急切提升技術實力。但我自己感覺切忌冒進,還是要夯實基礎的,編程不在於語言,最根本的還是演算法和數據結構,循序漸進,不要著急接觸大程序。我最近也在學習JAVA有興趣可以一起交流。編程這東西,報個培訓班比自己鑽研要快許多,畢竟大神經驗多多麼。


的確,能從底層到資料庫、伺服器、前端都打通可稱為全棧牛人。

但是僅是提高業務實力來說,我建議結合具體項目旁敲側擊

比方說需要寫個網路程序,除了使用SDK提供的API輕鬆愉快的完成任務之外,還可以順帶查看下網路協議的文檔。

比方說HTTP、IP等常用協議的RFC文檔,都是值得揣摩的。

如果結合WireShark等Sniffer工具,就可以更直觀的欣賞網路上的來來往往。

這麼一個項目做下來,我相信你對網路開發基本就熟悉了。

至少我是通過寫自動投票機把HTTP和圖形處理基本入門的。

其他方面可以依次類推吧,供參考。


我的思路:理論結合實踐,理論先行,實踐驗證。區分理論點,總體重廣度(知道),某些個體重深度(理解)。

以你說的Java為例,包含基礎語法、高級語法。看本好書,迅速了解語法。寫Toy程序,練習對語法的掌握和觀感。

但Java肯定不能作為唯一職業技能。所有語言本身都是可「快速」掌握的,都是「有跡可循」的,不值一提。其相關的基礎問題(基礎問題有如JVM相關,網路編程)和生態圈(Java構建的各種大小型系統,比如Hadoop等),尤其值得去了解並選擇性深入。

假如選擇Hadoop作為深入點,便可深入其中了解其各個部件。假如從其中選擇HDFS作為深入點,就進入了分散式文件系統的領域。從其中仍可以繼續選擇文件系統方面或者分散式系統方面作為深入點。假如選擇分散式系統作為深入點,一堆論文理論和現成開源系統供你去了解。

然後發現到最後,你會忘記你是從Java進來的,你會知道相比後面的東西,Java基礎高級語法不過是小菜而已。


六個字


多寫 多看 多總結


推薦閱讀:

怎麼提升個人綜合能力和魅力?
如何提升自我?i?
面對勾心鬥角的辦公室,是選擇跟人一起玩辦公室政治,還是找個較為純凈的地提升自我?
銷售如何提高自身溝通能力,有什麼方法或技巧?
如何穩步提升自己,讓自己趨於完美?

TAG:軟體開發 | 提升個人能力 |