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