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