成为一名优秀的程序员基本要素
職業(yè)要求
一般的程序員都有四年的在專業(yè)領域的學習,需要一個在程序領域的學士學位獲得者,不論是數(shù)學方面的還是工程方面的都是可以的。
程序員
大約有20%的人在這一領域的計算機科學和工程學擁有更高的學位。還有很小一部分程序員是自學的,盡管一些專業(yè)性的學校或者綜合大學可以提供,但是也需要一些別的途徑來提供相關的人才。盡管學歷是比較重要的,但是公司經常把重點放在應聘者的工作經驗上,很多剛從大學畢業(yè)的大學生雖然有引人注目的學位證書,但是他們找不到工作是因為他們缺乏經驗。一個程序員雖然有正規(guī)的學歷,但是如果一個人擁有程序設計的深厚知識背景或者豐富的工作經驗的話,那么他的機會要比有學歷的應屆畢業(yè)生大得多。所以要盡量抓住有用的工作和實習機會,這樣的話在畢業(yè)后你就會發(fā)現(xiàn),多實習讓你有更多的經驗,在找工作的時候就有更多的機會。
對于職業(yè)程序員,另外一個重要的方面就是,程序員需要不斷提升自己的業(yè)務技術,他的技術必須一直保持在一個較高的水平,并且要不斷發(fā)展,程序員也要尋找貿易的機會,要參加研討會,在周刊上發(fā)表文章和接受職業(yè)教育,這些使程序員在自己的領域中分級或者不斷并排前進。
必備技能
熟練開發(fā)工具
做為一名程序員至少熟練掌握兩到三種開發(fā)工具的使用,這是程序員的立身之本,其中C/C++和JAVA是重點推薦的開發(fā)工具,C/C++以其高效率和高度的靈活性成為開發(fā)工具中的利器,很多系統(tǒng)級的軟件還是用C/C編寫。而JAVA的跨平臺和與WEB很好的結合是JAVA的優(yōu)勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發(fā)工具之一。其次,能掌握一種簡便的可視化開發(fā)工具,如VB,PowerBuilder,Delphi,CBuilder,則更好,這些開發(fā)工具減小了開發(fā)難度,并能夠強化程序員對象模型的概念。另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
熟知數(shù)據(jù)庫
為什么數(shù)據(jù)庫是如此重要?作為程序員,他們自然有自己的理由:很多應用程序都是以數(shù)據(jù)庫的數(shù)據(jù)為中心,而數(shù)據(jù)庫的產品也有不少,其中關系型數(shù)據(jù)庫仍是主流形式,所以程序員至少熟練掌握一兩種數(shù)據(jù)庫,對關系型數(shù)據(jù)庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。雖然很多數(shù)據(jù)庫產品提供了可視化的數(shù)據(jù)庫管理工具,但SQL是基礎,是通用的數(shù)據(jù)庫操作方法。如果沒有機會接觸商業(yè)數(shù)據(jù)庫系統(tǒng),可以使用免費的數(shù)據(jù)庫產品是一個不錯的選擇,如mySQL,Postgres等。
了解操作系統(tǒng)
當前主流的操作系統(tǒng)是Windows,Linux/Unix,
熟練地使用這些操作系統(tǒng)是必須的,但只有這些還遠遠不夠。要想成為一個真正的編程高手,需要深入了解操作系統(tǒng),了解它的內存管理機制、進程/線程調度、信號、內核對象、系統(tǒng)調用、協(xié)議棧實現(xiàn)等。Linux作為開發(fā)源碼的操作系統(tǒng),是一個很好的學習平臺,Linux幾乎具備了所有現(xiàn)代操作系統(tǒng)的特征。雖然Windows系統(tǒng)的內核實現(xiàn)機制的資料較少,但通過互聯(lián)網還是能獲取不少資料。懂得網絡協(xié)議TCP/IP。
在互聯(lián)網如此普及的今天,如果您還沒有對互聯(lián)網的支撐協(xié)議TCP/IP協(xié)議棧有很好的掌握,就需要迅速補上這一課,網絡技術已改變了軟件運行的模式,從最早的客戶/服務器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協(xié)議棧為基礎的網絡協(xié)議支持,深入掌握TCP/IP協(xié)議是非常必要的。至少,需要了解ISO七層協(xié)議模型,IP/UDP/TCP/HTTP等常用協(xié)議的原理和三次握手機制。
明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發(fā)展,軟件與網絡的無縫結合是必然趨勢,軟件系統(tǒng)的位置無關性是未來計算模式的重要特征之一,DCOM/CORBA是當前兩大主流的分布計算的中間平臺,DCOM是微軟COM(組件對象模型)的擴展,而CORBA是OMG支持的規(guī)范。XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯(lián)網上的“世界語”,是分布式計算的基石之一。
不要將軟件工程與CMM分開
大型軟件系統(tǒng)的開發(fā)中,工程化的開發(fā)控制取代個人英雄主義,成為軟件系統(tǒng)成功的保證,一個編程高手并不一定是一個優(yōu)秀的程序員,一個優(yōu)秀的程序員是將出色的編程能力和開發(fā)技巧同嚴格的軟件工程思想有機結合,編程只是軟件生命周期中的其中一環(huán),優(yōu)秀的程序員應該掌握軟件開發(fā)各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟件測試等。
需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟件的功能需求,還應注意軟件的性能需求,要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
模塊化思維能力
作為一個優(yōu)秀的程序員,他的思想不能在局限當前的工作任務里面,要想想看自己寫的模塊是否可以脫離當前系統(tǒng)存在,通過簡單的封裝在其他系統(tǒng)中或其他模塊中直接使用。這樣做可以使代碼能重復利用,減少重復的勞動,也能是系統(tǒng)結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
素質要求
團隊精神和協(xié)作能力
團隊精神和協(xié)作能力是作為一個程序員應具備的最基本的素質。軟件工程已經提了將近三十年了,當今的軟件開發(fā)已經不是編程了,而是工程。獨行俠可以寫一些程序也能賺錢發(fā)財,但是進入研發(fā)團隊,從事商業(yè)化和產品化的開發(fā)任務,就必須具備這種素質。可以毫不夸張的說這種素質是一個程序員乃至一個團隊的安身立命之本。
文檔習慣
文檔是一個軟件系統(tǒng)的生命力。一個公司的產品再好、技術含量再高,如果沒有缺乏文檔,知識就沒有繼承,公司還是一個來料加工的軟件作坊。作為代碼程序員,必須將30%的工作時間寫用于技術文檔。沒有文檔的程序員勢必會被淘汰。
規(guī)范化的代碼編寫習慣
知名軟件公司的代碼的變量命名、注釋格式,甚至嵌套中行縮進的長度和函數(shù)間的空行數(shù)字都有明確規(guī)定,良好的編寫習慣,不但有助于代碼的移植和糾錯,也有助于不同技術人員之間的協(xié)作。
測試習慣
測試是軟件工程質量保證的重要環(huán)節(jié),但是測試不僅僅是測試工程師的工作,而是每個程序員的一種基本職責。程序員要認識測試不僅是正常的程序調試,而要是要進行有目的有針對性的異常調用測試,這一點要結合需求理解能力。
學習和總結的能力
程序員是很容易被淘汰的職業(yè),所以要善于學習總結。許多程序員喜歡盲目追求一些編碼的小技巧,這樣的技術人員無論學了多少語言,代碼寫起來多熟練,只能說他是一名熟練的代碼民工,他永遠都不會有質的提高。一個善于學習的程序員會經常總結自己的技術水平,對自己的技術層面要有良好的定位,這樣才能有目的地提高自己。這樣才能逐步提高,從程序員升級為軟件設計師、系統(tǒng)分析員。
擁有強烈的好奇心
什么才是一個程序員的終極武器呢,那就是強烈的好奇心和學習精神。沒有比強烈的好奇心和學習精神更好的武器了,它是程序員們永攀高峰的源泉和動力所在。
想要學習Dubbo框架、zookeper基本原理、redis分布式緩存、JVM性能優(yōu)化,Nginx+apache+Tomcat集群部署、大數(shù)據(jù)hadoop,Hbase實時計算spark、storm、數(shù)據(jù)分析分詞和權重等核心技術;需要的可以關注之后私信哈,記得要點贊轉發(fā)噢!!!
總結
以上是生活随笔為你收集整理的成为一名优秀的程序员基本要素的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SDK,JDK,API的区别
- 下一篇: 一点一点看JDK源码(四)java.ut