1. 程式人生 > >真正“自學”入門程式設計/程式設計師是一種怎樣的體驗?

真正“自學”入門程式設計/程式設計師是一種怎樣的體驗?

當年沒考上大學,讀了自考。
從那以後就開始了自學生涯,第一年還乖乖的去聽課,第二年就完全放棄課堂了。

 

後來考本,讀研,中間穿插學點通訊,畫圖什麼的,全部自己來。

 

仔細想想,讀研的時候第一年是老師講課,只要老師講課,我都聽不進去。。。。

高中大概就有這種情況了,最喜歡的就是老師講課45分鐘,我拿出來10分鐘左右看他講的內容。其它時間就是思考人生。

 

然後果斷落榜了哈哈。

 

但研二的時候,從寫論文開始,對自學能力的培養已經初具雛形了。

那時候導師不會教你,第一,給了十幾個方向,你自己去選一個。第二,沒了。

 

師兄都沒有。。。老師也不可能每一個方向都特別熟悉。

寫論文的時候最大的感覺就是,nnd,給我留條路好不好,基本上全世界都在做科研,很多問題特別細緻,根本找不到優化的空間,就算找到了,只要你認真找論文,總會發現,我靠,幾年前他們就想過這種方案了,而且比你做的更好。

這種感覺真是生無可戀。

我選的是基於agent的軟體工程,馬丹到現在agent都沒在工業領域做起來。

學校沒專案,只能要求寫論文,死要求是必須要核心期刊發表小論文。

 

我們是湊齊趕上一個國際會議,被SCI收錄。

 

所以雖然讀研,但基本都是自學。
而且,畢業之後我也是一行程式碼都不會寫。

 

之後來北京找工作,就在自學這條路上一路狂奔了。

從JAVA語法開始,我用了一個月的時間學會了JAVA語法,spring,JSP,mysql,svn,tomcat,jdbc等等。

工作就是解決問題,百度,msn上請教別人,不敢問同事,週末看書,晚上會通宵趕進度。。。

 

然後換了個環境,學習memcache,maven,linux,webservice,設計模式等,也差不多花了四個月時間,現在想來,就是那個時候自己有了獨立完成專案的能力。



 

跟著進了搜狐,整個人都飛速成長起來了,學習架構,快取,高併發,分散式,訊息佇列,程式碼規範,開發流程,介面設計等等等等。

大概一年的時間,中間又申請做演算法,自己花時間重新理解了一下分類聚類。

後來跑到了金融公司,學會了Erlang,comet,分詞,詞性標註,抓取,去重,索引,高亮,hadoop,Cassandra,es,drools,qpid等等,還會了點股票,期貨,研報等等。嗯,還有angular,thrift,bootstrap,微信公眾號開發等等。

大概5年的時間,好像學習進度放緩慢了。

跑出來之後似乎就沒再學會多少技術上的事情了,只有支付,電子簽章勉強算是新東西,說來慚愧,最近幾年應該都沒學過什麼新技術了,主要精力轉成了產品,運營和公司管理,以及各行各業的商業模式,說起來自從自己創辦公司以來,我已經接觸了100多家不同的創業團隊了,也算是半個創業導師,我不能幫助別人怎麼成功,但多數能幫助其它人不要死掉。

嗯,勉強懂點了Android和iOS。

 

所以,基本我全是自學,也習慣了這種學習方式。
仔細回顧一下,大概有以下幾種學習途徑。

第一,看書,部落格,原始碼。
第二,身邊大牛,群裡大牛。
第三,專案

對的,完全不存在看視訊這種東西,看過一點實在看不下去。

 

我身邊的大神們也一樣,他們的快速學習能力和閱讀文件能力特別強。

在白社會的時候我們已經是微服務了,從框架選型到應用實踐到改寫原始碼定製元件,大神們只花了一個月時間。

在他們眼裡一個新框架的學習靠看視訊?不存在的。先弄明白應用場景,再去猜測實現方案,再看原始碼對比,更牛逼的事,幾乎是看完原始碼就能動手去改他們覺得不爽,或者是要擴充套件的功能。

 

所謂厚積薄發,就是這樣,你能感受到這就是在討論解決問題的方案,不同人有不同理念,有不同的設計哲學,但程式設計這個世界對他們無祕密可言。

 

我只能做到可以快速理解思路,做不到看完原始碼立刻改進。曾經看過一個JAVA整站抓取的原始碼,名字都忘了,3天看下來看的要吐,隨便改了點東西就交差了,完全受不了3級以上繼承,根本沒有介面這種設計理念。

 

大概是從那裡有心理陰影了,對各種JAVA開源框架的精妙設計理念都一直不敢恭維。

 

乾脆就不看了只懂懂設計思路是什麼,可惜啊,自己當年還是沒人指導,放到現在一定說,必須看,你覺得不爽你可以改啊。

 

但人年齡大了,主要精力真不在程式設計上了。


 

總結起來,寫程式碼要培養好的主動學習能力,看視訊的方式是我第一個強烈反對的。

 

我描述的幾種方式都比視訊高效。
很多人說我沒基礎 所有的人都是從零基礎入門的啊。

所以差別不上有沒有基礎,而是有沒有主動學習能力。

 

這種能力如果沒有,你轉到網際網路第一很困難,第二成長不起來。

 

一個更新換代如此頻繁的行業,怎麼會容納沒有主動學習能力的人呢。


 

所以,儘快從要別人“教”,轉換成自己去“學”。

 

專欄裡整理了一部分,也簡單說一下。

1.查詢資料的能力,要不要培養?
2.閱讀第三方文件的能力,要不要培養?
3.快速定位問題的能力,要不要培養?
4.解決問題的能力,要不要培養?
5.歸納總結的能力,要不要培養?
6.高效嚴謹的能力,要不要培養?


 

都知道程式設計要工作經驗,某種程度上更看重這些能力。


 

最近一直在整理關於思維方式,學習方法的資料,試著去幫助學習慢的人改變學習方法和習慣,培養工程師思維。



嗯,還沒太成體系,希望對大家有幫助,但是無論如何,請停下來,不要再看視訊了~