欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

會將錯誤歸咎于她。 

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

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

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

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

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

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

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

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

5  交流和合作

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

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

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

    級別1:初學(xué)者 

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

    級別2:中間者 

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

    級別3:專家 

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

    級別4:大師 

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

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

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

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

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

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

                                         “Real Programmers Don't write Pascal” 

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

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

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

7  懶 惰

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

Ÿ  拖延自己討厭的工作 

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

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

 

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

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

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

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

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

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

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

堅持 

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

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

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

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

經(jīng)驗 

相關(guān)文章

最新評論