程序員怎麼開闊自己的視野?

大學四年,只是窩在寢室和家裡看書學習。現在快畢業了,在進入公司的信息化部門實習後,覺得自己的眼界不夠開闊,望各位大牛指點,該如何開拓自己在IT行業內的視野,萬謝!~


一定要把英語學好。每次看到有人說文章文檔看不懂求翻譯我都會覺得那個人好可憐。不會英語,翻了牆能做的事都很有限。


一直認為學習技術:廣度和深度同等重要,並且對各項技術的廣泛涉獵並不影響對一門技術的深入研究。
養成每天瀏覽技術網站、不定期更新開源項目、分享和寫作的習慣,時間這麼多,並不會因為這點時間導致你不能深入具體某一項技術。
對於如何開拓視野,有如下幾點建議:

  1. 基礎很重要:必須要多看書,看書相對於瀏覽網站、實戰項目、提問討論的好處是:系統。對於IT人員:數據結構、演算法、編譯原理、操作系統、設計模式、軟體架構、網路、面向對象、編程語言這些方面的書籍至少都要看一本,這樣你遇到問題或者需要了解某項技術時才知道怎麼搜索、怎麼提問、和同行才有共同話題。
  2. 請使用Google、StackOverflow、Github等優質網站,學習和使用一門技術時優先查閱官方文檔:當你使用這些網站後,你會發現體驗完全不一樣:獲取的信息更專業、解決問題更高效,順便還提高了你閱讀洋文的能力。
  3. 加入一個圈子:Google+、新浪微博小組、QQ群等,加入與行業相關、自己感興趣的圈子,很多信息都可以從這裡面及時獲取;
  4. 分享:寫作、開源一個項目、在QQ群和論壇回答問題,寫出來是讓你更清晰地理解,寫作也是交流的一種方式,長此以往會有人主動和你交流,慢慢地就有了屬於自己的圈子;
  5. 關注前沿技術:每天花點時間瀏覽這些網站,V2EX、Hacker News、Startup News、博客 - 伯樂在線、reddit: the front page of the internet、ImportNew - 專註Java Android 技術分享、GitHub · Build software better, together.、最新最熱 - 極客頭條

上面說了這麼多,其實最重要的一點就是興趣,如果你對這一行有興趣很多東西你都會去主動了解,作為一個android開發者,分享一下我經常瀏覽的網站,有任何問題歡迎私信溝通:

官網

  • [Android Developer](Android Developers)
  • [Android Training 中文版](序言 | Android官方培訓課程中文版(v0.9.2))
  • [Android API中文版](Android - Android中文Wiki中文API)
  • [Android API指南中文版](Android API Guides)
  • [Android設計指南中文版](Android Design)
  • [Material Design中文版](Material Design)
  • [Android Developers](https://www.youtube.com/user/androiddevelopers/videos)

資源

  • [StackOverFlow](Stack Overflow)
  • [AndroidDevTools](AndroidDevTools)
  • [GitHub](GitHub · Build software better, together.)
  • [CsdnCode](CODE)
  • [TaoCode](TaoCode - Taocode)
  • [OSChinaCode](Git@OSC代碼託管)

開源導航

  • [AndroidSource](android Git repositories)
  • [appance](Android | Appance)
  • [Android Libraries and Resources](Android Libraries and Resources)
  • [Android Arsenal](https://android-arsenal.com)
  • [Android Elements](cesards/AndroidElementals · GitHub)
  • [23Code](23Code - 安卓開源代碼庫)
  • [Android Open Project](android-cn/android-open-project · GitHub)
  • [Android Open Project Analysis](android-cn/android-open-project-analysis · GitHub)
  • [awesome-android](snowdream/awesome-android · GitHub)

博客

  • [android-dev-cn](android-cn/android-dev-cn · GitHub)
  • [android-dev-com](android-cn/android-dev-com · GitHub)
  • [AndroidNews](Android開發技術周報)
  • [ImportNew](ImportNew - 專註Java Android 技術分享)
  • [droidyue](技術小黑屋)
  • [Trinea](Trinea)
  • [stormzhang](stormzhang博客精華)
  • [代碼家](代碼家)
  • [脈脈不得語的技術博客](脈脈不得語的技術博客)
  • [Android Cool Posts](Android Cool Posts)
  • [hongyang](Hongyang)
  • [Mr.Simple](Mr.Simple的專欄)
  • [zmywly8866](首頁 | 張明雲的博客)
  • [codekk](codeKK 開源項目源碼分析)

學習導航

  • [慕課網](慕課網-國內最大的IT技能學習平台)
  • [極客學院](極客學院IT在線教育平台)
  • [網易雲課堂](雲課堂 - 網易旗下大型在線學習平台)
  • [麥子學院](麥子學院_專業的IT在線職業教育平台)
  • [51CTO學院](51CTO學院_IT精品課程)
  • [牛客網](牛客網-專業IT筆試面試備考平台,最全求職題庫,全面提升IT編程能力)
  • [noexcuselist](No Excuse List)
  • [tutorialspoint](Tutorials for AIML, Artificial Intelligence, RESTful, Swift, Node.js, LinQ, Drools, Content Marketing, SIP, Pay per Click, Accounting, Sqoop, ITIL, Jackson, Security Testing, Awk, JDB, Hadoop, Hive, HBase, XStream, Java8, Guava, Memcached, EasyMock, CICS, Object Oriented Analysis Design, Tika, DOM, AngularJS, IMS-DB, NGN, Sed, WCF, JPA, Apache POI, Signals and Systems, JOGL, DB2, PhoneGap, SVG, VSAM, COBOL, XSD, XPath, Redis, XSLT, Java XML, VBA, JFreeChart, Lucene, Selenium, DTD, Powerpoint, Tcl/Tk, XML, Software Engineering and many more latest technologies)
  • [Android學習之路](http://stormzhang.com/android/2020/07/07/learn-android-from-rookie/)
  • [如何自學android編程?](如何自學 Android 編程? - Android 開發)
  • [What are the best sites to learn about developing Android apps?](https://www.quora.com/What-are-the-best-sites-to-learn-about-developing-Android-apps)
  • [CodePath](Home | CodePath Android Cliffnotes)

APP

  • [DevAppsDirect](DevAppsDirect)
  • [Libraries for developers](Libraries for developers)
  • [23Code](23code-android開源代碼庫)
  • [Android開源項目匯總](「Android開源項目匯總」安卓版免費下載)

其它

  • [AppBrain](Top Android Apps and Games on Google Play)
  • [F-Droid](F-Droid | Free and Open Source Android App Repository)
  • [Android開發周報](Category: AndroidDevWeekly)、[Android開發周報(InfoQ)](錯誤)
  • [Android Weekly](Android Weekly)
  • [NewCircle Training](https://www.youtube.com/user/MarakanaTechTV)
  • [Android-Develop-Resources](zmywly8866/Android-Develop-Resources · GitHub)
  • [Worth-Reading-the-Android-technical-articles](zmywly8866/Worth-Reading-the-Android-technical-articles · GitHub)
  • [單元測試robotium](安測試|安卓測試)
  • [代碼質量管理sonar](Sonar@OSC - 代碼質量分析平台)

我覺得首先應該確定你的方向,從下面兩點:
1. 個人的興趣
2. 工作內容
基本就可以確定自己的大方向。
然後就是多關心一下這個方向上的一些基本知識、現狀、未來發展的趨勢等。先要深,深的過程中就自然會廣,然後舉一反三,大事可成矣!


瀉藥(終於能說這兩個字了。。我特么憋了好久!)。
你這個問題問的太廣泛了。。我只能從很小的角度和自己的理解扯一點蛋。
首先,先給自己洗腦一下,進什麼公司和你以後的技術成長是沒有必然的關係的,學好技術,再上知乎找人內推,so easy。
私以為要成為眼界開闊的程序員其實就是不斷的寫代碼,知乎上有句經典的話叫啥。。你會問這個問題就是你想的太多而寫的太少。至於我們大學裡寫的那些東西看的那些書。。現在看來太小兒科了,那些都不是程序員的內功,什麼是內功,就是和所有平台都沒有關係的那些計算機科學的知識(好像是輪子哥說的,我非常同意),比如數據結構和演算法,比如理解一門語言,理解一個操作系統,理解一個資料庫,比如對設計模式的理解和應用。下面是我提高這些能力的一些方法(我自己正在努力執行):
1.數據結構和演算法:《演算法導論》這本是好書,但是我特么就是看不完!而且看了也做不來習題啊混蛋!但是這阻止不了一個弱菜的學習步伐,還有一個方法就是刷題,各種OJ平台任你刷,建議先從LeetCode開始,因為最基礎嘛。
2.理解一門語言,一個操作系統,一個資料庫:理解一門語言的最好方法就是寫一個編譯器,想要真正理解編譯器必須要親手去實現一個,操作系統和資料庫同理(當然沒讓你寫個windows啊。。)。
3.設計模式:這個我最近才剛接觸到,理解不是特別深刻,但我有一種強烈的感覺就是一個軟體設計模式用好了,需求怎麼變他都能隨機應變。一個有眼界的程序員,當有許多設計模式擺在他面前時他總能選最合適的一個,這個也許就是經驗吧,所以還是多寫,寫完後放github,順便也多看看或者參與github上的一些開源項目,我就是看了公司同事寫的代碼,才開始理解一些東西的。
有了這些內功,你無論到什麼平台都能迅速上手,時間長了,你獨自拿到一個項目,總能選擇一個合適的平台和語言來完成他,這時候你的眼界就牛逼了。
一句話,在別糾結於某個平台某個語言的前提下,瘋狂的寫代碼吧!祝好運喲~

拋磚引玉,幫你邀請大牛了。


世界這麼大,你該去走走。
大學生朋友不要擔心自己眼界不夠,這是呆在學校的必然結果,進入職場後你有這種感覺是很正常的。但是隨著你畢業正式踏入職場,隨著工作時間增長,接觸多了,見識多了,眼界自然而然會開闊。
為了開闊眼界去開闊眼界反而達不到什麼效果,只要到了該你開闊眼界的時候,你不刻意退縮,不限制自己,慫了就行。
大學本來不是工作,是學習,還有玩樂,不可能將大部分精力都放在IT行業中,可是一旦進入職場,有了某個特定工作,錨定之後,人也會自然將注意力放在其上的,很多信息不經意間就get了。
最後提供一個最新資訊論壇:開發者資訊 - 麥子學院官方論壇。


推薦閱讀:

一個人的眼界是由小時候的成長環境決定的嗎?能提高嗎?如何才能提高自己的眼界?

TAG:程序員 | 編程 | 程序員修養 | 眼界 | 閱歷 |