1. 程式人生 > >優秀的程序員和一般的程序員差別在哪?

優秀的程序員和一般的程序員差別在哪?

pri 未來 感到 理解 spring源碼 工程師 不容易 軟件工程 圖像

一個程序員之所以優秀,肯定要具備多維的品質。但如果一定要用一句話來凝練這所有的品質,我把它總結為:自我解決問題的能力。

為了闡述它,我分享一個身邊的例子。

前段時間,我負責一個web前端項目,其中需要一個“圖像編輯器”。

坦率的說,要實現這個功能並不容易,一方面會涉及復雜的算法,另一方面要求對HTML5和JS6有精深的了解,同時還有良好的工程控制能力。因此,如果所托非人,做到最後很可能會爛尾。

於是,我把這個任務交給了團隊中最優秀,也是我最信任的工程師小周。告訴他,請他為團隊開發一個圖像編輯器,具備基本的圖形編輯功能,支持常見的濾鏡,但不要用任何插件技術(例如Flash),工期一個月。

沒錯,上面就是我告訴小周的所有需求,沒有原型設計,也沒有任何文字描述。

這樣看起來,我似乎是一個缺乏責任心的leader,但其實不然,我是典型的“看人下菜”。

平時,對那些能力一般的同事,工作過程,我會適當跟的緊一點。但對小周這種優秀的員工,基於以往的良好聲譽,我卻會大膽放手,讓其全權負責。

雖然我的需求很“簡單”,但之後暗含的工作卻有很多:

有那些具體功能點?
UI長什麽樣子?
采用什麽技術?
是否要引入框架?
如何設計?
...
這些都沒有人明確告訴小周如何去做,但是一個月的工期後,小周卻完美的交付了任務。

整個過程,我倆沒有進行過任何具體細節的討論,我對整個過程的了解只是基於他cc給我的郵件。

小周首先了解到公司的其他產品也有圖像處理功能,因此就給對方軟件工程師發了一份郵件,詢問對方是否能分享下源碼。等拿到了源碼後,就在此基礎上開發了一個“繪圖引擎”,直接節省了許多開發量。

然後,他又“把玩”了一些同類的產品,再根據自己對客戶需求的理解,列出了一份詳細的功能需求。

接下來,他又找到公司的UI設計師,列舉了自己的需求,請對方為自己設計一個UI。

接下來就是具體的設計和編碼工作。

雖然這只是一個單獨的組件,工期只有1個月。但小周還是把這個一個月的時間拆分成4周,每周作為一個小沖刺,然後定時的把工作成果更新到demo服務器上。而我也是通過在線demo了解到更具體的進度。

當然,具體的開發過程中,小周必然需要學習,要進行架構設計,有技術難點需要攻克。但是,這些細節,小周從來沒有為外人道過,也沒有申請過額外的工期。

...

小周的表現堪稱 “自我解決問題能力”的典範。

而一個具備這種能力的程序員,必然是一個優秀的程序員,必然會具備以下優秀品質:

高度的責任心
對需求的高度敏感
良好的溝通能力
優秀的學習能力
良好的設計能力
極強的編碼能力
嚴謹的時間規劃能力
...
同時,把這些能力整個起來,又會產生一個金子般的能力:領導力。

因此還可以說,一個具備“自我解決問題能力”的程序員,必然是一個具備“領導力”的程序員。

大家可以想象一下,如果有升職機會,這樣的程序員怎麽可能不受到垂青呢?

因此,如果你是一名程序員,在追求優秀的路上,面對太多的說法,感到無所適從,那就請把這句話記在心裏:“自我解決問題的能力”。因為它是一切優秀品質的綜合投影。

歡迎工作一到五年的Java工程師朋友們加入Java架構師:697558955

群內提供免費的Java架構學習資料(裏面有高可用、高並發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

優秀的程序員和一般的程序員差別在哪?