⑴ 程序員為什麼要一直改bug不能一次性寫好嗎
作為一名程序員,我也總是在調試,Bug總是防不甚防的出現,這個過程真是有趣又痛苦,最後我覺得習慣就好,一次性寫出完美代碼是每個程序員不可實現的夢想。
程序員作為一項工作,是有任務有指標的,比起慢慢寫出完美程序解決所有問題,大家更喜歡快速看到一個可以執行解決部分問題的程序,此時完成比完美更重要。
沒有哪個程序員可以寫出完美的代碼,即使高能又偉大的公司也做不到這一點,想想看你的手機軟體是不是經常提醒你該更新了,連微軟都在三天兩頭的讓你打補丁,不是嗎?
⑵ 程序員為什麼要一直改bug 不能一次性寫好嗎
程序寫代碼就像造一座大樓,如果即便經過嚴格的設計論證,裝配高質量的部件,最後還有系統性地驗收,讓你去造這么一座大樓,你能保證不管是窗戶安沒安好,還是地基挖淺了挖深了,還是牆皮脫落,都一個問題沒有?
回想早年的小程序,執行某一個具體的任務,明確的輸入輸出,一般是不會有bug的。
但現在的軟體開發,早就已經不是一個人在戰鬥了,大部分的工程,開發規模5人左右居多,另外稍大的軟體工程動輒幾十人,更有甚者幾百人的團隊規模並行作業。你試想一下,要保證這么多人的產出都符合設計要求,勢必需要合適的開發流程,需要更多的項目管理的技巧和方法。這就對個人以及團隊的提出了非常高的要求了。
軟體工程的方法論中,要求軟體開發者盡可能多地在軟體測試階段發現bug,而不是交付之後。
但是樓主說的能不能讓軟體開發出來沒有bug,我覺得把下面這幾個事情做好,還是有可能的。
1、花盡可能多的時間,和客戶溝通軟體需求,了解每一項需求的用意。
2、確保軟體需求不能隨意變動,因為很多情況下一個需求的變化,程序會帶來很多問題,有可能連底層結構都需要跟著一起變動。頻繁的需求變動,加上開發周期和成本的約束,帶來的結果就是軟體質量的不可控。
3、確保軟體測試質量,完成全覆蓋測試,設計系統需要的全部用例並保證全部通過。
總結下,軟體項目在實際開發過程中風險點還是很多的,通過合理的控制,可以降低和減少bug。但是軟體本身是為人的需求而生,只要需求在變化,軟體是永遠都需要跟著去維護和更新的,所以只要有不可控的因素(需求分析,系統設計,系統詳細設計,編碼,單元測試,集成測試,系統測試,驗收等)任何一個環節任何一個人產生問題,反映到最後的軟體產品上就是一個bug。
另外Bug分很多類,一類是對用戶來說不能正常使用,能被用戶感知到的錯誤。一類是用戶能正常使用,但是有各種異常的錯誤。一類是使用沒有任何問題,但是不符合產品預期的問題。其他應該還有很多,這里我們一一討論。
對用戶來說不能正常使用,能被用戶感知到的錯誤。
其中一種情況是程序員和測試人員的問題,所有功能在上線前,工程師和QA人員應該測試,回歸完功能。能被用戶感知到使用流程有問題的話,一定是相關人員能力或者線上意識某一方面欠缺,也是最不能容忍的。
另外一種情況是黑天鵝事件,什麼網線被挖斷,機房被炸,伺服器爆炸什麼的。。。。。。 ,這個說實話,出了在軟體架構上做冗餘,目前沒有什麼特別好的辦法。
2. 用戶能正常使用,但是在用戶看不到的地方有各種異常的。
一個功能模塊幾乎不可能是獨立的,它必然牽扯到其他模塊。對於你所依賴的模塊,你沒辦法保證這些模塊是100%可用的。這個時候可能雖然有錯誤,但是只要不影響主要流程,我們依然可以正常使用。但這個時候對於外部依賴的異常處理,很考驗工程師的能力。
舉個例子,有可能你看到的點贊數比你實際收到的點贊數少。這個是由於點贊統計在什麼時候失敗了一次,某些用戶可能認為這個是bug,但是其他可能不會在意(當你有10001贊的時候,你在意少了1個么?)
3. 使用沒有任何問題,但是不符合產品預期
這個更多的是研發和產品經理對於需求理解的不一致。因為文字是有二義性的,況且人和人對相同文本的理解本來就可能出現偏差,這就導致了需求理解的不一致,最終導致了線上產品不符合預期。對於內部人員來說,這個也算BUG。
說了那麼多,最主要的核心在於實現功能的是人。人不像機器,不可能不犯錯;同樣的,不可能存在沒有bug的程序,像大家使用的windows,窮盡無數優秀的工程師,給予用戶優秀的桌面體驗的同時,也有你可能完全看不到的數千個bug。想要完全避免幾乎是不可能的。所有也不存在一次性就寫好的情況,鬼知道產品經理什麼時候改需求呢~
⑶ 互聯網前輩總是說「bug是改不完的」,新入職的程序員該怎樣應對bug
互聯網前輩總陸雀是說“bug是改不完的”,新入職的程序員應對bug:
⑷ 如何看待程序員把Bug都改完就被開除了
作為一名碼農、程序員,加班算是家常便飯了。周一至周五晚上加、周末加、辦公室加、回家加、有償加、無償加……確實讓人看見就怕。
但是你加班的原因是什麼呢?讓我們一起來看看下面兩個例子。
01 程序員踩點下班,領導:不想乾的請辦理離職,我這里不養閑人與廢物
在職場上加班不是目的,加班是為了完成工作,當員工能在正常上班時間內完成工作,無需加班,這時候作為領導也就沒有必要讓其留下來加班。
然而也有一些公司領導不看產出只看員工加不加班,就有一領導經過幾天的觀察,發現新來的幾名程序員每天晚上不到八點就早早的下班走了。
對此這名領導很生氣,想管管這群新來的程序員,於是在群里通知稱:
都是幹嘛使的?八點不到都 TM 走了!不幹的直接說,現在就表態度,我這里從來不養閑人,也不養廢物!不幹的不想乾的都去人事那裡辦理離職。
其實員工有這種心態實在人之常情。但退一步想,為何老闆卻能做到 5+2、白+黑呢?難道老闆們都是鐵打的?都是超人?非也,只因他們是經營者,他們為企業負責,為自己負責。
員工往往拿的是固定工資,所以這就導致了老闆與員工焦點矛盾的局面:老闆只關心利潤,員工只關心工資。
⑸ 程序員改bug 問題是怎麼改好的
其實程序員改bug也是有學問的。程序員改bug跟醫生治病是一樣一樣的,無非一個是給機器看病,一個是給人看病。首先,一定要准確的定位引起bug的真正原因。定位問題,需要程序員去讀代碼,了解流程,弄明白來龍去脈。其次,定位bug源頭之後,就需要去分析解決問題的方法。分析問題,需要綜合相關知識,熟悉它所用到的一些機制,找到最佳解決方案。拿Android來說吧,比如修改wifi的bug,就需要弄清楚wifi的流程,stateMachine機制,消息機制,當然最基本的四大組建及其機制是必不可少的,哪裡都有用到。然後,才是去coding。當然coding,也應該注意一些問題,比如,風格盡量和源碼保持一致。Google那批程序員功底還是可以的。注釋一定要清晰,包括作者,改動時間,以及原因。最後,要強調一點,改bug一定要徹底。不能改一個bug一起另外一個或者一堆bug。一定要避免這樣的情況發生。我們公司就一個剛畢業沒多久的程序員,改bug不徹底,只改了界面顯示,弄的實際功能廢掉。對於這樣的代碼,我只想說兩個字:垃圾。另外,改bug要和相關模塊的工程師討論,因為他們或許就是這方面的專家,這樣才能寫出優秀的代碼。
有的人改bug改了幾個月,就會分開發的任務,或者層次更深一點的任務。有的人從進公司就一直改bug。不能否認公司方面有一定問題。但程序員也應該從自身方面找找問題。你寫的代碼是最高效的嗎?你寫的代碼讓別人很容易看懂嗎?你寫的bug讓別人呲之以鼻還是贊嘆不已?如果你做的不夠好,就不要整天抱怨:「又讓老子改bug,老子從進公司到現在都一直在改bug!」
⑹ 程序員為什麼要一直改bug,不能一次性寫好嗎
軟體可能在使用過程中沒有任何問題,但不符合產品的預期下圖源自「How projects really work?」,很形象的突出了客戶需要的產品和最終得到的產品不一致。
所以軟體想要變得成熟,Bug收集和處理機制是非常有必要的,比如:會影響客戶使用的優先順序高的Bug要優先修復。Bug是軟體的影子,也是程序員的噩夢實際上不能存在沒有bug的軟體,Bug和軟體如影隨形。就像我們使用的Windows,窮盡無數優秀的軟體工程師來設計給用戶優秀的桌面體驗,但也有各種層出不窮的bug。
程序員對Bug有多愛就有多恨,Bug無處不在,即使再牛逼的程序員也逃脫不了Bug的魔掌。想要完全避免Bug幾乎是不可能的,所以也不在一次性就寫好的程序。以上個人淺見,歡迎批評指正。認同我的看法,請點個贊再走,感謝!喜歡我的,請關注我,再次感謝!
⑺ 程序員不喜歡什麼,在廣州藍景做開發的朋友說,他不喜歡加班改別人的bug,你們呢
程序員最討厭不確定性。
Debug的時候,在怪異再棘手的問題,只要可以穩定重現,都遲早可以解決。「穩定重現」的意思是只要按一定的步驟做下來,問題就可以重演。
最討厭的就是那種時有時沒有,不知道什麼時候出現的bug。改了代碼不知道有沒有效,也不知道是否引入了新問題。可以把碼農逼瘋。
引入到生活中對人對物的態度也是一個道理。無緣無故發脾氣又不說為什麼的女朋友,言而無信說到做不到的人,約好的事情被放鴿子... 這些都是不確定性。
程序員對不可控的不確定性因素也是有解決方案談團的。在代碼里頭把異常try-catch-finally一下,做好補救收尾,在加上幾行注釋警醒後來人這里別亂動。早陪對隨機發生的問題,對應方案就是假設這里永遠都會有問題,把隨機的行為轉化為降格的確定行為。就比如隨機發脾氣的女朋友吧,就含睜橘會放棄研究發脾氣的原因,不求治本,而是假設她永遠會發脾氣,專注「哄」的工作也就是catch裡面的內容。