在這個世界上,有數(shù)百萬的人熱衷于軟件開發(fā)髓堪。
他們有很多名字,如:軟件工程師(Software Engineer)娘荡,程序員(Programmer)干旁,編碼人(Coder),開發(fā)人員(Developer)炮沐。
經(jīng)過一段時間后争群,這些人也許能夠成為一個優(yōu)秀的編碼人員。
他們會非常熟悉如何用計算機語言來完成自己的工作大年。
但是换薄,如果你要成為一個優(yōu)秀的程序員,你還可以需要有幾件事你需要注意翔试。
如果你能讓下面十個條目成為你的習(xí)慣轻要,那么你才能真正算得上是優(yōu)秀程序員。
1 學(xué)無止境
就算是你有了10年以上的程序員經(jīng)歷垦缅,你也得要使勁地學(xué)習(xí)冲泥。
因為你在計算機這個充滿一創(chuàng)造力的領(lǐng)域,每天都會有很多很多的新事物出現(xiàn)失都。
你需要跟上時代的步伐柏蘑。
你需要去了解新的程序語言幸冻,以及了解正在發(fā)展中的程序語言粹庞,以及一些編程框架。
還需要去閱讀一些業(yè)內(nèi)的新聞洽损,并到一些熱門的社區(qū)去參與在線的討論庞溜。
這樣你才能明白和了解整個軟件開發(fā)的趨勢。
在國內(nèi)碑定,一些著名的社區(qū)例如:CSDN流码,cnblog等等。
在國外延刘,建議你經(jīng)常上一上digg.com去看看各種BLOG的聚合漫试。
2 掌握多種語言
程序語言總是有其最適合的領(lǐng)域。
當(dāng)你面對需要解決的問題時碘赖,你需要找到一個最適合的語言來解決這些問題驾荣。
比如外构,如果你需要性能,可能C/C++是首選播掷。
如果你需要跨平臺审编,可能Java是首選。
如果你要寫一個Web上的開發(fā)程序歧匈,那么PHP垒酬,ASP,Ajax件炉,JSP可能會是你的選擇勘究。
如果你要處理一些文本并和別的應(yīng)用交互,可能Perl, Python會是最好的斟冕。
所以乱顾,花一些時間去探索一下其它你并熟悉的程序語言,能讓你的眼界變寬宫静。
因為你被武裝得更好走净,你思考問題也就更為全面,這對于自己和項目都會有好的幫助孤里。
理性面對不同的操作系統(tǒng)或技術(shù)
程序員們總是有自己心目中無可比擬的技術(shù)和操作系統(tǒng)伏伯。
有的人喜歡Ubuntu,有的人喜歡Debian捌袜,還有的人喜歡Windows说搅,以及FreeBSD,MacOSX或Solaris等等虏等。
只有一部分優(yōu)秀的程序員明白弄唧,不同操作系統(tǒng)的優(yōu)勢和長處和短處。
這樣霍衫,在系統(tǒng)選型的時候候引,才能做到真正的客觀和公正,而不會讓情緒影響到自己敦跌。
同樣澄干,語言也是一樣,有太多的程序員總是喜歡糾纏于語言的對比柠傍。如:Java和Perl麸俘。
哪個剛剛出道的程序員沒有爭論去類似的話題呢?比如VC++和Delphi等等惧笛。
爭論這些東西只能表明自己的膚淺和浮燥从媚。
優(yōu)秀的程序并不會執(zhí)著于這些。
而是能夠理性的分析和理心地面對患整,從而才能客觀地做出正確的選擇拜效。別把自己框在單一的開發(fā)環(huán)境中
再一次炭懊,正如上面所述。
每個程序員都有自己忠愛的工具和技術(shù)拂檩,有的喜歡老的侮腹,比如我就喜歡Vi編輯程序。
而有的喜歡新的稻励,比如gedit或是Emacs等父阻。
有的喜歡使用像VC++一樣的圖形界面的調(diào)試器,而我更喜歡GDB命令行方面的調(diào)式器望抽。
等等等等加矛。
程序員在使用什么樣的工具上的爭論還少嗎?到處都是啊煤篙。
使用什么樣的工具本來無所謂斟览,只要你能更好更快地達到你的目的。
但是有一點是優(yōu)秀程序員都應(yīng)該了解的辑奈。
那就是苛茂,應(yīng)該去嘗試一下別的工作環(huán)境。
沒有比較鸠窗,你永遠不知道誰好誰不好妓羊,你也永遠不知道你所不知道的。
5 使用版本管理工具管理你的代碼
千萬不要告訴我稍计,你不知道源碼的版本管理躁绸。
如果你的團隊開發(fā)的源代碼并沒有版本管理系統(tǒng),那么我要告訴你臣嚣,你的軟件開發(fā)還處于石器時代净刮。
趕快使用一個版式本管理工具吧。
CVS 是一個看上去平淡無奇的版本工具硅则,但它是被使用最廣的版本管理系統(tǒng)淹父。
Subversion 是CVS的一個升級版,其正在開始接管CVS的領(lǐng)地抢埋。
Git 又是一個不同的版本管理工具弹灭。
還有Visual SourceSafe等。
使用什么樣的版本管理工具依賴于你的團隊的大小和地理分布揪垄。
你也許正在使用最有效率或最沒有效率的工具來管理你的源代碼。
但一個優(yōu)秀的程序員逻翁,總是會使用一款源碼版本管理工具來管理自己的代碼饥努。
如果你要我推薦一個,我推薦你使用開源的Git八回。
6 是一個優(yōu)秀的團隊成員
除非你喜歡獨奏酷愧,除非你是孤膽英雄驾诈。
但我想告訴你,今天溶浴,可能沒有一個成熟的軟件是你一個人能做的到的乍迄。
你可能是你團隊中最牛的大拿,但這并不意味著你就是好的團隊成員士败。
你的能力只有放到一個團隊中才能施展開來闯两。
你在和你的團隊成員交流中有禮貌嗎?
你是否經(jīng)常和他們溝通谅将,并且大家都喜歡和你在一起討論問題漾狼?
想一想一個足球隊吧,你是這個隊中好的成員嗎饥臂?
當(dāng)別人看到你在場上的跑動時逊躁,當(dāng)別人看到你的傳球和接球和搶斷時,
你的團員成員能因為你的動作受到鼓舞嗎隅熙?
把你的工作變成文檔
這一條目當(dāng)然包括了在代碼中寫注釋稽煤。
但那還僅僅不夠,你還需要做得更多囚戚。
有良好的注釋風(fēng)格的代碼是一個文檔的基礎(chǔ)念脯,他能夠讓你和你的團隊容易的明白你的意圖和想法。
寫下文檔弯淘,并不僅僅是怕我們忘了當(dāng)時的想法绿店,而且還是一種團隊的離線交流的方法。
更是一種知識傳遞的方法庐橙。
記錄下你所知道的一切會是一個好的習(xí)慣假勿。
因為,我相信你不希望別人總是在你最忙的時候來打斷你問問題态鳖。
或是你在休假的時候接到公司的電話來詢問你問題转培。
而你自己如果老是守著自己的東西,其結(jié)果只可能是讓你自己長時間地深陷在這塊東西內(nèi)浆竭。
而你浸须,就更本不可以去做更多的事情。
包括向上的晉升邦泄。
你可能以為“教會徒弟能餓死師父”删窒。
但我告訴你,你的保守會讓你失去更多更好的東西顺囊。
請你相信我肌索,我絕不是在這里聳人聽聞。注意備份和安全
可能你覺得這是一個“廢話”特碳,你已明白了備份的重要性诚亚。
但是晕换,我還是要在這里提出。
丟失東西是我們?nèi)松械囊徊糠菡咀冢憧偸菚G東西闸准,這點你永遠無法避免。
比如:你的筆記本電腦被人偷了梢灭,你的硬盤損壞了夷家,
你的電腦中病毒了,你的系統(tǒng)被人入侵了或辖,甚至整個大樓被燒了瘾英,等等,等等颂暇。
所以缺谴,做好備份工作是非常非常重要的事情。
硬盤是不可信的耳鸯,所以定期的刻錄光盤或是磁帶可能會是一個好的方法湿蛔。
網(wǎng)絡(luò)也是不可信的,所以小心病毒和黑客县爬,不但使用軟件方面的安全策略阳啥,你更需要一個健全的管理制度。
此外财喳,盡量的讓你的數(shù)據(jù)放在不同的地方察迟,并做好定期(每日,每周耳高,每月)的備份策略扎瓶。設(shè)計要足夠靈活
可能你的需求只會要求你實現(xiàn)一個死的東西,泌枪。
但是概荷,你作為一個優(yōu)秀的程序,你應(yīng)該隨時在思考這個死的東西是否可以有靈活的一面碌燕。
比如:把一些參數(shù)變成可以配置的误证,
把一些公用的東西形成你的函數(shù)庫以便以后重用,
是否提供插件方面的功能修壕?
你的模塊是否要以像積木一樣隨意組合愈捅?
如果要有修改的話,你的設(shè)計是否能夠馬上應(yīng)付叠殷?
當(dāng)然改鲫,靈活的設(shè)計可能并不是要你去重新發(fā)明輪子。
你應(yīng)該盡可能是使用標(biāo)準(zhǔn)化的東西林束。
所謂靈話的設(shè)計就是要考慮更多需求之外的東西像棘。
把需求中這一類的問題都考慮到,而不是只處理需求中所說的那一特定的東西壶冒。
比如說缕题,需要需要的屏幕分辨率是800×600。
那么你的設(shè)計能否靈活于其他的分辨率胖腾?
程序設(shè)計總是需要我們?nèi)ヌ幚聿煌沫h(huán)境烟零,以及未來的趨勢。
我們需要用動態(tài)的眼光去思考問題咸作,而不是刻舟求劍锨阿。
也許有一天,你今天寫的程序就要移植到別的環(huán)境中去记罚,
那個時候你就能真正明白什么是靈活的設(shè)計了墅诡。不要搬起石頭砸自己的腳
程序員總是有一種不好的習(xí)慣,那就是總是想趕快地完成自己手上的工作桐智。
但情況卻往往事已愿違末早。
越是想做得快,就越是容易出問題说庭。
越是想做得快然磷,就越是容易遺漏問題。
最終刊驴,程序改過來改過去姿搜,按下葫蘆起了瓢,最后花費的時間和精力反而更多捆憎。
欲速而不達舅柜。
優(yōu)秀程序員的習(xí)慣是,前面多花一些時間多作一些調(diào)查攻礼,試驗一下不同的解決方案业踢。
如果時間允許,一個好的習(xí)慣是:
每4個小時的編程礁扮,需要一個小時的休息知举,然后又是4個小時的編碼。
當(dāng)然太伊,這因人而異雇锡。
但其目的就是讓你時常回頭看看僚焦,讓你想一想這樣三個問題:
1)是否這么做是對的锰提?
2)是否這么做考慮到了所有的情況?
3)是否有更好的方法?
想好了再說立肘,時潮呃ぃ回頭看看走過的路,時沉履辏總結(jié)一下過去事茧痒,會對你有很大的幫助。
以上是十條優(yōu)秀程序員的習(xí)慣或行為規(guī)范融蹂,希望其可以對你有所幫助旺订。