在中國(guó),寫(xiě)程序,不僅僅是一種興趣,更多的時(shí)候,還是一種普通職業(yè)和謀生工具
大公司有厲害的程序員,優(yōu)秀的架構(gòu)師,但大量的小公司也有很多普通的程序員。在我這些年的工作經(jīng)歷中,也越來(lái)越深刻的感受到普通程序員的影響和力量。對(duì)于高階程序員,所謂八仙過(guò)海各有神通,各有各的成就,各有各的修養(yǎng),但程序員在達(dá)成較高的水平之前,有一些“自我修養(yǎng)”,是最基礎(chǔ)的,是普世的。
所以今天的話題面向的程序員,就是所有的正在寫(xiě)代碼或者曾經(jīng)寫(xiě)過(guò)代碼的程序員,也包括廣義上的程序員,例如項(xiàng)目經(jīng)理、架構(gòu)師等等。
做任何事都是有明確目的,那么
再談一談,程序員提高自我修養(yǎng)是為了什么?
程序?qū)懙暮糜腥顺绨荩忻米酉矚g?還是到博客、論壇、社區(qū)發(fā)表文章進(jìn)行分享獲得成就?我想這是少數(shù)人的追求,也是更高的追求,在這之前
我認(rèn)為,在中國(guó),程序員提高自我修養(yǎng)的目的,是為了
1、更好的融入工作,減少困難,增加成就
2、穩(wěn)步的提升能力,提高收入,達(dá)成財(cái)務(wù)自由
2、站在更高的層面看待自己的學(xué)習(xí)和工作,樹(shù)立更加適合的人生觀價(jià)值觀,家庭幸福,生活愉快
說(shuō)的更通俗一點(diǎn),就是用更加合理的方式和方法,賺取到更多的收入
說(shuō)了這么多廢話,進(jìn)入正題
何為程序員的自我修養(yǎng)?
正面論述很難說(shuō)清楚,反向描述可能更通俗易懂一些,自我修養(yǎng)的對(duì)立面是“沒(méi)有修養(yǎng)”,先說(shuō)一說(shuō)在這么多年的工作、學(xué)習(xí)、生活中,遇到的一些我認(rèn)為“沒(méi)有修養(yǎng)”的程序員形態(tài):
1、程序員小張遇到了一個(gè)開(kāi)發(fā)問(wèn)題,很著急,想到了有幾個(gè)群,于是到群里發(fā)了他的問(wèn)題,坐等回答,發(fā)現(xiàn)沒(méi)有人回答,就直接對(duì)話群主的QQ,群主也不回答,于是小張就搜索,突然搜到博客園有個(gè)帖子講解了相關(guān)話題,他看完就給博主留言,我的郵箱是:XXXXX@qq.com,麻煩博主把源碼發(fā)給我一下,謝謝。
2、程序員小張進(jìn)公司3個(gè)月了,老板布置了很多任務(wù),他覺(jué)得老板很沒(méi)人性,工資給的不高,加班也不給錢(qián),于是在寫(xiě)代碼的時(shí)候能省就省,客戶反饋有問(wèn)題也不主動(dòng)解決,敷衍為主,又過(guò)了一個(gè)月,跳槽了。
3、程序員小張正在寫(xiě)一個(gè)功能模塊,需要進(jìn)行某種加密,到百度搜到了一個(gè)編碼模塊,看不明白具體寫(xiě)了什么,但是放到程序里剛好適用,于是就這么原封不動(dòng)放進(jìn)去了。
4、程序員小張要對(duì)某個(gè)功能進(jìn)行研發(fā),項(xiàng)目經(jīng)理對(duì)他說(shuō),這個(gè)功能應(yīng)該能搜索到,你去搜搜看,小張就在百度搜啊搜,一天過(guò)去了啥都沒(méi)找到,項(xiàng)目經(jīng)理來(lái)到小張身邊坐下,換了個(gè)關(guān)鍵詞,1分鐘就搜到了解決方案。
5、程序員小張學(xué).NET已經(jīng)工作3年了,工資還是10000,和公司提漲工資也沒(méi)答應(yīng),想跳槽又猶豫,這時(shí)某個(gè)前輩對(duì)他說(shuō),你去看書(shū)吧,多看一些書(shū),例如 《Visual C# 從入門(mén)到精通》,《CLR via C#》《Javascript權(quán)威指南》等等,于是小張買回來(lái)了, 隨手翻了翻發(fā)現(xiàn)有些東西是他已經(jīng)會(huì)的,有些看不懂的好像又用不到,而且書(shū)這么厚,要不要浪費(fèi)時(shí)間去看呢?小張就這樣反復(fù)糾結(jié)了半年,依然每天上班工作,下班LOL,偶爾還抱怨一下工資低。
6、程序員小張到了一家新公司,在做一個(gè)項(xiàng)目實(shí)現(xiàn)某個(gè)功能時(shí),想起來(lái)以前做過(guò)這樣的功能,可是竟想不起怎么實(shí)現(xiàn)了,于是就到自己電腦上找文檔,找了好久也沒(méi)找到,只好放棄,最后又折騰了2天,終于還是把這個(gè)功能給實(shí)現(xiàn)了。
7、程序員小張某天非常不高興,因?yàn)樗捻?xiàng)目經(jīng)理和項(xiàng)目組的產(chǎn)品人員又變更需求了,新的需求又要對(duì)整個(gè)結(jié)構(gòu)進(jìn)行大的調(diào)整,小張很郁悶,到一個(gè)QQ里發(fā)泄情緒,說(shuō)了這個(gè)事,于是立馬,QQ群里面炸開(kāi)鍋了,程序員小李說(shuō),對(duì),產(chǎn)品就是狗日的!程序員小王說(shuō),對(duì),他媽的項(xiàng)目經(jīng)理整天高枕無(wú)憂,就知道壓榨開(kāi)發(fā)人員!程序員小孫說(shuō),是的是的,我上一家公司也是這樣,壓榨程序員,幸好我走了。就這樣,在一片罵聲中,幾個(gè)程序員心情舒暢了,小張開(kāi)心的去玩王者榮耀去了。
我想,有些人可能已經(jīng)明白我要說(shuō)什么,有些人可能還不明白,具體的話我也說(shuō)不出來(lái),只能用一句話來(lái)概括就是:
在編寫(xiě)代碼的過(guò)程中,善于學(xué)習(xí)、掌握方法、勤加思考、勤奮努力、持之以恒,長(zhǎng)此以往,在編程中,你會(huì)發(fā)現(xiàn)不一樣的自己。
以上這些還是比較抽象,那么
提升自我修養(yǎng)的具體方法有哪些?
程序員具體如何達(dá)成“較高的修養(yǎng)”,每個(gè)人各有自己的辦法,我無(wú)法說(shuō)到很細(xì),就和如何提高做人修養(yǎng)一樣,一句兩句話是說(shuō)不清楚的,但是有些說(shuō)法也通俗易懂,比如一個(gè)小孩,有教育良好的父母,父母彬彬有禮,小孩從小開(kāi)始接受正規(guī)教育,小學(xué)、初中、高中、大學(xué),然后文化課程和社會(huì)實(shí)踐良好,那么這個(gè)小孩最終的做人修養(yǎng),一定比沒(méi)有經(jīng)歷過(guò)這個(gè)過(guò)程的小孩更好一些。
同樣的,寫(xiě)程序也是如是,下面我就講一些最基本的、最淺顯易懂的學(xué)習(xí)方法和道理,我把它叫做:
程序員基礎(chǔ)的基礎(chǔ)
一個(gè)好的開(kāi)發(fā)人員,應(yīng)該能夠全面、高效、嚴(yán)謹(jǐn)?shù)娜ヌ幚砣魏诬浖绦蚝蜆I(yè)務(wù)問(wèn)題,成為一個(gè)好的開(kāi)發(fā),是一個(gè)很有意思的話題,不過(guò)無(wú)論這個(gè)話題如何開(kāi)展,基礎(chǔ)兩個(gè)字必不可少,雖然代碼量是衡量開(kāi)發(fā)能力的重要指標(biāo),但僅能夠熟練的進(jìn)行代碼編寫(xiě)是不夠的,更要能深刻的理解技術(shù)原理和業(yè)務(wù)邏輯,扎實(shí)的個(gè)人基礎(chǔ)和技術(shù)基礎(chǔ)往往會(huì)促進(jìn)代碼的編寫(xiě),更游刃有余的解決問(wèn)題。
下面說(shuō)的一些基礎(chǔ),可能絕大部分開(kāi)發(fā)人員都不會(huì)在意甚至忽略,但恰恰這些才是開(kāi)發(fā)大廈的基石。
1、科學(xué)基礎(chǔ)
成為開(kāi)發(fā)人員的過(guò)程不盡相同,有的是科班出身,有的是興趣愛(ài)好,還有的是專業(yè)機(jī)構(gòu)的培訓(xùn),在這個(gè)過(guò)程中,可能全面或者零散甚至沒(méi)有學(xué)習(xí)過(guò)計(jì)算機(jī)基礎(chǔ)學(xué)科,但無(wú)論是哪一種,想要成為更高層次的開(kāi)發(fā)人員,寫(xiě)出更高質(zhì)量的代碼,計(jì)算機(jī)基礎(chǔ)學(xué)科的學(xué)習(xí),是非常非常非常(重要的事情說(shuō)三遍)重要的。具體的來(lái)說(shuō),基礎(chǔ)學(xué)科在實(shí)踐應(yīng)用中,有如下幾門(mén)是一定需要的,按照學(xué)習(xí)順序排列如下
1)數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)課程通俗的說(shuō)就是告訴你如何用最基本的語(yǔ)言類型、變量,關(guān)鍵詞語(yǔ)句等,去處理各式各樣的邏輯問(wèn)題,我們稱之為算法,而日常編程中的各種問(wèn)題,例如排序、文件夾遍歷操作、數(shù)據(jù)庫(kù)查詢等,都可以在數(shù)據(jù)結(jié)構(gòu)課程中,找到對(duì)應(yīng)的數(shù)學(xué)原型。數(shù)據(jù)結(jié)構(gòu)課程的理解能力,也是一個(gè)人數(shù)學(xué)能力的體現(xiàn),數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)的好壞,是程序員水平差異的一個(gè)重要分水嶺,對(duì)于這一塊內(nèi)容的學(xué)習(xí),有如下建議:使用VB、C、C++、Pascal等語(yǔ)言,買一本相關(guān)語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法的書(shū),或者在網(wǎng)上下載相關(guān)的PDF電子書(shū),完整的學(xué)習(xí)一邊,并將書(shū)本中的所有案例親自編寫(xiě)運(yùn)行調(diào)試一遍,當(dāng)能夠領(lǐng)悟到某些日常編程中常見(jiàn)手法源于某些數(shù)據(jù)結(jié)構(gòu)和算法時(shí),就基本達(dá)到了學(xué)習(xí)效果。
所有編程語(yǔ)言的開(kāi)發(fā)以及應(yīng)用的運(yùn)行,都基于操作系統(tǒng),桌面編程中的大部分場(chǎng)景包括內(nèi)存、進(jìn)程、文件系統(tǒng)、網(wǎng)絡(luò)通訊、用戶界面等,都源于操作系統(tǒng)的定義和概念,完整的了解操作系統(tǒng)的起源和組成以及運(yùn)行邏輯,對(duì)多線程、復(fù)雜界面、文件管理以及一些難以正常理解編程思路等開(kāi)發(fā)中遇到的場(chǎng)景,有非常大的幫助,不僅幫助理解,也能掌握更多有效的程序?qū)懛ā>唧w可以買一本操作系統(tǒng)的書(shū)或者下載相關(guān)PDF電子書(shū),完整的瀏覽一遍,做到能夠結(jié)合實(shí)際編程場(chǎng)景來(lái)看待操作系統(tǒng)原理,就基本達(dá)到了學(xué)習(xí)效果。
3)數(shù)據(jù)庫(kù)
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),入門(mén)簡(jiǎn)單,深入?yún)s難,往往開(kāi)發(fā)人員能夠較快的掌握增刪改查、視圖、索引、存儲(chǔ)過(guò)程等基本數(shù)據(jù)庫(kù)操作,卻在編寫(xiě)復(fù)雜查詢、設(shè)計(jì)主外鍵、優(yōu)化字段、去除冗余等時(shí),出現(xiàn)只會(huì)依葫蘆畫(huà)瓢卻不能自主思考擴(kuò)展的狀況。究其原因還是沒(méi)能了解關(guān)系數(shù)據(jù)庫(kù)的根本原理,而數(shù)據(jù)庫(kù)這一門(mén)課程,系統(tǒng)的闡述了關(guān)系型數(shù)據(jù)庫(kù)的來(lái)龍去脈,了解其中的數(shù)學(xué)原理或邏輯基礎(chǔ)所在,對(duì)提升數(shù)據(jù)庫(kù)編程水平有質(zhì)的影響。建議也是買一本數(shù)據(jù)庫(kù)的相關(guān)書(shū)籍或者下載PDF電子書(shū),能夠把熟練的把第一范式、第二范式等數(shù)據(jù)庫(kù)課程的基本知識(shí)點(diǎn)與數(shù)據(jù)庫(kù)編程場(chǎng)景建立起關(guān)聯(lián),也基本達(dá)到了學(xué)習(xí)效果。
4)編譯原理
編譯原理是編程語(yǔ)言以及各類語(yǔ)言編譯器的科學(xué)基礎(chǔ),可以說(shuō)編譯原理創(chuàng)造了世界上的幾乎所有的IT應(yīng)用,學(xué)習(xí)編譯原理的基礎(chǔ)是數(shù)據(jù)結(jié)構(gòu)和算法,因此編譯原理的學(xué)習(xí)要花費(fèi)更多的時(shí)間和精力,由于現(xiàn)代高級(jí)編程語(yǔ)言的編譯器,在代碼優(yōu)化、資源優(yōu)化方面已經(jīng)做的足夠智能,因此,編譯原理的學(xué)習(xí)對(duì)實(shí)戰(zhàn)的影響越來(lái)越小,但是正所謂本盛末榮,如果認(rèn)為自己對(duì)數(shù)據(jù)結(jié)構(gòu)和算法的學(xué)習(xí)達(dá)到了一個(gè)較高的水平和狀態(tài),可以在編譯原理學(xué)習(xí)上進(jìn)一步深入,最終把自己和普通程序員拉開(kāi)更大的差距。
2、英語(yǔ)能力
英語(yǔ)的天然特性和字母長(zhǎng)度還有學(xué)科發(fā)展的歷史因素,決定了編程語(yǔ)言一定是基于英語(yǔ)的,在編程過(guò)程中,從語(yǔ)言的關(guān)鍵詞到文檔的內(nèi)容又或是搜索引擎的搜索結(jié)果,都不可避免的會(huì)遇到英文。大部分編程人員,都具備英語(yǔ)四級(jí)左右的英文基礎(chǔ),卻由于非專業(yè)以及工作環(huán)境原因,逐漸疏遠(yuǎn)甚至完全淡忘了英語(yǔ)。而實(shí)際操作中,大部分編程語(yǔ)言資料都是英文,在線編程問(wèn)答內(nèi)容也是英文,因此,很有必要把英語(yǔ)能力重新恢復(fù)到一個(gè)不用太高但行之有效的水平,達(dá)到如下效果:
1)對(duì)自己所使用語(yǔ)言,每一個(gè)關(guān)鍵詞都知道具體的英文翻譯、邏輯含義以及讀音。
2)對(duì)于自己使用語(yǔ)言所涉及到的相關(guān)方法、類庫(kù)、框架、工具等,能知道其中每一個(gè)方法、過(guò)程以及參數(shù)關(guān)鍵詞等的英文翻譯、邏輯含義以及讀音。
3)對(duì)常見(jiàn)的編程邏輯和核心關(guān)鍵詞,能夠用英文組織問(wèn)題的描述,最簡(jiǎn)答的也行,只要能被搜索引擎讀懂就可以。比如如何在C#中把整形轉(zhuǎn)換為字符串類型這個(gè)問(wèn)題,最簡(jiǎn)易的英文描述就是 C# Integer Covert To String。
4)在自己技術(shù)知識(shí)范圍內(nèi)的任何的英文的技術(shù)手冊(cè)、文檔、文章或是問(wèn)題描述,能夠讀懂8成的內(nèi)容含義,能夠讀懂完整的技術(shù)含義。
3、搜索方法
任何一個(gè)開(kāi)發(fā)人員,都應(yīng)當(dāng)具備搜索能力,甚至是一定要具備搜索能力,搜索引擎的寶藏,是無(wú)窮無(wú)盡的,同樣具備搜索意識(shí)的不同程序員,卻因?yàn)樗阉骷记傻牟町愖罱K在程序開(kāi)發(fā)質(zhì)量、項(xiàng)目實(shí)施效率、甚至是工程產(chǎn)品質(zhì)量上出現(xiàn)數(shù)倍的差異,因此,掌握高效、先進(jìn)、靈活的搜索方法和技巧,是非常非常非常(重要的事情說(shuō)三遍)有用的。其中主要的方法介紹如下:
1)搜索源選擇
雖然英文的編程資料更為準(zhǔn)確高效,但中文的編程資料數(shù)量上卻占優(yōu),因此遇到問(wèn)題第一搜索選擇還是百度
谷歌對(duì)于專業(yè)中文詞匯的處理能力有時(shí)候甚至比百度還要強(qiáng),而且谷歌能搜出大量的英文資源,因此谷歌也是首選之一,但是由于谷歌被封鎖,因此需要進(jìn)行VPN、SSH等FQ操作,或者在百度搜索“谷歌鏡像”關(guān)鍵詞,通過(guò)谷歌的鏡像網(wǎng)站進(jìn)行訪問(wèn)。
除了搜索引擎,專業(yè)的技術(shù)網(wǎng)站、論壇、社區(qū)也是非常直接有效的搜索源,比如國(guó)外的StackOverFlow網(wǎng)站,國(guó)內(nèi)的Cnblogs博客園、OSChina開(kāi)源中國(guó)等,都具備搜索功能,將問(wèn)題關(guān)鍵詞輸入其中,也許也會(huì)很快的得到相關(guān)答案。
對(duì)于QQ群,建議不要使用,除非QQ群主或者成員是非常閑或者非常非常熱心的人,否則在QQ群詢問(wèn)技術(shù)問(wèn)題,是非常低效率的搜索方式。
2)關(guān)鍵詞構(gòu)造
搜索關(guān)鍵詞的構(gòu)造,直接影響搜索效率和正確結(jié)果的過(guò)濾,沒(méi)有什么特別的技巧,關(guān)鍵在于搜索積累,但是總體遵循的原則是,準(zhǔn)確和簡(jiǎn)潔,比如當(dāng)出現(xiàn)一個(gè)描述,如何用C#對(duì)XML進(jìn)行序列化和反序列化,非常愚蠢的關(guān)鍵詞構(gòu)造就是“如何用C#對(duì)XML進(jìn)行序列化和反序列化”,而正確高效的關(guān)鍵詞則是“C# XML 序列化 反序列化”,或者在谷歌里面搜索則是“C# XML Serialization”。在平時(shí)的編程中,一定要注意相關(guān)方法和經(jīng)驗(yàn)的積累
3)聯(lián)想搜索
聯(lián)想搜索,不屬于搜索引擎的范疇,卻是在搜索中很有用的高級(jí)技巧,舉一個(gè)通俗的例子,比如想使用C#,利用某個(gè).NET類處理一種HTTP通訊,但是一直搜索不到完美的結(jié)果,不過(guò)換個(gè)思路,考慮到VB.NET也是.NET體系,和C#完全相通,那么也可以試著用VB.NET關(guān)鍵詞進(jìn)行搜索,搜索到完美代碼后再臨摹成C#代碼。這樣的聯(lián)想搜索,不僅能夠幫助搜索正確結(jié)果,也是對(duì)大腦思維的訓(xùn)練,值得多多嘗試。
4)資源搜索
開(kāi)源的框架、產(chǎn)品、工具、控件等開(kāi)發(fā)輔助類東西越來(lái)越多,穩(wěn)健性和迭代性越來(lái)越強(qiáng),去尋找一款成熟的工具或者插件,也成為了大量開(kāi)發(fā)者的必備方法和技能,而如何高效的搜索出想要的資源,也成為了一門(mén)學(xué)問(wèn),其核心方法就在于知曉資源網(wǎng)站的地址,常見(jiàn)的例如有開(kāi)源中國(guó)、Github、CSDN下載、pudn等。資源類網(wǎng)站需要平時(shí)多積累,到用到的時(shí)候會(huì)非常關(guān)鍵。
4、思維模式
開(kāi)發(fā)人員,一定要養(yǎng)成業(yè)務(wù)思維的模式,所謂的業(yè)務(wù)思維,就是在做任何一個(gè)項(xiàng)目的時(shí)候,寫(xiě)任何代碼前,需要對(duì)項(xiàng)目本身的業(yè)務(wù)概念和業(yè)務(wù)邏輯甚至業(yè)務(wù)流程都要有一個(gè)全面的學(xué)習(xí)和理解,這雖然不是一個(gè)項(xiàng)目的強(qiáng)制要求,卻是一個(gè)很好的開(kāi)發(fā)習(xí)慣,無(wú)論自己的覺(jué)得是開(kāi)發(fā)者還是測(cè)試員又或是技術(shù)總監(jiān),掌握了業(yè)務(wù)原理,才能夠更好的設(shè)計(jì)或閱讀項(xiàng)目的數(shù)據(jù)結(jié)構(gòu)和流程結(jié)構(gòu)。程序員的思維往往和用戶或者客戶是不一致的,擺脫技術(shù)思維模式,習(xí)慣于用業(yè)務(wù)思維解決問(wèn)題的程序員,不一定最優(yōu)秀,但一定是一個(gè)很容易溝通的程序員
5、工作與編程習(xí)慣
有的人說(shuō)愛(ài)干凈浪費(fèi)時(shí)間,所以不修邊幅,但歸根結(jié)底這還是習(xí)慣問(wèn)題,當(dāng)養(yǎng)成清潔衛(wèi)生的習(xí)慣并使之成為生活慣性時(shí),往往就不會(huì)耗費(fèi)更多的時(shí)間,反而顯得干凈干練。寫(xiě)程序同樣如是,有一些編程習(xí)慣,看似不足為道,看似浪費(fèi)時(shí)間,可是如果堅(jiān)持下去,最終都能收到意想不到的奇效。下面列舉一些特別重要的習(xí)慣。
1)快捷鍵的使用
無(wú)論是使用Windows、Linux操作系統(tǒng),還是在IDE中,快捷鍵都是系統(tǒng)本身的標(biāo)配,事實(shí)上,Ctrl+C、V這樣的操作,大部分人都能嘗到在節(jié)省時(shí)間上的甜頭,把這個(gè)概念進(jìn)一步擴(kuò)散,如果在IDE中編寫(xiě)代碼,除了代碼本身,將其余所有的鼠標(biāo)操作、鍵盤(pán)定位操作,都用快捷鍵來(lái)代替的話,在時(shí)間上將會(huì)有數(shù)量級(jí)的節(jié)省,然而看上去這么好的事情,真正堅(jiān)持去執(zhí)行并形成習(xí)慣的人屈指可數(shù),因此,在初期的改變習(xí)慣,記住快捷鍵,會(huì)是一個(gè)長(zhǎng)期的過(guò)程,需要不斷的堅(jiān)持。
2)代碼注釋
一個(gè)開(kāi)發(fā)人員隨著年齡和經(jīng)驗(yàn)的增長(zhǎng),所參與的項(xiàng)目,再也不是靠一個(gè)人或者幾個(gè)人就能完成的。系統(tǒng)的重構(gòu)、代碼的重構(gòu)、工作的交接、對(duì)新進(jìn)人員的培訓(xùn)等等類似的事情,會(huì)越來(lái)越多的遇到,這些事情無(wú)一例外都會(huì)把已經(jīng)寫(xiě)過(guò)的代碼重新或者重復(fù)閱讀,如果在初始編寫(xiě)代碼時(shí),就做到完整、清晰明了的代碼注釋,對(duì)后續(xù)工作會(huì)有巨大的幫助。不僅提高工作效率,還能增強(qiáng)合作好感。事實(shí)上,就算只是自己看自己的代碼,如果有注釋,也能加深印象,縮短代碼查找時(shí)間。因此,任何開(kāi)發(fā)人員,都應(yīng)該養(yǎng)成良好的代碼注釋習(xí)慣。
優(yōu)秀的代碼注釋?xiě)?yīng)該能做到:
每一個(gè)函數(shù)、每一個(gè)屬性甚至是變量的劃分,都可以找到對(duì)應(yīng)的解釋。
多使用越來(lái)越被IDE支持的XML注釋方式,不僅有注釋文字,更有詳細(xì)的參數(shù)描述。
對(duì)程序結(jié)構(gòu)、模塊、組成部分劃分等也加以注釋
3)命名規(guī)則
具備一定規(guī)模的軟件公司,在代碼編寫(xiě)上都有一套自己的命名規(guī)則,涵蓋項(xiàng)目、模塊、函數(shù)、變量等等,標(biāo)準(zhǔn)化命名的好處不言而喻,然而被動(dòng)、被迫去遵守命名規(guī)則和主動(dòng)習(xí)慣于使用命名規(guī)則是完全不一樣的。一個(gè)優(yōu)秀的開(kāi)發(fā)人員,應(yīng)當(dāng)發(fā)自內(nèi)心的希望各種代碼命名都是有規(guī)則的,易讀的,而不是糾結(jié)于命名規(guī)則會(huì)增加碼字長(zhǎng)度。
4)不將就的編程邏輯
所謂不將就的編程邏輯,其對(duì)立面就是不講究的編程邏輯,不講究的編程,不僅是一種很壞的編程習(xí)慣,也體現(xiàn)了低下的生活品質(zhì),很多開(kāi)發(fā)人員,因?yàn)閭€(gè)人習(xí)慣、趕工期、客戶要求不高等多種原因,在編程時(shí)特別隨意,體現(xiàn)在比如為了實(shí)現(xiàn)某個(gè)功能,百度出一段代碼,直接套用,10行的代碼只理解8行,有兩行看不懂也放到程序里去使用,很多這樣的小細(xì)節(jié),就好比在項(xiàng)目中埋下了無(wú)數(shù)的定時(shí)炸彈,不僅有很大概率形成返工,更是為項(xiàng)目埋下了風(fēng)險(xiǎn)。編程人員,應(yīng)當(dāng)有擔(dān)當(dāng)有態(tài)度,養(yǎng)成不將就的編程邏輯,不勉強(qiáng)自己,也不輕視程序。
5)數(shù)據(jù)備份
誤刪、誤操作、電腦斷電、文件遺失等等狀況是每一個(gè)開(kāi)發(fā)按人員都可能遇到的問(wèn)題,如果不希望辛勤的勞作被浪費(fèi),不希望偶然的意外影響工作,那做好備份是必不可少的,在較大規(guī)模的公司,會(huì)有完整的源代碼管理以及信息安全防護(hù),而無(wú)論是在大公司工作,還是身處較小公司或者在實(shí)現(xiàn)個(gè)人代碼價(jià)值時(shí),都要做好代碼和文檔的數(shù)據(jù)備份,備份方式的選擇靈活多樣,有使用在線的CVS、SVN、TFS、Git源代碼管理,也可以手工拷貝文件至云空間或者本地硬盤(pán),甚至可以在個(gè)人電腦上組成RAID磁盤(pán)陣列等等,養(yǎng)成周期性、規(guī)律性的備份習(xí)慣。
6)郵件工作方式
溝通是進(jìn)步的源泉,如果說(shuō)開(kāi)發(fā)小組的熱烈討論是性格和激情的體現(xiàn),那郵件的工作方式也是另一種穩(wěn)重和高效。無(wú)論是公司層面的工作溝通,還是開(kāi)發(fā)小組的問(wèn)題交流,郵件的作用包括問(wèn)題正規(guī)化描述、工作留檔留痕、工作流程流轉(zhuǎn)、責(zé)任分工明確等等,習(xí)慣于將重大問(wèn)題、重要事項(xiàng)通過(guò)郵件的方式與同事、主管等進(jìn)行溝通,將會(huì)非常有助于團(tuán)隊(duì)協(xié)作。
以上這些方法,是我這么多年來(lái)的感受和體會(huì),也給了我很大的幫助,希望也能夠幫助到大家,不能說(shuō)一定可以“提升修養(yǎng)“,但也是”提升修養(yǎng)”的有效方式。
最后還想再說(shuō)一說(shuō)堅(jiān)持的力量
分享一個(gè)真實(shí)的小故事,公司有兩個(gè)開(kāi)發(fā)人員,1個(gè)做.NET好多年了,但是很油滑,做事能省就省,抓到可以偷懶的機(jī)會(huì)就偷懶,讓他學(xué)點(diǎn)新知識(shí)新方法總是自以為是覺(jué)得自己都會(huì);還有1個(gè)毫無(wú).NET基礎(chǔ),一直做低級(jí)語(yǔ)言開(kāi)發(fā),從15年才開(kāi)始學(xué)習(xí).NET和Web前端,但是做事很積極,幾乎每天都自己抽空學(xué)習(xí),遇到不懂的都琢磨清楚,遇到不會(huì)的場(chǎng)景就上網(wǎng)或者找人尋求幫助,項(xiàng)目結(jié)束后還反復(fù)思考有什么地方可以改進(jìn)。從15年到現(xiàn)在,短短1年,這兩個(gè)人的發(fā)展已經(jīng)是天壤之別,工資差距也越來(lái)越大,后者已經(jīng)能夠獨(dú)自操盤(pán)中小型軟件外包項(xiàng)目,而前者還在混著日子,以后他們各自的發(fā)展也完全可以預(yù)見(jiàn)。
我想說(shuō)的是,本篇里面分享的一些道理和方法,都是通俗易懂的,就和常聽(tīng)到的例如101%和99%的365次方的故事、1萬(wàn)小時(shí)的道理等等一樣,但真正去認(rèn)真思考并實(shí)踐的屈指可數(shù),也許,堅(jiān)持才是程序員最大的修養(yǎng),和各位共勉!
-
程序員
+關(guān)注
關(guān)注
4文章
952瀏覽量
29804
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論