選擇IT培訓(xùn)必讀 優(yōu)秀程序員的十個(gè)習(xí)慣
有數(shù)百萬(wàn)的人熱衷于軟件開發(fā),這個(gè)世界上,有很多名字,如:軟件工程師(Software Engineer),程序員(Programmer),編碼人(Coder),開發(fā)人員(Developer)。
這些人能夠成為一個(gè)優(yōu)秀的編碼人員,經(jīng)過一段時(shí)間后,非常熟悉如何用計(jì)算機(jī)語(yǔ)言來(lái)完成自己的工作。但是如果你要成為一個(gè)優(yōu)秀的順序員,還可以需要有幾件事你需要注意,如果你能讓下面十個(gè)條目成為你習(xí)慣,那么你才干真正算得上是優(yōu)秀順序員。
1.掌握多種語(yǔ)言
需要找到一個(gè)最適合的語(yǔ)言來(lái)解決這些問題。比方,如果你需要性能,可能C/C++首選,如果你需要跨平臺(tái),可能Java首選,如果你要寫一個(gè)Web上的開發(fā)順序,那么PHPASPAjaxJSP可能會(huì)是選擇,如果你要處理一些文本并和別的應(yīng)用交互,可能Perl,順序語(yǔ)言總是有其最適合的領(lǐng)域。當(dāng)你面對(duì)需要解決的問題時(shí)。Python會(huì)是最好的所以,花一些時(shí)間去探索一下其它并熟悉的順序語(yǔ)言,能讓你眼界變寬,因?yàn)槟惚晃溲b得更好,思考問題也就更為全面,這對(duì)于自己和項(xiàng)目都會(huì)有好的協(xié)助。
2.學(xué)無(wú)止境
也得要使勁地學(xué)習(xí),就算是有了10年以上的順序員經(jīng)歷。因?yàn)槟阌?jì)算機(jī)這個(gè)充溢一創(chuàng)造力的領(lǐng)域,每天都會(huì)有很多很多的新事物出現(xiàn)。需要跟上時(shí)代的步伐。需要去了解新的順序語(yǔ)言,以及了解正在發(fā)展中的順序語(yǔ)言,以及一些編程框架。還需要去閱讀一些業(yè)內(nèi)的新聞,并到一些熱門的社區(qū)去參與在線的討論,這樣你才干明白和了解整個(gè)軟件開發(fā)的趨勢(shì)。國(guó)內(nèi),一些著名的社區(qū)例如:CSDNITPUBCHINAUINX等等,國(guó)外,建議你經(jīng)常上一上digg.com去看看各種BLOG聚合。
3.一個(gè)優(yōu)秀的團(tuán)隊(duì)成員
可能沒有一個(gè)成熟的軟件是一個(gè)人能做的可能是團(tuán)隊(duì)中最牛的大拿,但這并不意味著你就是好的團(tuán)隊(duì)成員。能力只有放到一個(gè)團(tuán)隊(duì)中才能施展開來(lái)。和你團(tuán)隊(duì)成員交流中有禮貌嗎?否經(jīng)常和他溝通,并且大家都喜歡和你一起討論問題?想一想一個(gè)足球隊(duì)吧,這個(gè)隊(duì)中好的成員嗎?當(dāng)別人看到場(chǎng)上的跑動(dòng),當(dāng)別人看到傳球和接球和搶斷,能受到鼓舞嗎?
4.把你工作變成文檔
但那還僅僅不夠,這一條目當(dāng)然包括了代碼中寫注釋。還需要做得更多。有良好的注釋風(fēng)格的代碼是一個(gè)文檔的基礎(chǔ),能夠讓你和你團(tuán)隊(duì)容易的明白你意圖和想法。寫下文檔,并不僅僅是怕我忘了當(dāng)時(shí)的想法,而且還是一種團(tuán)隊(duì)的離線交流的方法,更是一種知識(shí)傳遞的方法。記錄下你所知道的一切會(huì)是一個(gè)好的習(xí)慣。因?yàn)椋嘈拍悴幌M麆e人總是最忙的時(shí)候來(lái)打斷你問問題,或是休假的時(shí)候接到公司的電話來(lái)詢問你問題。而你自己如果老是守著自己的東西,其結(jié)果只可能是讓你自己長(zhǎng)時(shí)間地深陷在這塊東西內(nèi),而你就更本不可以去做更多的事情。包括向上的晉升。可能以為“教會(huì)徒弟能餓死師父”但我告訴你激進(jìn)會(huì)讓你失去更多更好的東西,請(qǐng)你相信我絕不是這里聳人聽聞。
5.注意備份和安全
丟失東西是人生中的一部份,可能你覺得這是一個(gè)“廢話”已明白了備份的重要性。但是還是要在這里提出。總是會(huì)丟東西,這點(diǎn)你永遠(yuǎn)無(wú)法防止。比方:筆記本電腦被人偷了硬盤損壞了電腦中病毒了系統(tǒng)被人入侵了甚至整個(gè)大樓被燒了等等,等等。所以,做好備份工作是非常非常重要的事情,硬盤是不可信的所以定期的刻錄光盤或是磁帶可能會(huì)是一個(gè)好的方法,網(wǎng)絡(luò)也是不可信的所以小心病毒和黑客,不但使用軟件方面的平安戰(zhàn)略,更需要一個(gè)健全的管理制度。此外,盡量的讓你數(shù)據(jù)放在不同的地方,并做好定期(每日,每周,每月)備份策略。
6.設(shè)計(jì)要足夠靈活
但是作為一個(gè)優(yōu)秀的順序,可能你需求只會(huì)要求你實(shí)現(xiàn)一個(gè)死的東西。應(yīng)該隨時(shí)在思考這個(gè)死的東西是否可以有靈活的一面,比如把一些參數(shù)變成可以配置的把一些公用的東西形成你函數(shù)庫(kù)以便以后重用,否提供插件方面的功能?模塊是否要以像積木一樣隨意組合?如果要有修改的話,設(shè)計(jì)是否能夠馬上應(yīng)付?當(dāng)然,靈活的設(shè)計(jì)可能并不是要你去重新發(fā)明輪子,應(yīng)該盡可能是使用規(guī)范化的東西。所謂靈話的設(shè)計(jì)就是要讓讓考慮更多需求之外的東西,把需求中這一類的問題都考慮到而不是只處理需求中所說(shuō)的那一特定的東西。比如說(shuō),需要需要的屏幕分辨率是800600那么你設(shè)計(jì)能否靈活于其他分辨率?順序設(shè)計(jì)總是需要我去處理不同的環(huán)境,以及未來(lái)的趨勢(shì)。需要用動(dòng)態(tài)的眼光去思考問題,而不是刻舟求劍。也許有一天,今天寫的順序就要移植到別的環(huán)境中去,那個(gè)時(shí)候你就能真正明白什么是靈活的設(shè)計(jì)了
7.不要搬起石頭砸自己的腳
那就是總是想趕快地完成自己手上的工作。但情況卻往往事已愿違。越是想做得快,順序員總是有一種不好的習(xí)慣。就越是容易出問題,越是想做得快,就越是容易遺漏問題,最終,順序改過來(lái)改過去,按下葫蘆起了瓢,最后花費(fèi)的時(shí)間和精力反而更多。欲速而不達(dá)。優(yōu)秀順序員的習(xí)慣是前面多花一些時(shí)間多作一些調(diào)查,試驗(yàn)一下不網(wǎng)的解決方案,如果時(shí)間允許,一個(gè)好的習(xí)慣是每4個(gè)小時(shí)的編程,需要一個(gè)小時(shí)的休息,然后又是4個(gè)小時(shí)的編碼。當(dāng)然,這因人而異,但其目的就是讓你時(shí)常回頭看看,讓你想一想這樣三個(gè)問題:1否這么做是對(duì)的2否這么做考慮到所有的情況?3否有更好的方法?想好了再說(shuō),時(shí)常回頭看看走過的路,時(shí)常總結(jié)一下過去事,會(huì)對(duì)你有很大的協(xié)助。
8.理性面對(duì)不同的操作系統(tǒng)或技術(shù)
有的人喜歡Ubuntu有的人喜歡Debian還有的人喜歡Window以及FreeBSDMacOSX或Solari等等。看順序員們總是有自己心目中無(wú)可比擬的技術(shù)和操作系統(tǒng)。這樣,系統(tǒng)選型的時(shí)候,才干做到真正的客觀和公正,而不會(huì)讓情緒影響到自己。同樣,語(yǔ)言也是一樣,有太多的順序員總是喜歡糾纏于語(yǔ)言的對(duì)比,如:Java和Perl哪個(gè)剛剛出道的順序員沒有爭(zhēng)論去類似的話題呢?比方VC++和Delphi等等。爭(zhēng)論這些東西只能標(biāo)明自己的膚淺和浮燥。優(yōu)秀的順序并不會(huì)執(zhí)著于這些,而是能夠理性的分析和理心地面對(duì),從而才干客觀地做出正確的選擇。
9.別把自己框在單一的開發(fā)環(huán)境中
正如上面所述,每個(gè)順序員都有自己忠愛的工具和技術(shù),有的喜歡老的比方我就喜歡Vi編輯順序)而有的喜歡新的比方gedit或是Emac等。有的喜歡使用像VC++一樣的調(diào)試器,而我更喜歡GDB命令行方面的調(diào)式器。等等等等。順序員在使用什么樣的工具上的爭(zhēng)論還少嗎?處都是啊。使用什么樣的工具原本無(wú)所謂,只要你能更好更快地達(dá)到目的但是有一點(diǎn)是優(yōu)秀順序員都應(yīng)該了解的那就是應(yīng)該去嘗試一下別的工作環(huán)境。沒有比擬,永遠(yuǎn)不知道誰(shuí)好誰(shuí)不好,也永遠(yuǎn)不知道你所不知道的
10.使用版本管理工具管理你代碼
如果你團(tuán)隊(duì)開發(fā)的源代碼并沒有版本管理系統(tǒng),千萬(wàn)不要告訴我不知道源碼的版本管理。那么我要告訴你軟件開發(fā)還處于石器時(shí)代。趕快使用一個(gè)版式本管理工具吧。CVS一個(gè)看上去平淡無(wú)奇的版本工具,但它被使用最廣的版本管理系統(tǒng),SubversCVS一個(gè)升級(jí)版,其正在開始接管CVS領(lǐng)地。Git又是一個(gè)不同的版本管理工具。還有VisualSourceSaf等。使用什么樣的版本管理工具依賴于你團(tuán)隊(duì)的大小和地理分布,也許正在使用最有效率或最沒有效率的工具來(lái)管理你源代碼。但一個(gè)優(yōu)秀的順序員總是會(huì)使用一款源碼版本管理工具來(lái)管理自己的代碼。如果你要我推薦一個(gè),推薦你使用開源的Subvers。
【編輯推薦】