论程序员的核心竞争力
學習能力
?
學習力強的程序員敢大膽地體驗嘗試新技術,他們的技術棧始終在保持不斷地更新。他們能快速把握事物的本質,并判斷出它能用來做什么,不能用來做什么。他們擁抱技術升級和革命,因為他們學習并掌握新技術的速度比其他人更快,所以他們永遠不用擔心失業。
而學習力差的程序員呢?為了繼續停留在舊技術的舒適區,他們往往會抵制新技術的推廣,甚至百般阻撓。因為那會使他們過去的經驗統統無效,只能和后來者站在同一起跑線上。抱死一個框架好幾年,脫離了框架啥都干不了的程序員實在太多了。事實上,這樣的人不能駕馭技術,反而是被技術給奴役了。
學習技術最有效的方式是閱讀、實踐和交流。公司沒給你安排這方面的工作,那你自己都做了些什么呢?八小時之外的時間都用在哪了?有沒有讀源碼?有沒有看原版書?有沒有泡技術社區?有沒有嘗試最新流行的技術?有沒有嘗試把它們用在公司的項目上?你如果感覺自學C/C++語言有困難的話,我本身是一個C/C++出身的程序員,感興趣的小伙伴可以點擊我的主頁,去看一看。
看文檔
其實是最快的學習方法。對于自己工作中常用到的技術,抽時間把官方文檔通讀一遍(其實篇幅都不大),絕對收獲滿滿。沒事的時候多翻翻自己使用的框架/系統/平臺的API,看看有哪些自己不知道或者沒用過的功能,想想這個功能可以用來做什么,能不能解決現存的問題,或者優化當下的解決方案。
?
讀源碼
是深入學習開源技術的唯一途徑。只有理解了某個功能在底層是如何實現的,你才能真正把握它更適合用來做什么,不能用來做什么。正如不明顯汽車的構造和原理,我們也能把車開好。而如果多少知道一點,開起來就會更得心應手。當車出現問題時,也不至于完全束手無策,只能蹲在路邊等待救援。
學習力的源泉就是好奇心,也就是對新知識的渴求,以及對探索未知的沖動。學不到技術最核心的原因只有一個:動機不足。
學編程最重要的是實踐,就是寫代碼、看別人寫的代碼、再寫代碼,你看再多的書,不寫代碼,你還是不會編程。但是寫代碼也要講究方法循序漸進,不能剛學了幾天語法,就想寫個操作系統什么的,樹立這種不切實際的目標只會讓你的自信受到嚴重打擊迷失自我。
為了數據科學類問題研究新領域的發展
?
盡量親自動手去完成事情。你將會有一種直覺,知道如何去處理該事物。積累案例,從數據表中標注著你已獲得的數據開始。這不僅適用于數據科學,也適用于解決任何數值問題。用一個電子表格(或一個R/Python Notebook)來實現算法并獲得一些結果,在過去幫助我真正理解了問題,避免走死胡同。例如,在建立一個外匯定價系統時,我能夠使用電子表格來描述定價算法是如何工作的,并向交易者解釋它。在執行和部署算法之前,我們可以調整計算并確保一切都清楚。
在找到通用辦法之前,先找到一種能解決當前問題的辦法。讓算法本身輸出調試信息。你應該能夠轉儲每一步的中間結果,并用文本編輯器或是 Web 瀏覽器手動檢查它們。不要為單元測試操心,定義出正確行為才是首要的。維護大的、不熟悉的代碼庫程序、
? ? ? ? 檢查文件的大小。最大的文件總是包含了程序的實體部分,至少是指向程序實體內容的分派程序。 main.cc 通常很小,并且對尋找代碼結構毫無用處。從主循環調度開始單步調試程序。可以學到很多關于控制流的東西。尋找數據結構,特別是做為參數傳遞到許多函數中的那些。大多數程序具有一個小的關鍵數據結構集合,找到它們,理解代碼的其余部分會變得容易的多。寫單元測試。這是確認你所理解的代碼與真實代碼工作方式無誤的最好方法。
性能工作
1.在開始所有工作之前,甚至是在剖析(profile)之前,建立一套代表典型現實世界的使用基準。別讓性能倒退,除非你確信已經登峰造極,高處不勝寒,并且更好的解決方法還藏在世界的某個角落里無人發現(如果出現了那種情況,在版本控制系統(VCS)中標記你的分支,以便在發現錯誤之后回來更改。)。
2.許多性能瓶頸都出現在系統的交叉處。在所有 RPC 框架中搜集時間統計數據,并且有一些方式來傳播和可視化每個服務器的請求時間,以及哪些部分的請求是并行的,哪里是關鍵路徑。
3.剖析(Profile)。
4.通常,避免不必要的工作可使你贏在起跑線上。緩存最大的計算結果,粗略評估不常用的東西。
5.不要忽視常量因素。有時候一個漸進性更差的算法在實踐中執行的很好,原因是其具有更好的緩存局部性。為此,你可以在多次調用的函數中識別出威脅。
6.當你獲得了程序大致剖析之后,更改數據結構往往會獲得更多收益。注意內存的使用,時常縮小內存需求來減小緩存壓力,可顯著地提高系統的速度。注意局部性,將常用數據放到一起。如果你的編程語言允許(為 Java 感到遺憾 ),可以消除指針雕鏤(pointer-chasing)來支持值控制。
?
總結?
技術世界就如同一片汪洋大海,細分領域真是多如牛毛。我們只是站在其中一個小島上,怎么確定自己該朝哪個方向進發呢?學習是一輩子的事,作為程序員你不去挖掘更先進的技術那么你早晚會被這個行業淘汰掉。
總結
以上是生活随笔為你收集整理的论程序员的核心竞争力的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: select 1 from 浅析
- 下一篇: 在webLogic 10.3中部署Hib