大多數(shù)非程序員認(rèn)為軟件開發(fā)是非常困難的,確實(shí)如此,但這種困難不像那些外行人理解的那樣。最近在 Quora 上的一次討論,程序員分享了他們認(rèn)為工作中的最大困難,在這里為大家呈現(xiàn)出其中的 9 個。你可以看到,寫代碼并不是最難的事情,如果你也在從事軟件開發(fā),看看哪些內(nèi)容你認(rèn)為也是很難的。
1,怎樣才是最佳解決方案
任務(wù)描述:給你一系列的需求,你被要求設(shè)計(jì)和構(gòu)造技術(shù)上的解決方案。這包括了設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),算法,邏輯上的封裝等等,還要考慮到用戶安全方面的因素。
挑戰(zhàn):確保你的設(shè)計(jì)可以滿足客戶需求,讓客戶認(rèn)為合理。當(dāng)然還要在項(xiàng)目時間允許范圍內(nèi)。
2,寫測試任務(wù)描述
寫單元測試,確保代碼中每一個小部分的功能正確。這樣做可以讓你盡早發(fā)現(xiàn) bug,讓你后續(xù)的回歸測試變得更容易。一些開發(fā)的方**甚至鼓勵開發(fā)者在編寫程序之前就可以寫好測試程序。挑戰(zhàn):為每一部分進(jìn)行測試是一件很枯燥乏味的事情,讓人感覺是在做多余的事情。
3,編寫文檔
任務(wù)描述:撰寫文檔,說明你代碼的含義并解釋應(yīng)用的工作原理。這包括了獨(dú)立的文檔文件和代碼注釋,讓更多的人理解你的代碼。
挑戰(zhàn):這是一件耗時的工作,如果沒有人去讀它們的話就是純屬浪費(fèi)時間了。相比于寫文檔,程序員還是更愛寫程序。
4,實(shí)現(xiàn)那些你不認(rèn)可的功能任務(wù)描述
有時候你會不得不去實(shí)現(xiàn)一些功能和特征,它們不是你的本意,你覺得它們不應(yīng)該出現(xiàn)在這個項(xiàng)目里,但是客戶一定要堅(jiān)持如此。
挑戰(zhàn):你需要拋開一切個人的感覺和意見,把時間和精力專注于客戶提出的功能需求。
5,維護(hù)他人的代碼
任務(wù)描述:有時候你需要維護(hù)和調(diào)試其他程序員的程序,或一部分代碼。
挑戰(zhàn):你需要用盡一切辦法理解前任開發(fā)者的意圖,他是如何設(shè)計(jì)的這些代碼。特別是當(dāng)這些代碼寫得很差,也沒有注釋和文檔可以幫助到你時,那就很糟糕了。
6,與他人打交道任務(wù)描述
作為開發(fā)者,你要從客戶那里得到需求,向經(jīng)理提交報(bào)告,和測試人員一起工作,更要和其他工程師討論項(xiàng)目。
挑戰(zhàn):你需要向外行人解釋技術(shù)上的事情,有時候你的工作會依賴于他人的認(rèn)可或輔助。期間也會出現(xiàn)你和 QA 人員或其他工程師有不同意見的時候。
7,預(yù)估項(xiàng)目工期任務(wù)描述
項(xiàng)目一開始的時候,你要預(yù)估這個項(xiàng)目的完成需要多長時間。
挑戰(zhàn):一般情況下你要預(yù)估的是一個你之前沒有做過的項(xiàng)目,而且你只能基于那些模糊的需求,再給未來可能發(fā)生的問題分配些時間。
8,解釋我的工作
任務(wù)描述:向周圍的非程序員朋友,家人,同學(xué)解釋你的工作是在做什么,不做什么。
挑戰(zhàn):你愛的那些人可能不理解你在做什么,而且你還不斷的被問及計(jì)算機(jī)相關(guān)的一切問題。
9,程序中的命名任務(wù)描述
想出一些名字,為你程序中的變量、過程、函數(shù)、類、對象、數(shù)據(jù)庫等命名。
挑戰(zhàn):即使是很小的程序或應(yīng)用都需要給很多東西命名,你要想出那些適合的,簡潔的,可以表達(dá)正確含義的一些名字。