非計算機專業的程序員能達到什麼樣的高度?
本碩都不是計算機專業的,是不是做程序員的話就不可能成為大牛了呢?你遇到過的非科班出身程序員都是什麼狀態呢??
(知乎上好多問怎麼開始學習編程的,卻沒人問能學到什麼程度…)
我所在的項目組沒有一個人是計算機專業畢業的,只有我是科班出身,為了化解這種尷尬我在過了CET6之後又過了日語N1和韓語TOPIK3,然後裝作是從師範學院某外語專業畢業的,這樣我的逼格就不比他們差了...
參考我校大批高能物理、天體物理、理論物理、地球物理等一系列偏理論的理科學生,這些人實際上都是程序員,他們的日常就是寫代碼,只不過給他們提需求的不是產品經理,而是其他實驗物理學同行得到的數據或者其他理論同行提出的idea罷了實際上,他們才是最早面對大數據這種問題的人,比如高能物理裡面海量數據的存儲、壓縮、分析,現在很熱的大數據裡面的各種數據挖掘的演算法這些基本上就是他們的日常工作,他們也是較早面對計算性能瓶頸的人,GPU並行、超算技術、FPGA加速等等都是他們的手段,學校的超算中心的主要客戶也是他們這些人,我接觸到的這類菊苣不少除了在數學物理化學上完爆我等渣渣,寫個代碼設計個硬體也都屬於基本的技能點吧,他們也許工程開發的經驗不多,各種框架接觸的少些,但是論演算法論編程經驗,那是沒的說的。
我說一下我的領導吧,絕對的碾壓級別大神,本科搞汽輪機的,在單位畫了十年圖紙被趕到實驗室去做動態平衡實驗,整天閑得蛋疼開始寫程序,5年後(2008年),一個人搞定了公司的電廠監控系統程序,是的,你沒聽錯,一個人,2年,500多MB的程序。他媽的我入職三年了都看不懂他的底層庫,哭暈。
垃圾知乎, 不玩了
Bill G是法律預科....
第一任上司家裡是開木料場的,平時就幫他爸打理撞球桌生意,沒怎麼上過學,但喜歡編程,偶爾freelance做點linux活計,能在串口用linux機器控制windows outlook,至今難忘。
編程角落的領域,我遇到過不少神人,顛覆你對計算機這種工具的理解,普通程序員做的其實都是比較一般化的編程,數量巨大,所以也就感覺不到了。
既然受過高等教育了,那也應該能明白是不是科班出身根本不重要。科班無非是多了一個學習計算機的氛圍,現在網路發達,如果周圍有計算機大神的話,那科班與非科班出身沒有差別。
我又要說那個不是讀計算機的Dave Cutler創建Windows NT的故事了……
當初沒有計算機專業的時候的大牛們就是非計算機專業專業的程序員能達到高度。
背景:高中學歷還是初中學歷,疑惑中。
電子方面:stm8,stm32,ucos,ucgui,can bus,tcp ip
pcb lay out, 電路原理。
後面是:mysql ,c#,php ,html,bootstrap,jquery,yii
還有很多,不想寫了。
反正從硬體電路設計,代碼,生產,web得高並發性能處理。
完全自學,翻譯了幾百本英文書。
有人贊嗎?贊多了,上傳書單,證明上面沒有說謊。(僅僅操作系統原理,就研究了半年)
·········································································································································贊的人好可憐呀!還是UPLOAD list吧
基礎
數學的起源 托馬斯微積分 第十版 ISBN: 7040108232 Physics, 6th Edition ISBN-10: 032168785X Linear Algebra A Modern Introduction -the foundation of Circuit third
信號分析導論以上的沒有一個單詞一個單詞的分析,很多一知半解。
以下的書都是一個單詞一個單詞的啃
電子電子學 ISBN: 9787121083587
發明者電子設計寶典 ISBN: 9787533523398 How Radio Signals Works The Circuit Designer"s Companion, second Complete PCB Design Using OrCAD Capture and PCB Editor Eagle V6: Getting Started GuideAn Embedded Software Primer
TCP IP GUIDE
Sams Teach Yourself TCPIP in 24 Hours Embedded Software (Newnes Know It All) C# TCP IP SOCKET 實現語言 c++ primer
c primer c#入門經典 xml novice to professorHead First PHP MySQL
think in java C# Essentials c# in Action: Objects, Design, Agility head first python PHP Objects, Patterns and Practice操作系統原理
Computer Architecture:A Quantitative Approach,Fifth Edition Modern Operating Systems Operating Systems:Internals and Design Principles Seventh Edition嵌入式實時操作系統μC/OS-2(第2版)
web 開發
http://asp.net from novice to professor head first 設計模式 head first html head first c# head first css head first javascript head first sql 10 minute of sqlYii Rapid Application Development Hotshot
Yii1.1 Application Development Cookbook jQuery基礎教程 Bootstrap用戶手冊:設計響應式網站機械 Pro/ENGINEER Wildfire 5.0 for Designers Textbook
for dummies
calculus for dummies TCP IP FOR dummis designed pattern for dummies c# for dummies sql for dummies李彥宏是北大信息管理專業畢業的,這個專業的前身是圖書館專業233!!!
科班出身的也有很多dota了四年,最後一無所成的;非科班出身也有拿下google,facebook的offer的,關鍵看自己的興趣和後天的努力。另外,計算機這個行業算是自學門檻比較低的了,北美N多其他理工科專業,甚至文科生都在轉CS,其中還有不少拿到offer的。
能達到什麼樣的高度,我這樣跟你說吧。
先拿溫趙輪舉個例子,因為在知乎他們三個的技術的確不錯:
輪子哥高中開始,或者更早(似乎小學)開始寫程序,大學4年科班訓練+N年微軟工作經驗。
老趙是高中開始參加信息賽,大學4年科班訓練+N年工作經驗。
winter不熟,但從他個人的回答來看,也是早於大學就開始寫程序。
科班程序員和非科班程序員有哪些差別呢,如果科班程序員是大學開始寫代碼,你們的差別就是大學四年的專業教育,四年看起來似乎很短,但是對於一個工作的人來說,每天能抽出3個小時學習新的東西已經是很困難了,四年完整的學習對於一個人來說意義重大。
也不要拿中國那種不入流的大學來舉例子,你算算,211有近百所,平均每一所每年有1000個IT相關的專業畢業生(已經算上工科和文科學校的均攤了),那麼就是10W個科班的人進入行業。10年會產生100W人。隨著計算機的普及,也會有更多的人開始進入這個行業,這意味著IT專業將會是一群在高中就打下基礎的人參與進來,這將拉大了人和人之間的距離。
最後說一個現實一點的。
00後現在最大的是14歲。14歲大概初三。他們已經開始寫代碼和做項目了,是的人數還不少!
89後如果讀書的話是研三,或者已經工作。如果你現在才開始學計算機,這就意味著,10年後你的水平和剛畢業的00後比較厲害的站在同一個水平線上。
---------------------------------------------------
輪子哥喜歡拿Dave Cutler 來鼓勵大家不要擔心專業和年齡。但我覺得你還是要好好考慮。
計算機不是醫學,不是核能。後者沒有科班出身想都不要想。
也是因為計算機沒有門檻,你和她們也許根本就不在一個起跑線上。我是學食品專業的,做IT快三年了。
本人感覺,編程只需要:1 數學基礎,包括:概率,拓撲,線性代數等。2 英語基礎,六級足夠。只需要這兩點,你就可以成為大牛了。注意:是大牛!
如果只是想月薪兩萬什麼的(帝都),都不需要以上兩點,只要高中的知識足夠了。上上下下都廢話那麼多,其實就一句話。看你多努力了。
學的太多反而不好。學點別的,然後入門,然後找人帶你。而且只學對你有用的就可以了。天天寫代碼的人肯定沒有你具備的其他優勢,譬如,你懂一點小物理(化學,生物,數學,人文),會搭建一些電路或者測量設備,會解方程做模擬。會英語。而這些技能也是非常重要的。gogole不是要搞nfc做什麼近場付費嗎,不懂電磁場的純碼農怎麼上手?此外他們就算上手了,會覺得有意思嗎?他能理解自己在幹什麼嗎?所以難怪碼農做的好了最後都做管理了。因為寫代碼這件事本身的確沒那麼多意思,完全脫離現實世界啊。
大學學計算機專業學的想吐,並相信這些課程毀了不少人。所以,在我看來,應該是高手裡非計算機專業的會多些,其中偶爾混雜一些居然是CS畢業的。
CS在大部分環境中是屬於工科的,強調實踐。而太多學校把理論提高到不靠譜的高度,而這些理論又太枯燥無味,抹殺了很多人的興趣。反倒是那些不是學CS的人,有機會按照自己興趣來發展。
一個典型的例子是幾年前有個對電子略有興趣的朋友,問我調頻(FM)是怎麼回事?我就說,很簡單啊,一個變容二極體,在輸入電壓作用下節結電容變化導致LC振蕩器的頻率變化。接收端則是個PLL來檢波出來。在簡單的電路中可以利用三極體的反向偏置的PN結來作為調頻器,施加的反向電壓越高,節結電容越大。
然後朋友給我找了個wikipedia上對FM的描述。如下:
頻率調製瞟了一眼有公式,立馬興趣就沒了。而如果是自學的,自己先找個調頻話筒的電路圖,做個出來,對調頻的理解就完全是另一個概念。
從那以後,我開始理解到大學課程在抹殺興趣方面的強大殺傷力。
我不是說理論不重要,而是學習應該有個更好的過程。比如應該先了解此事的應用方向,然後解釋一些現實世界對應的東西,講解下原理,定性理解,最後才是引入公式的定量理解。而國內的大學課程彷彿是填鴨一般,前面的步驟都沒了。直接上公式,你會背公式就完事了。以後會不會用不重要,能否在這基礎上做出創新也不重要。樓主你跟他們科班出身的比,差的無非就是那麼十幾本書而已。你比他們勤奮,總能慢慢趕上,並且超過他們。他們比你勤奮,那麼即使你是科班出身,又怎麼能夠不被超越?
我們學校雷新榮老師,材料學博導,開發了一個分析XRD數據的軟體,現在我們學院的學生基本上人人都用
行不行,你先行動再說,猶豫不決是最浪費時間的。
推薦閱讀:
※想學編程,請問從哪個開始較好:C/C++,Python 還是 Lisp?
※熱愛編程,什麼時候開始學習?
※Python中實現 (a and b or c) in xx 這種邏輯最簡潔的方式是怎樣的?
※關於學習數據結構與演算法的一些疑惑?
※在這種情況下,我應該如何努力才能如願成為一名計算機大神?