我個人是一個程序員,關(guān)注web、分布式和數(shù)據(jù)處理。
我將web看做最流行的、天然跨平臺的展現(xiàn)和可視化技術(shù),將分布式看做程序協(xié)作、協(xié)作程序的最適架構(gòu),將數(shù)據(jù)處理看作需要基礎(chǔ)、技巧、認知、視野以及領(lǐng)域知識兼而有之的事,所以做數(shù)據(jù)處理,會提升基礎(chǔ)、技巧、認知、視野以及領(lǐng)域知識。
這些都是廢話,還挺繞,但理解廢話,對我來說,不是那么簡單的事。
我認為能力的提升來自厚積,所以對于基礎(chǔ)的東西,應(yīng)該保持持續(xù)的熱情。
認為基礎(chǔ)應(yīng)該包括但遠不限于:
數(shù)據(jù)結(jié)構(gòu)和算法、
算法、
網(wǎng)絡(luò)(tcp/ip、p2p、http等等)、
計算機體系和操作系統(tǒng)(內(nèi)存管理、高速緩沖與緩存、線程與并發(fā)、資源與爭用、CPU周期、局部性原理等等)。
認為以上基礎(chǔ)永遠沒有精通一說,至少在我這個智力層次看來。比如你看到嚴蔚敏數(shù)據(jù)結(jié)構(gòu)了,挺好,你又看了算法導論了,更好,能看看普林斯頓的算法,你挺不錯,你又看了些論文,而你確實又用vim、emacs、vs、eclipse或者sublime敲了,那你應(yīng)該可以一眼就看出滿世界的博客的算法文章中的紕漏和層次,那你還是有點功力了。
知識結(jié)構(gòu)的重要性與項目經(jīng)驗會相互影響。同樣的項目,類似的角色,因為知識結(jié)構(gòu)的不同,帶來的提升和總結(jié)也會不同,這種提升對于下一個項目或者更復雜的項目帶來的裨益也會有所差別,更長的時間之下,這種差別巨大到值10W還是100W。
有十年工作經(jīng)驗,還是一件事重復了十年,差別可能就在這里。
認為類似“精通java”之類的說辭是存在的,但不談JVM是耍流氓。類庫和框架的熟悉來自工程和項目,可以熟悉一個簡單的API,也可以追著理解AOP,可以應(yīng)用地很簡單也可以很復雜。如果關(guān)注性能的場景,那么應(yīng)該自覺地關(guān)注JVM。但是JVM是浩大的工程,所以理解它是一個長期的過程,所以精通是一件比較困難的事。但是很多常用的場景,比如BufferedReader和FileChannel、mmap都可以是I/O的一種選擇,何者更加適合,往往要看虛擬機里面和操作系統(tǒng)做了些什么,才會理出最佳實踐,附帶的,對Xss、Xmx、directMemory之類的簡單配置也會有更深的理解。同時有助于看到基于虛擬機的語言的局限,比如HBase的BlockBuffer本身是提高讀取的效率的設(shè)計,但因為JVM的堆和GC機制,這個設(shè)計可能會拖垮HBase。
這一點同樣應(yīng)該適用于C#&CLR。
工作了多年的人都會認為或者自恃自己在某些方面達到精通的水準,有的人的確達到了,但附帶著會有些裝、虛偽和極愛抖機靈,他不會和你好好地探討問題。這種人可能會存在于朋友、同學、同事、上司當中,一個程序員不會活在獨立的容器之中,除了在實力方面要保持自信和謙遜以及付出更多的努力之外,還要注重堅持自己的一些原則而不受一些不夠正能量的企業(yè)文化、圈子文化影響,做自己,才能更好的對待技術(shù),才能給雇主帶來更佳的氣場感受和實際價值。
這個世界不缺乏噴子,有的噴子本身也很厲害,甚至比自己厲害的多,這是他們活著的方式,情緒控制不是什么技巧,你理解的越透徹,你就越能看清什么是噴子,什么是恨鐵不成鋼。
關(guān)于技術(shù)實用論,總有一種觀點是沒去過美國就不應(yīng)該知道星條旗。比如,不是每個公司,每個程序員都會接觸到大數(shù)據(jù),但是人類在沒有飛天的遠古,就已經(jīng)通過圖騰和壁畫來開啟文明的探索和解讀了,這種東西,其實是信仰的力量,說俗一點就是興趣所在,再俗一點,就是機會總是留給有準備的人,愿意不愿意準備看態(tài)度和理解,準備了能不能夠?qū)碛玫蒙?,看機遇,實力和運氣都挺重要,但運氣你控制不了。
人類的大部分知識來自間接渠道,比如閱讀書籍、觀看媒體、道聽途說,離開了學校,但并沒有離開知識的媒介。好的知識來源,比好的學習方法更加重要,這通常也是牛逼的院校和不牛逼的院校的主要區(qū)別。有的學校的老師在微博還在成長的階段就開始講授社會計算了,如果你沒有這個知識渠道,應(yīng)該不會認識到ETL、數(shù)據(jù)挖掘和倒排索引的意思,可能你已經(jīng)熟練的修改、添加、編譯lucene了。
但是,再好的知識,離開了實踐,均不會得到升華,認為一個好的程序員,應(yīng)該關(guān)注代碼和實現(xiàn),但應(yīng)該摒棄簡單copy原則,雖然copy大多數(shù)情況下對付工作夠用了。私下里,一段關(guān)鍵代碼寫個十來遍真傻,挺蠢的,但如果每種寫法有個思考和理解在里面,有選擇地這么做了,再看設(shè)計模式和重構(gòu),哦,真是這么回事,用茴香豆的方式當傻子不是那么不堪忍受的事,至少理解了什么是錯誤,什么是差別,也給你創(chuàng)造了工作之外的提升場景。
很多人持這種觀點,中國人,技術(shù)都是差的,也是寫不出hadoop的,掙錢最重要,但自己又覺得自己很厲害。
其實將寫出hadoop和掙錢作為標準,這個觀點本身就太局限了,人這輩子,錢當然重要,寫出能用的hadoop還是寫出mini操作系統(tǒng)還是mini虛擬機,都不必太當回事,閱讀源碼和自己實現(xiàn)所營造出的理解深度天上地下,這種愚公移山的做法,更多在于逼迫你去了解更多、更準、更深刻。大部分hadoop專家,其實都是僅僅看了源碼而已,就已經(jīng)能出書了,事實上很多公司在實際中也只是跑一些很簡單、很成熟的挖掘算法,愛奇藝的工程師做線性回歸也是實用即可,大部分公司還是在處理日志,有時候想了很牛逼的算法,還沒有換成SSD重要,所以沒那個環(huán)境,沒那個條件,就不研究了?我想不是的。
關(guān)于掙錢,我覺得,只要興趣所在,能把事做好,錢自己就會來。收入上不去,往往是做的事情就不在高收入的那個區(qū)間,寫程序很難出富翁。說實話,外圍一天的消費可能就是你工資的好幾倍,不用說外圍的收入了。夜總會想玩的high一點不開兩瓶路易十三,可能還會被小姐罵偽土豪,你不送你喜愛的紅、藍、綠牌花束,你都不好意思和她回小區(qū)或者賓館探討遺傳算法。
那么和外圍一起探討遺傳算法的王總、李工的收入更不是寫程序的可以比的了。
所以不要太刻意地把寫程序這件事和掙錢掛起來,局限了你掙錢的本事。
-
程序員
+關(guān)注
關(guān)注
4文章
953瀏覽量
29830
發(fā)布評論請先 登錄
相關(guān)推薦
評論