簡單介紹一下自己和目前的工作
畢業三年,從事前端到後端、硬件到軟件、市場到研發、跑腿到決策,基本一個互聯網公司運作需要的各種事都在不同程度上參與,生活不易,一把心酸淚~
詳細寫寫你是如何走上編程的道路
萌芽
高一的時候花了三百五十大洋買了台文曲星PC1010,上面自帶一種叫做“GV-BASIC”類BASIC編程語言可以用來編程,尼瑪,我竟然可以按照自己的想法在160*80的黑白液晶屏上面輸出文字和圖形,從此一發不可收拾的喜歡上編程,也奠定了寫代碼的命。於是從GV-BASIC開始寫代碼,一段時間後面感覺BASIC的效率不夠,又翹課到網吧上網找資料學習了6502處理器的彙編,真的效率上來了,但也因為操作的太底層了導致文曲星也報廢了幾次,整個高中報廢了三台PC1010,一台PC800以及一台NC1020。PC1010都是自己的(後兩台是淘寶買的二手貨),另外兩個型號的是同學的,到現在我都不知道怎麼面對那兩位同學。
因為有GV-BASIC的基礎,高中的時候還順便學習了Visual Basic 6.0。整個高中是一個程序高產的時代,還記得的自己寫的文曲星程序有文字版的NBA遊戲、簡單的搜索引擎(用從事先錄入的詞條中查詢數據)、算命程序、解方程程序以及一個用於編譯彙編語句的彙編程序(我確信我現在沒法寫出那麼高效的程序了)。VB寫的PC程序也不少,基本都是工具類的,比如倒計時軟件、日期計算器、剪貼板工具等等。
成長
大學選了通信工程,源於自己對硬件和通信技術也感興趣,雖然老師講授的課程裏面只有C語言和數據結構能算軟件方面的知識,但整個大學時期我有了更多的時間和資源來學習軟件方面的知識。大學四年基本把常見的編程語言都學習了,如C、C++、PHP、Java、C#、JS、SQL(如果SQL算編程語言的話)……
大一學習C語言的時候開始接觸NES開發(對,就是小霸王遊戲機),並通過這種方式來訓練C能力。這段時間收集了很多C語言開發NES程序的資料,最後把自己的研究結果寫了幾篇CC65(寫NES的一種C語言編譯器)方面的文章,現在網路上的CC65中文教程很大一部分是我貢獻出去。總的寫過一個電子詞典、推箱子游戲以及後面的憤怒的小鳥以及一些常用的類庫封裝。現在熱情減退不少,但NES開發的圈子裏面還能看到有人時不時在研究NES的軟硬件內容,看到也相當讓人興奮。
大二的時候做過幾個MTK的IAVA半成品遊戲,也寫過Nokia的J2ME程序,數據庫等等也這段時間學習的。
大三開始接觸Linux(Debian 6)之後就開始時不時使用Linux,因此有了些基本的Linux操作能力,現在的很多產品也跑着Linux系統上。
大四學習了Android和iOS開發,在實習的公司做過幾個app產品。大四在朋友的介紹下開始接觸Python,從此便一發不可收拾的喜歡上Python(如果Python是個妹子的話)。
由於專業的原因,大學裏還順便學習了電子電路、單片機、嵌入式已經計算機網絡方面的東西,現在偶爾也玩玩硬件,但像模像樣的產品説實話沒有做過,當然,這不代表以後也沒有。
大學階段的學習很雜,基本上是感興趣的都去碰一下,時間精力有限基本都是淺嘗輒止,最後沉澱下來的語言就只剩下C、C#、Java和JS了(大量使用ORM的緣故,除非對數據庫進行操作,否則很少有機會去手寫SQL了),以及硬件上的ADC、IO、串口、I2C、SPI、CAN等等東西了。
大學四年翻了很多學校圖書館的計算機類書籍,但基本都還停留在如何使用的層面上,這四年裏代碼也沒少寫,比如可以刷暴學校選課系統的軟件、比如可以給自己班級無限投票的軟件,當然還有一堆課程實訓的XX管理系統和參加比賽時候寫得一堆單片機程序和PC程序。
有幸這四年裏也遇到幾個可以在計算機編程方面相互交流的夥伴,時不時聊天總能碰出一些火花。
發展
工作以後逐漸對設計模式、敏捷、TDD等軟件工程方法留意和思考,也開始看相關書籍來彌補這塊理論知識的空白。編程語言方面也開始逐漸傾向於Python,酷愛Python的短平快,公司的大部分產品也均部分或者全部使用Python、框架方面傾向於Django。在團隊建設上面也基本全盤Python化(當然,只是在互聯網這塊使用Python,桌面和Windows Phone還是C#、Android還是Java、iOS還是Objactive C(沒錯,不是Swift))。
出於對Python的喜歡,也逐漸向周圍的朋友推薦Python,時至今日已成功安利了好幾位,這樣一來朋友聚一起能夠交流的東西也就更多了。
也並非只在工作的時候寫代碼,業餘的時間出過幾個Windows Phone的應用,現在還在維護着。硬件開發板也是買了很多,但大部分都是跑了例程就丟一邊了,頂多也只是偶爾玩玩,對於現在開發板的性價比也着實歎服,各種派都能夠毫無壓力的跑Python了,這某種側面上又加深了我對Python的喜愛。
從讀書的時候到現在為止,一直想寫一個開發NES用的類C編譯器,雖然也在斷斷續續的進行中,但進度太慢,用了幾年的時間才把初步的彙編器,而且估計後面會完全推倒重來(這種情況不止一次了)。
創新
一直都像塊海綿一樣在吸收學習,還沒到這個階段....
介紹一些你比較喜歡的軟件和硬件
軟件
Sublime Text、Chrome(插件:JSON View、REST Client、EditThisCookie)、Firefox、Eclipse、Android Studio、VS、Guika
其實在這裏我很想寫vim、emacs的,但是無奈我對這兩個東西一直學習不來,而我也逐漸接受了這一現實:並非所有人都使得來這些神器的,比如我。
另外用Python的推薦pip和virtuaenv。
硬件
樹莓派、香橙派、Smart Link 7688、Arduino,可玩性都比較高。哦,還有PL2303HXA串口線。
如果喜歡閲讀的話比較推薦亞馬遜的Kindle,出差攜帶也比較方便,添加幾個訂閲,比較方便。
作為工具控的你們也可以分享自己在工作、學習、生活中用到的神器(新增)
白開水、雙顯示屏
有沒有寫過一些黑科技(狂拽酷炫屌炸天)型程序
大三的時候寫過一個給班級投票的程序,把自己班級投到第一,還有一個選課軟件,把學習服務器選爆了,唉,怎麼都是些為非作歹的工具。
前久寫了個叫做EditOnline的Python工具,不算黑科技,但感覺做簡單的在線編輯很方便,特別是和上面提到的樹莓派之類的神奇結合起來。
推薦一些書籍或者編程大殺器給大家唄,加 1W 個推薦理由
最近偏愛村上,不知道這樣説會不會被打臉。
哈哈,迴歸正題,比如《IT通史》、《浪潮之巔》、《數學之美》、《代碼之美》、《人月神話》,學習Python的話建議收藏《Python Cookbook》。
還有,東野圭吾的《白夜行》估計寫代碼的人會喜歡。
那麼,你還想敲幾年代碼
如果高中在文曲星上面敲代碼也算進去的話我已經有10年的碼齡(操,竟然這麼老了),前久朋友問還打算敲多少年,我隨口回答“一直敲啊”,朋友説“程序員吃青春飯,你不可能一直敲下去”。
但我們都沒有敲到老過,所以誰有資格説不能一直敲下去了?
本文參與了 SegmentFault「我的編程之路」計劃,歡迎正在閲讀的你也加入,一起分享。