1. 程式人生 > >2015總結與思考

2015總結與思考

不想 總結 swe 數據 map 類比 未來 傳說 server

昨天晚上出去和幾個朋友交流了一下。聊了非常多,思考了一下這一年學習技術的經歷,趁著在宿舍養病,將自己的想法記錄了下來。

總結過去與思考

從開始決定當碼農到如今將近兩年零三個月,起初是由於自己專業的科研不是自己想象中的那樣,加之對程序猿的羨慕和崇拜,於是就走上了碼農的不歸路。作為非科班出身的學生,和計算機院的學生比起來有先天的劣勢,比如好多的基礎課程未學習、周圍的編程氛圍太差等等,然而其實:正是由於不是科班學生。我們比別人更努力,更願意付出時間去學習。

去年四月底開始學android,當時是因為實驗室項目(不是做應用層),今年6月份開始學了一個多月iOS,移植了寫在android上的功能。

今年做了三個商業性質的軟件,1月份做了我第一個商業項目,4月份做了一個供路由器使用的app。八月份做了比較大的一個項目模塊類似於茄子快傳/QQ面對面傳文件。800多萬的用戶。

站在今天的角度來審視這一年走過的路,用一句話來總結就是:認為什麽都沒幹呢,一年就過去了!

隨著時間的發展,我對一些東西也有深的認識。就拿android開發來說。

android開發學起來非常簡單。上手非常easy,高中生也可能會做,可是做android難道不過拖幾個控件,擺幾個layout或者使用幾個美麗的開源框架能做個還說得過去的手機app麽?顯然不是的。

使用工具,使用輪子來拼湊產品不過最主要的要求,深入原理才是更重要的,不只要知其然,更要知其所以然!

比如android中的各種manager,進程間通信Binder,view視圖的繪制,觸摸事件的分發,消息機制,view動畫等等。假設不去研究。不去看原理,做一段時間就會遇到瓶頸期,由於會發現android開發就是接口api的調用,你可能會傻傻的覺得手機屏幕上顯示的一個界面就是activity,甚至都不知道傳說中的Java程序的啟動類main函數在哪。還有由於android自帶的控件比較醜。做項目的時候會使用一些第三方的控件、效果,不能只會直接拿來用這些。在達到一定的水平之後,要試著自己來實現一些好的效果,不僅提高自己的水平,可能還會造福他人。在一個就是使用第三方的開源框架工具,比方常常使用的ImageLoader,Volley,他們究竟是怎麽實現的呢?這些都是用來學習的最好的資料啊!當然我眼下還沒研究這兩個,不過接下來肯定要看看。

所以我體會最深刻的就是。做一門技術,會用僅僅是最主要的要求。會使用非常easy,難的是要能深入究竟層的原理。一定要研究的深入。知其然,知其所以然,當然並非讓全部人去反復制造輪子。而是在制造輪子的過程中,對自己技術的提升絕對是非常非常快的。事實上團隊開發中也有更重要的比如編碼規範、風格,模塊的解耦合等等。這個另當別論。以後工作了就非常少有時間去研究了,跟著產品叠代的節奏會非常少有時間去學習。所以一定要珍惜如今的時間。

java是做android的基礎,其實剛開始學android的時候。我的java基礎並非很好,好多都是依據c++的類比大致了解了一下。也是在今年。好好的把java的相關知識研究了一下,對語言的學習也不能只停留在知道怎麽用的層次。照著教學視頻能實現各xx系統沒什麽用,基礎才最重要。有時間最好去研究其深層的原因,這絕對是故意而無害的。比方java的集合詳細是怎麽實現的?當然這和學過的數據結構是一樣的。不過jdk的開發人員封裝的更好,代碼更加嚴謹,研究這些源碼不不過對數據結構的復習還是對大牛的編程思想風格的學習。還有假設不看代碼,怎麽知道hashtable和vector為什麽是線程安全的,假設不懂原理。怎麽知道hashmap是亂序的treemap是有序的?還有java中高級一點的主題NIO(這是我做類似於茄子快傳/QQ面對面快傳功能的基本技術)、並發編程。不要覺得做android又不是做後臺server,學這些用處不大,這就大錯特錯了。

其實這些知識都是很有區分度的,也是很實用的。再深入java要學的當然就是java虛擬機,這也是近期正在研究的內容,裏面關於內存空間劃分、垃圾回收、類載入的過程等等都是很很實用的東西。比如。能看懂字節碼,對理解類、對象的初始化過程就有很大幫助。

展望未來

因為下一年就要找工作,所以接下來學習的東西會更偏向於基礎知識。

android部分要在研究一些開源框架,圖片緩存載入庫ImageLoader。Volley通信庫和一些框架層的源代碼。

java會依照java面試寶典上的內容再回回想一下java的小知識,繼續看深入理解java虛擬機。

tcp/ip:事實上作為學通信的,這部分掌握較好,只是還要認真看看。

算法:之前已經將數據結構還有常見的排序算法寫了一遍而且整理在了博客。由於我不想在基礎知識還不熟悉的情況下就去刷題。接下來就要狂刷題,看劍指offer,編程之美。

盡管我非常反相應試教育。

操作系統:看一本操作系統的書/視頻。

設計模式:事實上之前已經研究過一部分設計模式,android中最經常使用的觀察者模式、工廠模式,java I/O的裝飾者。集合中的叠代器等等。後面還要再學習幾種。

另外,再深入挖掘曾經所做項目中的相關問題。


幹不論什麽一件事情,都不可避免的會走一些“彎路”,但是這是彎路差點兒是非走不可的,由於不論什麽事情。你不經歷永遠體會不到。更何況。所謂的彎路並不一定是彎路,不論什麽走過的路,犯過的錯,都會成為日後成功的墊腳石。記得前段時間看知乎上有個問題:你有什麽道理懊悔沒有早點知道?從這個角度來看,我的回答是:看書,看經典書。

經典書籍絕對是最好的知識寶庫,曾經沒意識到看書的重要性。

其實當真正研究了一本書,就能夠對相關方面有一個全面的掌握,更基本的是還能對一些問題有更深刻的見解。常常說的一句話:光陰似箭歲月如梭時光荏苒如白駒過隙一般。如今最大的感觸就是時間過的真的好快,然而過去已經無法掌控。那麽僅僅有把握好當下。時間過得非常快,一定要勤奮。


以下羅列一些我看過的java相關的非常不錯的書。有些書不一定全然看了。

Thinking in Java

Java並發編程實戰

Java Nio

深入理解java虛擬機

深入理解android內核設計思想

算法導論(前面部分)

TCP/IP 電子科大楊寧老師的視頻

設計模式之禪

effective java

另一些我沒看過的,可是評價很不錯的書

Java核心技術卷1/2

Java並發編程的藝術(已購買)

Android開發藝術探索(看了文件夾就感覺相當棒,絕對是好書)

鳥哥的私房菜(學android還是要掌握一些Linux的)

hotspot實戰(翻過pdf,還不錯)


* *以上僅僅是我個人的一些觀點,假設有什麽不妥之處還請諒解**

2015總結與思考