??
對于程序員來說,什么最重要?
??
對于程序員來說,最重要的莫過于對技術的掌握,可是應該還有更重要的東西,那就是思考的能力。
??
作為有一定經驗的程序員來說,會發現學到的并運用的知識大體上分為兩類,就是比較具體的知識和相對來說不那么具體的知識,例如
??? Oracle
的性能優化有關的設置項目
??? Java
語言里面字符串的各種
method
的使用
??? Unix
負載測量的方法。
???
這些都可以說是比較具體的知識,基本上的類型都是
how
to
。學習這樣的知識,最好的方法就是讀書,上網讀讀文檔,也就是說經過一定的學習和訓練就能掌握的知識。通過一定的學習,每個人對這些知識的掌握不會有太大差別,換句話說,這些知識就是屬于那種查一下書就知道的那種。當然了,還有另外一種,看看下面的例子。
???
從客戶那里獲取需求的方法。
???
項目的進行中順利的進行溝通的方法。
???
對于業務信息化的要求,決定采取什么樣的技術的思考能力。
這些知識相對來說不是很具體,比較抽象,正因為比較抽象,所以獲取這些知識的途徑和方法并不是很明確。而且,同樣的學習每個人的所掌握得程度也不一樣。就拿順利溝通來說,不和很多人進行實際的交往和溝通,不經歷過一些失敗和挫折,不嘗試一些好的溝通方法和技巧,并不斷的總結,光看書是不會學習到如何溝通的。
????
那么這兩種知識哪一種更有價值就不言自明了,一百個程序員里面有一百個人會說第二種更有價值,更有用。那么我們不妨再考慮一下,換一個角度,不作為程序員而作為公司的管理者來來考慮這個問題。對公司來說,熟練使用
java
和
oracle
的人有很多,光考慮這一點的話,
A,B
兩個人,雇誰都一樣,也就是說,如果光具有前面所說的具體的知識的話,你跟別人沒有任何差別,沒有差別說白了也就是沒有競爭優勢。你可能會想,那么我學點
.net,
再來點
python,這樣總算可以了吧。其實,只要是技術,存在即有其存在的價值和理由,那么就肯定會有人掌握這些東西
,
也就是說,只要出錢,公司一樣能找到這樣的人來代替你。
???
中國那么多程序員,但是熟悉這個行業的人都清楚地知道,好的程序員還是很少,大家都去學習
java,
都去學習
stuts,spring,hibernate,
每個人好像都是很了不起,當你驕傲的時候,不妨想一想,你是不是不可替代的,你能不能做別人不能做的事情。要做一個一流的程序員,具體的知識當然要學習,同時更應該去學習那些抽象的知識。對于一個項目來說,那些只懂技術的程序員就是一個標準件,標準件對公司的好處就是替換起來很容易。那么,好的程序員,在項目中起到舉足輕重的作用,別人無法替代,做這樣的程序員才應該是我們的目標。
???
再舉一個例子,我們都有過參加這種會議的經驗,負責企劃的部門和負責技術的部門一起開會,企劃一方經常會提出各種方案并向技術部門詢問其可行性,而技術部門的人,馬上就說不能實現,并且用各種各樣技術詞匯來解釋為什么不行,企劃的一方,根本不懂這些技術詞匯,會議也就不歡而散了。在這種情況下,一個好的程序員就會說,這個根據目前的情況還不能判斷能不能實現,在我們做出
Yes
或者
No
這樣的結論之前,不妨好好想想怎么才能實現。這樣的話,會議的氣氛就會向思考“怎么做才能實現”這樣的積極的方向發展,大家也都會更有興趣。
???
寫程序,寫設計書,管理自己的日程這些都是最最基本的素質,僅有這些并不會成為一個好的程序員。好的程序員應該是不斷地考慮,如何讓項目順利的進行,如何讓對方積極的回應你的意見,并付諸于實踐,而且能夠實現。這樣的程序員,才具有了別人不可替代的價值。
???
那么如何成為這種不可替代的程序員呢?沒有特別好的方法,建議到有一個。就是在日常的工作中有意識的要求自己去具有這種能力,不斷的考慮,現在的自己應該如何思考才能成為一個不可替代的人,自己在哪些方面還有所欠缺,不斷的想這些問題,不知不覺也就有了去深入思考的潛意識,具有了這種潛意識之后,你平常所作的事情都會不知不覺地向這個目標靠攏,一切都是在不知不覺中進行的,這是第一步,也是最關鍵的一步。
?
??
寫到這里,我不禁想起了前一陣在一個
Forum
里面聽的一個人力資源方面的講座,講座的老師就提出了一個社會人要有能不依賴于公司的能力,這種能力是什么,說簡單了就是離了公司你能活的很好,再進一步的話,就是公司離了你損失很大。成為這種人,人生的選擇就會更加自由了。我想具有不依賴公司的能力與這里面所說的做一個好的別人無法替代的程序員的提法是比較統一的,只是從不同的角度闡述而已。
???
如果從談技術的角度來看的話,做一個好的程序員并不是會使用最新的技術,會使用什么什么框架,而是有良好,全面,扎實的基礎。技術的發展并不是跳躍的,而是連續的,任何的一個所謂的新技術,無非是某一個舊知識的重新包裝和整合,東西還是那么多東西,只不過用的方法和方式不一樣了。如果有一個好的基礎,無論什么東西,你都會快速理解,看透其本質,掌握其精髓。但是任何一個人,都不可能一開始就把基礎打得天衣無縫,一個好的程序員的學習曲線我想應該是上上下下的,學習上面的新技術的同時,靜下心來好好學習一下相關的底層的基礎知識,不斷的循環往復,不斷的積累,并且不浮躁,應該是一個成為好的程序員的途徑。