都說(shuō)態(tài)度決定一切,良好的態(tài)度也可以成就一名優(yōu)秀開(kāi)發(fā)者。但在現(xiàn)實(shí)生活中,尤其是遇到問(wèn)題、功能實(shí)現(xiàn)失敗或不能正常運(yùn)行時(shí),大家就會(huì)開(kāi)始抱怨或者尋找一些借口,這些借口完全是沒(méi)用的或者是阻礙你前進(jìn)的攔路虎。而真正專(zhuān)業(yè)的態(tài)度應(yīng)該著眼于項(xiàng)目和團(tuán)隊(duì)的積極結(jié)果,關(guān)注個(gè)人和團(tuán)隊(duì)的成長(zhǎng),并且圍繞當(dāng)前的工作積極展開(kāi)各項(xiàng)任務(wù)。
本文作者Rajaraman Raghuraman是一名擁有8年開(kāi)發(fā)經(jīng)驗(yàn)的軟件開(kāi)發(fā)人員,他總結(jié)了程序員遇到問(wèn)題時(shí)經(jīng)常找的借口或理由,大家不妨看下,不知各位中槍了沒(méi),如果沒(méi)有,大家不妨在移步看看“
程序員遇到Bug后的30種常見(jiàn)反應(yīng)”。
圖片來(lái)自:cheatcc.com
1.在我機(jī)器上還運(yùn)行好好的
開(kāi)發(fā)人員常會(huì)遇到這樣的問(wèn)題,他們感覺(jué)測(cè)試人員或者客戶的電腦有一種神奇的魔力,可以給程序注入bug。因?yàn)槌绦蛟谒救穗娔X上可以很好的運(yùn)行,為什么到他們那就會(huì)出現(xiàn)問(wèn)題。
想要避免這樣的借口發(fā)生,開(kāi)發(fā)人員需要弄清楚開(kāi)發(fā)、測(cè)試、客戶的運(yùn)行環(huán)境。bug是在何種配置/環(huán)境下出現(xiàn),當(dāng)你弄清楚這些,相信你就不會(huì)再發(fā)出這樣的抱怨了。另外一種避免方式是擁有持續(xù)集成環(huán)境,檢查每一段代碼,并且把代碼編譯和部署到一些測(cè)試機(jī)器上。
2.你這是最新的build嗎?
當(dāng)測(cè)試人員告知開(kāi)發(fā)者有bug或者提交bug時(shí),程序員常會(huì)問(wèn),你測(cè)試的應(yīng)用程序是最新的構(gòu)建狀態(tài)嗎?其實(shí),這種情況一般很少發(fā)生,一般提交的bug都是在最新的build里發(fā)現(xiàn)的。
想要避免這種情況發(fā)生最好有一個(gè)進(jìn)程,可以驗(yàn)證測(cè)試人員使用的代碼是最新最有效的。另一個(gè)方法是有一個(gè)持續(xù)集成環(huán)境,代碼可以自動(dòng)build和部署到測(cè)試服務(wù)器上。
3.肯定是配置問(wèn)題
如果有開(kāi)發(fā)人員這樣對(duì)你說(shuō),你可以回答:“或許有可能,你能告訴我是哪個(gè)文件的配置出現(xiàn)問(wèn)題了嗎?我需要讓它運(yùn)行起來(lái)。”正如上面的對(duì)話,用戶需要一個(gè)確切的回答,而非通用、模棱兩可的答案。
最佳的做法是把所有配置文件里的相關(guān)參數(shù)定義在一個(gè)單獨(dú)的配置文件里,把所有的動(dòng)態(tài)值寫(xiě)在某個(gè)日志文件里,以防在引用時(shí)發(fā)生混亂。
4.先提出一個(gè)缺陷,然后我再確認(rèn)它
個(gè)人角度來(lái)看,一個(gè)未得到確認(rèn)的缺陷是很令人煩惱的。開(kāi)發(fā)人員要么在開(kāi)發(fā)過(guò)程中對(duì)缺陷進(jìn)行跟蹤,要么就是程序員和測(cè)試人員之間協(xié)調(diào),通常情況下,開(kāi)發(fā)人員和測(cè)試人員應(yīng)該攜手來(lái)進(jìn)行缺陷的確認(rèn),以防弄出一些模棱兩可的缺陷出來(lái)。
要想避免這樣的情況發(fā)生,最好的方法就是測(cè)試人員和開(kāi)發(fā)人員之間有良好的團(tuán)隊(duì)士氣和協(xié)作。這樣,他們就會(huì)很容易進(jìn)溝通討論,并且對(duì)缺陷進(jìn)行確認(rèn)和跟蹤。
5.重啟一下機(jī)器看看
這可以說(shuō)是程序員殺手級(jí)的擋箭牌了,偶爾這個(gè)會(huì)奏效,但通常都是假的。想要避免這種情況發(fā)生就要弄清楚架構(gòu)、代碼以及相應(yīng)的開(kāi)發(fā)環(huán)境。
6.我不確定它為什么不工作,讓我檢查一下
相信用戶最討厭開(kāi)發(fā)者說(shuō)出這樣的借口,作為一名開(kāi)發(fā)者,你竟然都不確定某個(gè)特定的模塊/功能為什么不工作,那么你是否正確地理解了該功能和代碼設(shè)計(jì)呢?
想要避免這種情況發(fā)生,開(kāi)發(fā)人員應(yīng)該對(duì)各個(gè)模塊有個(gè)清晰的思維導(dǎo)圖,一旦問(wèn)題發(fā)生,應(yīng)該立即進(jìn)行分析并且找出可能導(dǎo)致問(wèn)題發(fā)生的原因。如果對(duì)問(wèn)題出現(xiàn)的情況不知所措或者根本不知道原因所在,這很可能是因?yàn)榇a設(shè)計(jì)不良或者缺乏對(duì)相應(yīng)功能模塊的理解。
7.5分鐘以后再試試
好吧,難道你對(duì)程序設(shè)置了計(jì)時(shí)炸彈,好讓它5分鐘以后再工作。
這個(gè)借口真的是很可笑,開(kāi)發(fā)者應(yīng)該意識(shí)到代碼不會(huì)隨著的時(shí)間的改變而改變,除非你設(shè)置了某些特定的定時(shí)代碼功能。
8.我不認(rèn)為我的代碼有錯(cuò)
有些程序員在面對(duì)缺陷時(shí),通常都會(huì)說(shuō):“我的代碼沒(méi)錯(cuò)啊。”作為開(kāi)發(fā)團(tuán)隊(duì)里的一員,應(yīng)該沒(méi)有“我的代碼一說(shuō)”,還不如換種說(shuō)法更好,比如可能是某個(gè)模塊出現(xiàn)了點(diǎn)問(wèn)題,我去檢查一下看看,最后再找到相應(yīng)的開(kāi)發(fā)人員,這樣更加有利于振奮團(tuán)隊(duì)士氣。
想要避免這種情況發(fā)生,最好的方法就是擁抱團(tuán)隊(duì)文化,每個(gè)開(kāi)發(fā)者都要清楚各個(gè)模塊的作用和功能,并給予相應(yīng)的權(quán)限。
除了以上八句話,開(kāi)發(fā)人員在聽(tīng)到自己的程序有缺陷或者功能失敗時(shí)還會(huì)冒出哪些借口或者擋箭牌呢?大家不妨分享下吧。
來(lái)自:
Java Code Geeks