亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一篇關(guān)于程序員性格的文章第2/3頁

 更新時(shí)間:2008年04月19日 20:17:29   作者:  
軟件開發(fā)中人們很少注意個(gè)人性格問題。自從 1965年Edsger Dijkstra的有里程碑意義的文章“程序開發(fā)是一種人類活動(dòng)”發(fā)表以來,程序員性格被認(rèn)為是合理的和有成效的研究領(lǐng)域,雖然有些題目如“大橋建筑者的心理”和“對律師行為的研究實(shí)驗(yàn)”看起來可能是荒唐的,而在計(jì)算機(jī)領(lǐng)域,“計(jì)算機(jī)編程中的心理”和“對程序員行為的研究實(shí)驗(yàn)”等題目則是常見的。

    前二個(gè)方面——承認(rèn)你不知道一些事情或承認(rèn)你犯了一個(gè)錯(cuò)誤是你謙虛的反映。如果你不懂裝懂你又怎么能指望學(xué)到新東西呢?你最好是假裝自己知之甚少,聽別人的解釋,向他們學(xué)習(xí)新的東西,并評估他們是否真正了解其正在談?wù)摰臇|西。 

    你應(yīng)對自己的能力作某種程度的估計(jì),如果你對自己的評價(jià)很完美,這可是一個(gè)不妙的信號(hào)。 

拒絕承認(rèn)錯(cuò)誤是一個(gè)令人討厭的習(xí)慣,如果Sally拒絕承認(rèn)錯(cuò)誤,她看起來相信自己沒有錯(cuò),可能會(huì)使其它人相信她確實(shí)是無辜的,但是事實(shí)證明Sally出錯(cuò)誤了,這樣,每個(gè)人都知道她犯了錯(cuò)誤。錯(cuò)誤正如潮流一樣是一種復(fù)雜的活動(dòng),如果她在過去沒有發(fā)生過錯(cuò)誤,誰也不

會(huì)將錯(cuò)誤歸咎于她。 

    如果她拒絕承認(rèn)錯(cuò)誤,到頭來她只能自食其果。其他人都知道他們在同一個(gè)不誠實(shí)的人工作。這比僅犯一個(gè)錯(cuò)誤更令人反感。如果你犯了一個(gè)錯(cuò)誤,你應(yīng)迅速主動(dòng)地承認(rèn)錯(cuò)誤。 

    對編譯器錯(cuò)誤信息不懂裝懂是另外一個(gè)常見錯(cuò)誤。如果你不理解某一編譯警告信息或你認(rèn)為時(shí)間太緊迫來不及檢查,你想想這是不是真正浪費(fèi)時(shí)間?編譯器將問題明白無誤地向你展示出來,而你卻不試圖解決問題,我碰到過不少人在調(diào)試過程中請求幫助的事,我問他們是否有一個(gè)完好的編譯器,他們回答是。于是開始解釋問題的癥狀,我說:“這看起來像是未對指針進(jìn)行初始比。但是編譯器應(yīng)對此給出了警告信息?!彼麄兙驼f:“哦,編譯器確實(shí)給出了警告信息,我們以為它是指其它事情?!蹦阕约核龅腻e(cuò)誤難以蒙蔽別人,也更難以愚弄計(jì)算機(jī),所以你用不著浪費(fèi)時(shí)間這樣做。 

    另外一種疏忽是當(dāng)你并不完全了解程序時(shí),你“編譯它看是否能運(yùn)行”。在這種條件下,其實(shí)并不意味著程序能運(yùn)行,因?yàn)檫B你自己都不清楚程序的有關(guān)情況。請記住,測試僅能發(fā)現(xiàn)錯(cuò)誤的存在,而不能保證一定不存在某種錯(cuò)誤。如果你不理解程序,你就不能進(jìn)行深入的測試,你如果覺得應(yīng)編譯一下程序以便了解程序的運(yùn)算情況的話,這可是一個(gè)不妙的信號(hào),這可能意味著你不清楚在干些什么。在將你的程序編譯之前你應(yīng)對其有一個(gè)深刻的理解。 

    狀態(tài)報(bào)告也同樣是一個(gè)令人反感的領(lǐng)域。如果程序員在最后50%的項(xiàng)目時(shí)說,程序中  90%是完整可靠的,他們將聲名狼藉。問題在于你對自己的進(jìn)度缺乏了解,你應(yīng)對你的工作加強(qiáng)了解。但是,你為了迎奉上司而不愿說出真實(shí)情況的話,可就不同了。一般來說上司都愿意聽到對項(xiàng)目狀態(tài)的真實(shí)報(bào)告,即使不是他們所希望聽到的,如果你的觀察和見解是中肯的,你應(yīng)客觀地將其說出來,上司需要有準(zhǔn)確的信息以便協(xié)調(diào)各種開發(fā)活動(dòng),而充分的合作是必需的。 

    和不準(zhǔn)確的狀態(tài)報(bào)告有關(guān)的一個(gè)問題是不正確的估計(jì)。典型的情況是這樣:上司問Bert要花多少時(shí)間才能開發(fā)出一個(gè)新的數(shù)據(jù)庫產(chǎn)品。Bert和一些程序員交談了一下,討論了一些問題,最后認(rèn)為需8個(gè)程序員和6個(gè)月的時(shí)間,但是他的上司說:“這并不是我們所需要的,你能不能使用較少的程序員在短時(shí)間內(nèi)完成工作?”Bert考慮了一段時(shí)間,并認(rèn)為可以通過削減培訓(xùn)時(shí)間和假期以及讓每個(gè)人的工作時(shí)間稍微延長一點(diǎn)來達(dá)到上司的要求。他于是作出了需6個(gè)程序員和4個(gè)月時(shí)間的估計(jì),他的上司說:“這就行了。這是一個(gè)相對較為低優(yōu)先級的項(xiàng)目。你應(yīng)及時(shí)完成它,因?yàn)轭A(yù)算不允許你超時(shí)。”Bert所犯錯(cuò)誤在于,他沒有認(rèn)識(shí)到評估是不可商量的,他可以將估計(jì)作得更為準(zhǔn)確,但是他和老板的商量結(jié)果并不能改變開發(fā)一個(gè)項(xiàng)目所需的時(shí)間。 IBM公司的 Bill Weimer說;“我們發(fā)現(xiàn)技術(shù)人員一般都能準(zhǔn)確地估計(jì)項(xiàng)目。問題在于他們能否堅(jiān)持自己的決定;他們需要學(xué)會(huì)堅(jiān)持自己的意見?!盉ert許諾在4個(gè)月里交付產(chǎn)品而實(shí)際上6個(gè)月才交付產(chǎn)品,肯定會(huì)使他的老板不高興的。時(shí)間一長,他可能會(huì)因妥協(xié)而失去信任的。否則,他會(huì)因堅(jiān)持自己的估計(jì)而得到尊敬的。 

    如果上司施加壓力要改變你的估計(jì),你應(yīng)認(rèn)識(shí)到?jīng)Q定要怎樣作是上司職權(quán)范圍內(nèi)的事。你可以說:“看,這是項(xiàng)目的開銷,我無法說此開支對本公司是否值得——這是你的工作。我不能和你‘商量”項(xiàng)目所花的時(shí)間,這正如我們不能協(xié)商確定一里究竟有多少英尺一樣——這是不可變更的。你不能商定自然界的規(guī)律,我們只能商定本項(xiàng)目中影響進(jìn)度的各方面,然后重新評估。我們能減少一些特征,降低性能,分階段開發(fā)項(xiàng)目?;蛘呤鞘褂酶俚娜说珪r(shí)間延長一點(diǎn),或者是使用稍多的人,而相應(yīng)地減少一些時(shí)間。”

    我曾在一次軟件開發(fā)管理討論會(huì)上聽到一個(gè)奇怪的說法。主講者是一本銷售很好的軟件工程管理書籍的作者。一個(gè)聽眾問:“你的上司讓你評估某一項(xiàng)目,你知道當(dāng)你得出準(zhǔn)確的評估時(shí)你的上司可能認(rèn)為代價(jià)太高而放棄項(xiàng)目開發(fā)。這時(shí)你認(rèn)為應(yīng)怎么辦?”主講者回答說,當(dāng)你說服你的上司做出開發(fā)項(xiàng)目的決定時(shí),他們就對整個(gè)情況了如指掌了。 

    這是一個(gè)錯(cuò)誤的回答。你的上司是負(fù)責(zé)整個(gè)公司的運(yùn)轉(zhuǎn)的。如果開發(fā)某一軟件需10O000美元而你的估計(jì)是200000美元,你的公司就不會(huì)開發(fā)軟件。這是要由上司做出決定的。上面這位主講者對項(xiàng)目的開支說假話,告訴上司將比實(shí)際的要少,他這是在損害上司的權(quán)威,如果你認(rèn)為項(xiàng)目是有前途的,它能為公司帶來新的重大突破,或能提供有價(jià)值的培訓(xùn),你應(yīng)將其說出來。你的上司也會(huì)考慮這些因素的。你哄騙上司做出錯(cuò)誤的決定將會(huì)使公司蒙受損失。如果你失去了你的工作,你將會(huì)明白你最終得到了什么。 

5  交流和合作

    真正優(yōu)秀的程序員應(yīng)學(xué)會(huì)怎樣和別人工作和娛樂,編寫可讀代碼是對程序員作為組中一員的要求之一。 

    計(jì)算機(jī)也就同其它人一樣能讀懂你的代碼,但是它要比其它人更能閱讀質(zhì)量差的代碼。作為可讀性原則,你應(yīng)將修改你的代碼的人時(shí)刻記在心上。開發(fā)程序首先應(yīng)同程序員交流,其次則是和計(jì)算機(jī)交流。 

    絕大多數(shù)高水平程序員喜歡使自己程序的可讀性強(qiáng),并抽出充足的時(shí)間這樣作。雖然只有一些人能堅(jiān)持到底,而且其中一些人還是高水平的代碼編寫者,對開發(fā)中程序員級別的了解,有助于解釋什么地方適合于此原則: 

    級別1:初學(xué)者 

    初學(xué)者是能使用一種語言基本能力的程序員,這樣的人能夠使用子程序、循環(huán)、條件語句和其它許多語言特征。 

    級別2:中間者 

    中間級程序員有使用多種語言的能力,并且至少非常熟悉某一種語言。 

    級別3:專家 

    編程專家對其語言或環(huán)境或?qū)@二者有著很深的造詣,這種級別的程序員對公司有價(jià)值的,而且有些程序員往往就停留在這個(gè)水平上。 

    級別4:大師 

    大師有著專家那樣的專業(yè)知識(shí),并能意識(shí)到編程只是15%和計(jì)算機(jī)交流,其余85%是和人打交道。一般程序員只有30%的時(shí)間甚至更少。大師所編寫的代碼與其說是給計(jì)算機(jī)看倒不如說是給人看的。真正的大師級程序員所編寫的代碼是十分清晰易懂的,而且他們注意建立有關(guān)文檔。他們也不想浪費(fèi)其精力去重建本來用一句注釋就能說清楚的代碼段的邏輯結(jié)構(gòu)。 

    一位不強(qiáng)調(diào)可讀性的高水平代碼者可能停留在級別3的水平上,但是問題還不止如此。依作者本人的經(jīng)驗(yàn),人們編寫不可讀代碼的主要原因在于他們所編代碼質(zhì)量較差。他們并不是自言自語地說:“我所編代碼不好,所以我要使其難以讀懂”,而是他們并不能完整地理解自己的代碼以致于不能使其是可讀的,這就使他們只能停留在1或2級的水平上。我所見的最差的代碼是由一個(gè)任何人看了她的程序后都會(huì)望而生畏的人所編寫的。最終,她的上司威脅說如她再

不改正就要解雇她。她的代碼是不作注釋的,并且其程序中充滿了如x,xx,xxx,xx1和xx2這樣的全局變量。她的代碼給了她大量的機(jī)會(huì)顯示她的改錯(cuò)能力。 

你不必為自己是初學(xué)者或中間者而內(nèi)疚,你同樣不必為自己是專家而不是大師自愧,在你知道怎樣提高自己的水平后,你倒是應(yīng)為自己停留在初學(xué)者或?qū)<业乃缴嫌卸嚅L時(shí)間而內(nèi)疚。 

6  創(chuàng)造力和紀(jì)律

    當(dāng)我走出校門時(shí),我自認(rèn)為是世界上最好的程序員。我會(huì)編輯令人容忍的井字游戲程序,也能用 5種不同的計(jì)算機(jī)語言編寫一個(gè) 1000行的WORKED程序。然后我進(jìn)了 Real World 公司。我在 Real World 公司的第一個(gè)任務(wù)是閱讀和理解一個(gè) 200000行的 Fortran程序,然后我使其運(yùn)行速度提高了2倍。任何真正的程序員將會(huì)告訴你所有結(jié)構(gòu)化編碼將無助于你解決問題。 

                                         “Real Programmers Don't write Pascal” 

    向一位剛走出校門的計(jì)算機(jī)科學(xué)畢業(yè)生解釋為何需要約定和工程紀(jì)律是困難的。當(dāng)我還是一個(gè)大學(xué)生的時(shí)候,我所編寫的最大的代碼是5O0行的可執(zhí)行代碼,作為一個(gè)專業(yè)程序員,我也已編寫了許多小于500行的實(shí)用工具,但是一般項(xiàng)目的長度為5000到25000行,并且我參加過超過50萬行的項(xiàng)目的開發(fā)工作,這種類型的工作不是需要較高的技巧,也不需要使用新的技巧。雖然一些有創(chuàng)造性的程序員將各種標(biāo)準(zhǔn)和約定視為對其創(chuàng)造力的阻礙,但是,對大項(xiàng)目來說,如果沒有標(biāo)準(zhǔn)和約定,項(xiàng)目的實(shí)現(xiàn)是不可能的,而此時(shí)要發(fā)揮創(chuàng)造性也是不可能的。不要在一些無關(guān)緊要的領(lǐng)域建立約定,這樣你就可在你認(rèn)為值得的地方集中發(fā)揮你的創(chuàng)造力。 

    McGarry和 Pajerski在對美國宇航局的軟件工程實(shí)驗(yàn)室過去15年的工作回顧中說,強(qiáng)調(diào)紀(jì)律的方法和工具是非常有效的。許多有很高創(chuàng)造力的人都能很好地遵守紀(jì)律,高水平的建筑師在材料的物理性能、時(shí)間和代價(jià)的限定范圍內(nèi)進(jìn)行工作。藝術(shù)家同樣如此,許多看過Lenoard的設(shè)計(jì)的人,都為他在細(xì)節(jié)上對約定的遵守產(chǎn)生由衷的敬重。當(dāng)米開朗琪羅設(shè)計(jì)天花板時(shí),使用了各種均衡的幾何形式如三角形、圓周和正方形,他按一定層次將以上三種圖形安排在三個(gè)區(qū)域,如果沒有自我約束和結(jié)構(gòu),這300個(gè)人物的排列將是混亂的而不是有機(jī)地結(jié)合在一起的藝術(shù)杰作。 

一個(gè)杰出的程序員需要遵守許多規(guī)則。如果你在開始編碼之前不分析需求就進(jìn)行設(shè)計(jì),你將在編碼過程中學(xué)不到關(guān)于項(xiàng)目的許多東西,你工作的結(jié)果看起來更像一個(gè)三歲小孩的手指畫,而不是一件藝術(shù)作品。 

7  懶 惰

懶惰表面形式有以下幾種: 

Ÿ  拖延自己討厭的工作 

Ÿ  迅速地將自己討厭的任務(wù)做完以擺脫任務(wù) 

Ÿ   編寫一個(gè)工具來完成自己討厭的工作以解脫自己 

 

    當(dāng)然,有一些懶惰形式要比其它方式好一些。第一種方式是沒有任何益處的。你可能有這樣的體會(huì):你常?;ㄙM(fèi)幾小時(shí)來做一些沒必要作的工作,而不愿面對自己所無法避免的次要的

工作,我討厭數(shù)據(jù)輸入,但是許多程序需要少量的數(shù)據(jù)輸入。別人都知道我已拖延了數(shù)天的工作僅因?yàn)闉榱送涎訜o法擺脫的用手工輸入幾個(gè)數(shù)據(jù)的任務(wù),這種習(xí)慣是“真正的懶惰”,你編譯某一子程序以檢查有關(guān)情況,這樣你可以避免人工檢查程序同樣也是一種懶惰行為。 

    這些小任務(wù)并不像看起來那樣令人反感,如果你養(yǎng)成馬上完成這些任務(wù)的習(xí)慣你就能克服拖延這種懶惰。這種習(xí)慣叫“明懶惰”——懶惰的第二種方式,你仍然是懶惰,但是你是通過在自己所討厭問題上花費(fèi)盡量少的時(shí)間來避開問題的。 

    第三種選擇是編寫工具來做這令人討厭的工作。這是“長期懶惰”。它無疑是懶惰中最有積極性的一種形式,只要你通過編寫工具最終節(jié)省了時(shí)間,通過討論可知,一定程度的懶惰是有益的。 

當(dāng)你不是透過玻璃看問題的時(shí)候,你就看到了懶惰的另一方面?!摆s著做”或“努力”并不能發(fā)出炫目的光芒。趕著做是一種多余和沒有必要的努力。它只是說明你的焦急而不是你進(jìn)行工作的努力程度。在有效編程中最為重要的現(xiàn)象是人們在思考中往往顯得并不忙。如果我和一位看起來一直很忙的程序員一起工作,我將認(rèn)為他并不是一位好的程序員,因?yàn)樗⒉皇窃谑褂脤λ麃碚f是最有價(jià)值的工具和自己的頭腦。 

8  不是你想象中那樣起作用的性格

“趕著做”并不是唯一的一種看起來可能受敬重而實(shí)際上并不起多大作用的性格。 

堅(jiān)持 

    依賴于環(huán)境,“堅(jiān)持”可能是一筆財(cái)富也可能是一種不利條件,和其它許多多義概念一樣,對它有不同的解釋,這取決于你認(rèn)為它是一種好的特性或壞的。如果你想將堅(jiān)持定義為壞的性質(zhì),你可能說它是“頑固”,如果你認(rèn)為是一種好的品格,你可稱其為“堅(jiān)強(qiáng)”或“堅(jiān)持”。 

    在大多數(shù)情況下,軟件開發(fā)中的堅(jiān)持是頑固的意思,在你碰到某段新代碼時(shí),你再固執(zhí)己見并不是什么好事。你應(yīng)試著用另一個(gè)子程序,用另一種編碼方法,或返回原來的地方,當(dāng)某種方法并不起作用時(shí),你應(yīng)換用另一種方法。 

    在調(diào)試中,當(dāng)你終于發(fā)現(xiàn)一個(gè)煩擾你達(dá)4小時(shí)之久的錯(cuò)誤時(shí),你一定感到非常滿意。但是如果你在一段時(shí)間——通常為15分鐘沒有取得任何進(jìn)展時(shí),你應(yīng)放棄找錯(cuò)。用你的潛意識(shí)去思考問題,嘗試用別的方法解決問題,重寫全部令人厭煩的代碼段。當(dāng)你的精神有所恢復(fù)時(shí)重新回到原來的問題上。和計(jì)算機(jī)錯(cuò)誤作斗爭是不明智的,你應(yīng)盡量避免它們。 

    知道在什么時(shí)候放棄是困難的,但是這是你必須面對的一個(gè)問題。當(dāng)你覺得自己受挫折時(shí),你可向自己提出這個(gè)問題,你問問自己并不意味著放棄,但可能意味著是對自己的行動(dòng)設(shè)置規(guī)范的時(shí)候了:“如果我不能用這種方法在30分鐘時(shí)間內(nèi)解決問題,我將用幾分鐘時(shí)間考慮不同的方法,并在下一小時(shí)內(nèi)嘗試不同的方法。 

經(jīng)驗(yàn) 

相關(guān)文章

最新評論