對程序員說點實在話


  1. 我個人是一個程序員,關注web、分布式和數據處理。
    我將web看做最流行的、天然跨平台的展現和可視化技術,將分布式看做程序協作、協作程序的最適架構,將數據處理看作需要基礎、技巧、認知、視野以及領域知識兼而有之的事,所以做數據處理,會提升基礎、技巧、認知、視野以及領域知識。
    這些都是廢話,還挺繞,但理解廢話,對我來說,不是那么簡單的事。

  2. 我認為能力的提升來自厚積,所以對於基礎的東西,應該保持持續的熱情。
    認為基礎應該包括但遠不限於
    數據結構和算法
    算法
    網絡(tcp/ip、p2p、http等等)
    計算機體系和操作系統(內存管理、高速緩沖與緩存、線程與並發、資源與爭用、CPU周期、局部性原理等等)
    認為以上基礎永遠沒有精通一說,至少在我這個智力層次看來。比如你看到嚴蔚敏數據結構了,挺好,你又看了算法導論了,更好,能看看普林斯頓的算法,你挺不錯,你又看了些論文,而你確實又用vim、emacs、vs、eclipse或者sublime敲了,那你應該可以一眼就看出滿世界的博客的算法文章中的紕漏和層次,那你還是有點功力了。

  3. 知識結構的重要性與項目經驗會相互影響。同樣的項目,類似的角色,因為知識結構的不同,帶來的提升和總結也會不同,這種提升對於下一個項目或者更復雜的項目帶來的裨益也會有所差別,更長的時間之下,這種差別巨大到值10W還是100W。
    有十年工作經驗,還是一件事重復了十年,差別可能就在這里。

  4. 認為類似“精通java”之類的說辭是存在的,但不談JVM是耍流氓。類庫和框架的熟悉來自工程和項目,可以熟悉一個簡單的API,也可以追着理解AOP,可以應用地很簡單也可以很復雜。如果關注性能的場景,那么應該自覺地關注JVM。但是JVM是浩大的工程,所以理解它是一個長期的過程,所以精通是一件比較困難的事。但是很多常用的場景,比如BufferedReader和FileChannel、mmap都可以是I/O的一種選擇,何者更加適合,往往要看虛擬機里面和操作系統做了些什么,才會理出最佳實踐,附帶的,對Xss、Xmx、directMemory之類的簡單配置也會有更深的理解。同時有助於看到基於虛擬機的語言的局限,比如HBase的BlockBuffer本身是提高讀取的效率的設計,但因為JVM的堆和GC機制,這個設計可能會拖垮HBase。
    這一點同樣應該適用於C#&CLR。

  5. 工作了多年的人都會認為或者自恃自己在某些方面達到精通的水准,有的人的確達到了,但附帶着會有些裝、虛偽和極愛抖機靈,他不會和你好好地探討問題。這種人可能會存在於朋友、同學、同事、上司當中,一個程序員不會活在獨立的容器之中,除了在實力方面要保持自信和謙遜以及付出更多的努力之外,還要注重堅持自己的一些原則而不受一些不夠正能量的企業文化、圈子文化影響,做自己,才能更好的對待技術,才能給雇主帶來更佳的氣場感受和實際價值。
    這個世界不缺乏噴子,有的噴子本身也很厲害,甚至比自己厲害的多,這是他們活着的方式,情緒控制不是什么技巧,你理解的越透徹,你就越能看清什么是噴子,什么是恨鐵不成鋼。

  6. 關於技術實用論,總有一種觀點是沒去過美國就不應該知道星條旗。比如,不是每個公司,每個程序員都會接觸到大數據,但是人類在沒有飛天的遠古,就已經通過圖騰和壁畫來開啟文明的探索和解讀了,這種東西,其實是信仰的力量,說俗一點就是興趣所在,再俗一點,就是機會總是留給有准備的人,願意不願意准備看態度和理解,准備了能不能夠將來用得上,看機遇,實力和運氣都挺重要,但運氣你控制不了。

  7. 人類的大部分知識來自間接渠道,比如閱讀書籍、觀看媒體、道聽途說,離開了學校,但並沒有離開知識的媒介。好的知識來源,比好的學習方法更加重要,這通常也是牛逼的院校和不牛逼的院校的主要區別。有的學校的老師在微博還在成長的階段就開始講授社會計算了,如果你沒有這個知識渠道,應該不會認識到ETL、數據挖掘和倒排索引的意思,可能你已經熟練的修改、添加、編譯lucene了。
    但是,再好的知識,離開了實踐,均不會得到升華,認為一個好的程序員,應該關注代碼和實現,但應該摒棄簡單copy原則,雖然copy大多數情況下對付工作夠用了。私下里,一段關鍵代碼寫個十來遍真傻,挺蠢的,但如果每種寫法有個思考和理解在里面,有選擇地這么做了,再看設計模式和重構,哦,真是這么回事,用茴香豆的方式當傻子不是那么不堪忍受的事,至少理解了什么是錯誤,什么是差別,也給你創造了工作之外的提升場景。

  8. 很多人持這種觀點,中國人,技術都是差的,也是寫不出hadoop的,掙錢最重要,但自己又覺得自己很厲害。
    其實將寫出hadoop和掙錢作為標准,這個觀點本身就太局限了,人這輩子,錢當然重要,寫出能用的hadoop還是寫出mini操作系統還是mini虛擬機,都不必太當回事,閱讀源碼和自己實現所營造出的理解深度天上地下,這種愚公移山的做法,更多在於逼迫你去了解更多、更准、更深刻。大部分hadoop專家,其實都是僅僅看了源碼而已,就已經能出書了,事實上很多公司在實際中也只是跑一些很簡單、很成熟的挖掘算法,愛奇藝的工程師做線性回歸也是實用即可,大部分公司還是在處理日志,有時候想了很牛逼的算法,還沒有換成SSD重要,所以沒那個環境,沒那個條件,就不研究了?我想不是的。
    關於掙錢,我覺得,只要興趣所在,能把事做好,錢自己就會來。收入上不去,往往是做的事情就不在高收入的那個區間,寫程序很難出富翁。說實話,外圍一天的消費可能就是你工資的好幾倍,不用說外圍的收入了。夜總會想玩的high一點不開兩瓶路易十三,可能還會被小姐罵偽土豪,你不送你喜愛的紅、藍、綠牌花束,你都不好意思和她回小區或者賓館探討遺傳算法。
    那么和外圍一起探討遺傳算法的王總、李工的收入更不是寫程序的可以比的了。
    所以不要太刻意地把寫程序這件事和掙錢掛起來,局限了你掙錢的本事。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM