高效程序員的7個共同特征

要想成為高效的程序員,你需要具備一定的綜合素質才能夠讓你用你所掌握的技能、經驗和知識編寫出有效的代碼。有一些開發人員在技術方面具備一定的技巧,但他們永遠無法成為高效的程序員,就是因為他們缺乏所需的其它幾項特質。本文將給出成為一個偉大的程序員所必須具備的7項特質。

1、主動學習新的技術和非技術兩方面的知識

不好的程序員只有在實在不行的時候才開始進行知識學習。良好的程序員會主動學習新的技術知識。偉大的程序員不僅會自行學習新的技術知識,?而且還會學習非技術方面的知識,對各種知識來源都有一種開放的心態,而不會象有的人那樣固步自封。

具體點說,不好的程序員只有在參加了采用WPF的項目時才開始學習XAML;良好的程序員一年前就學習了XAML,因為他感覺它很有意思;而偉大的程序員還閱讀了WPF應用程序的設計指南、可用性(usability)理論或者什么類似的學習課程,因而他能夠制作出卓爾不群的UI。

2、務實而不教條

嚴格遵守那些不成文的“編程規則”往往是一種奢侈品,沒有多少開發人員能夠承受得起。如果你們的規格說明書不是由頂尖的開發人員編寫的,也不是在頂尖的開發人員指導下編寫的,我就可以向你保證,你可能也承受不起。

我經常能夠碰到一些程序員,他們無法或者拒絕做某個任務只是因為完成這個任務的做法通常不為最佳實踐所接受。業務需求很少會受到實現需求所采用的技術的制約;沒有人會說,“這我們不應該把這個需求寫到規格說明書里,因為要實現這個需求,程序員就不得不寫一段很臭的代碼。”

在結束的那一天,程序員的任務是要生成一個有效的應用程序,而絕不是要求在技術方面達到十全十美。我可不是在為垃圾代碼做辯護。我想說的是,總會在有些時候,你會寫出一些代碼,這些代碼你永遠不會作為范例向別人展示做事的正確方法。如果只有一種寫法,那么這種代碼就不是糟糕的代碼?——??但要保證你已窮盡了其它所有可能的方案。

3、懂得如何通過研究找到答案

通過研究找到答案可不僅僅只是在搜索引擎中鍵入幾個關鍵字那么簡單,也不是到Stack?Overflow或者MSDN?forums這類網站發個問題帖。我就碰到過在搜索引擎里根本搜不到答案的問題,然后我Stack?Overflow?或者MSDN?forums里發的所有問題貼都沒有一個像樣的答案,不過我還是解決了我所碰到的問題使得工作得以繼續。我不是魔術師?——?我只是懂得如何找到答案,如何找出問題的根本原因。

有許問題都屬于情景式的問題,如果你依賴于搜索引擎或者論壇,就會在各種鏈接中浪費大量的時間而最終無法得到真正的答案。要學習如何進行根本原因分析,學習底層系統方面的知識才能夠找到其它的線索和解決方案,還要學習如果在對問題有個全局性的認識后才對其進行深入分析。

4、擁有激情

不喜歡這份工作,就無法成為這個行業中的頂尖高手。倒是也有一些僅僅把編程當作一份普通工作的程序員水平也還不錯,但如果你的三觀就是如此的話,你就不太會愿意去做能夠將你引向成功的所有事情。這個觀點會使很多家伙不悅,因為他們會覺得這是一種人身侮辱。“我是一個很好的程序員,但我還有其它重要的事情要做,我不能讓工作成為我人生的全部。”?我完全理解,我也有別的更重要的事情。盡管我也痛恨這么說,當我們對我的工作熱情高漲之時,我愿意(雖然不是渴望)拋棄我其它更重要的事情來首先完成手頭的工作。要說你不愿意全情投入就無法成為高手,不算是人身侮辱,這是事實而已。

你的激情不能僅僅只在編程一個方面?——?你必須在你的工作、你所使用的技術、你的老板、你的項目等等方面都有激情。?我目睹過一些非常好甚至很偉大的程序員其表現平平,只是因為有一些條件不太合適。比如,他們不喜歡手頭的項目,或者項目中所用的技術讓他們討厭。我曾經就是一個這樣的程序員,我也同這樣的程序員一起共過事。無論從哪個角度講,我都不喜歡這樣的程序員。如果你發現你的情況就是如此,就需要立即解決這個問題,要么挖掘出手頭的工作或項目中有意思的地方從而能讓你調整心情,要么就不要接著干了。怪不值當的。

5、將自負留在門外

許多開發人員都非常自負。僅僅是比有些人聰明、懂得多一點或者經驗更豐富一點,可不是意味著和那些人相比你才是好人。你要尊重別人,真正聽取并考慮別人的觀點,在需要的時候向他們求助,而且還不能小瞧別人。?你還應該更加關心團隊的勝敗,而不是僅僅關心你在工作中的榮譽得失。

6、具有企業家的精神

最優秀的開發人員不會是游手好閑者。對他們來講,產品的成功不僅僅意味著他們的薪水有著落了。因為他們在工作中熱情飽滿,他們是為了項目有更好的發展而工作,而且會一往無前。

7、測量兩次,下刀一次。。。但測量不要多于三次

開發人員可能會犯的最糟糕的錯誤之一就是還不知道要干什么呢,就一猛子扎到代碼里去了。(當他們把這種做法稱作敏捷開發時情況更為糟糕,好像用敏捷兩字就能讓情況好轉似的)。當偉大的開發人員跳進代碼里去的時候,那是因為需求規格說明同他們以前實現過的某種做法十分相似。偉大的程序員在面臨新問題時,他們會進行思考、計劃和研究。

開發人員當中最最優秀的不會墮入“分析癱瘓者(analysis?paralysis)”陷阱。他們懂得要對某些事情小心謹慎(比如涉及錢或個人數據時),只有這些特殊領域才適合我所說的“要測量三次”。任何超過三次的情況發生就意味著你在浪費你的時間(除非在鮮有的特例中,比如核反應堆、宇宙飛船、對沖基金會計系統)。

在某個特定的時間點就要停止計劃,開始編碼,然后再看看你的計劃在哪些方面需要進行相應的調整,這一點非常重要。順便說一下,這就是我為什么成為敏捷方法擁躉的原因之一。我所知道的最優秀的開發人員在計劃不再合適或者發現計劃有缺陷時,都會愿意將計劃放棄掉。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447320.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447320.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447320.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java.util.Array中的方法

概述 asList(): 獲取任何序列或數組,并將其轉換為一個 列表集合 (集合章節介紹了此方法)。 copyOf():以新的長度創建現有數組的新副本。 copyOfRange():創建現有數組的一部分的新副本。 equals():比較兩…

有關編程的12個猜想

摘要:編程世界的將來如何目前仍難預料,但可以肯定的一點是技術一直在加速發展。本文搜羅出12個獨特的編程視角猜想,一起來看看有哪些猜想在不久的將來就能變為現實。 編程世界的將來如何目前仍難預料,但可以肯定的一點是技術一直…

面試中如何剔除“魚目混珠”程序員?

公司招聘面試事宜是一個耗時耗錢的項目,從挑選簡歷開始,還要花更多的時間面試候選人。有的時候這些人才機構會向你保證這些人都是Java天才、SQL專家、堆棧開發者等等,但實際上真實情況遠不及你想想的。對于一個公司來說,執行招聘面…

InputStream 類型

輸入流類型 I/O-1 類功能構造器參數如何使用ByteArrayInputStream允許將內存的緩沖區當做 InputStream 使用緩沖區,字節將從中取出作為一種數據源:將其與 FilterInputStream 對象相連以提供有用接口StringBufferInputStream將 String 轉換成 InputStr…

java容器相關問題

同步類容器 1,這些復合操作在多線程并發地修改容器時,可能會表現出意外的行為,最經典的便是ConcurrentModificationException,原因是當容器迭代的過程中,被并發的修改了內容,這是由于早期迭代器設計的時候…

趣文:如果編程語言是車

C語言是全能手,小巧,強大,所向披靡,可靠,任何事情都能對付。 C是新的C,雙倍的能力,雙倍的尺寸,適應險惡的環境,但是你如果沒練好就去駕駛,很可能會撞車。 C#是…

Java 線程安全

線程安全 線程安全概念:當多個線程訪問某一個類(對象或方法)時,這個類始終都能表現出正確的行為,那么這個類(對象或方法)就是線程安全的。synchronized:可以在任意對象及方法上加鎖…

開發者應該了解的API技術清單!

摘要:有人說,有API的地方就有App,借助這些API開發者輕松構建出一款應用,極大地提高開發效率和開發質量。文中整理了一份API服務清單,內容涵蓋:監控/調試、 CDN 、數據庫、儀表盤、支付、通信等方面&#xf…

提高程序員職場價值的10大技巧

如果你已經是個很牛叉的程序員,但是依然覺得覺得還不夠的話,歡迎閱讀此文。本文旨在幫助各位更上一層樓。 你是不是覺得自己已經掌握了所有的編程技巧?別太自以為是了! 會寫代碼的確很重要,但是要拿到更好薪水&#…

google python的風格規范

點擊鏈接,查看內容

IT人應當知道的10個行業小內幕

如果你打算從事IT行業或剛進入這個行業,也許本文下面的小內幕會嚇到你,因為這些事平常都不會公開討論的。如果你是IT資深人士,或許你已經遇到其中的大部分了。如果你愿意,請一起來參與討論吧。 這些內幕大多數是針對網絡管理員、…

Volatile原子性一致性JVM指令重排

概念 Volatile概念:Volatile關鍵字的主要作用是使變量在多個線程間可見。作用: 在多線程間可以進行變量的變更,使得線程間進行數據的共享可見 阻止指令重排序,happens-before package com.example.core.cas;import com.example.c…

python修改文件內容,不需要read,write多個動作。

python 要修改文件內容,常用 是先read,后write , 再 rename,很不爽。 比如:需要 把 yuv_dir "../HD/" # "H:/HD_Master/1080i25/" 改為 yuv_dir "C:/HD/" # "H:…

Atomic系列類

Atomic系列類別 Atomic系列類封裝了一系列的基礎類型和對象操作,其主要目的就是為了實現原子性,主要核心類如下 AtomicIntegerAtomicLongAtomicBooleanAtomicIntegerArrayAtomicLongArrayAtomicReference 原子性的引用對象在對Atomic類操作的時候&…

python 系統學習筆記(十二)---os os.path os.walk

得到當前工作目錄,即當前 Python腳本工作的目錄路徑: os.getcwd() 返回指定目錄下的所有文件和目錄名:os.listdir()函數用來刪除一個文件:os.remove()刪除多個目錄:os.removedirs(r“c:\python”)檢驗給出的路徑是否是…

Java JUC工具類--CountDownLatch

CountDownLatch:用于監聽某些初始化操作,并且線程進行阻塞,等初始化執行完畢后,通知主線程繼續工作執行 package com.example.core.juc;import java.util.concurrent.CountDownLatch;public class UseCountDownLatch {public stat…

Java JUC工具類--CyclicBarrier

CyclicBarrier:柵欄的概念,多線程的進行阻塞,等待某一個臨界值條件滿足后,同時執行 類比:每個線程代表一個跑步運動員,當運動員都準備好后,才一起出發,只要有一個人沒有準備好&#…

人生感悟:人生像吃自助餐

問我怎樣管理欲望,過簡單生活?我的答案是:你要先學會品味人生,品味的同義詞,就叫做體悟內涵。 人為什么有這么多欲望?其實,我們每個人在一個社會,就像進入一個自助餐(buffet)店,食物非常的多…

Java JUC工具類--Future

Future模式,也是非常經典的設計模式,這種模式主要就利用空間換時間的概念,也就是說異步執行(需要開啟一個新的線程)在互聯網高并發的應用服務中,我們隨處可見這種理念和代碼,主要就是使用了這種…