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