那些非程式員認為軟體開發是非常困難的,确實如此,但這種困難不像那些外行人了解的那樣。最近在 quora 上的一次讨論,程式員分享了他們認為工作中的最大困難,在這裡為大家呈現出其中的 9 個。你可以看到,寫代碼并不是最難的事情,如果你也在從事軟體開發,看看哪些内容你認為也是很難的。
任務描述:給你一系列的需求,你被要求設計和構造技術上的解決方案。這包括了設計資料結構,算法,邏輯上的封裝等等,還要考慮到使用者安全方面的因素。
挑戰:確定你的設計可以滿足客戶需求,讓客戶認為合理。當然還要在項目時間允許範圍内。
任務描述:寫單元測試,確定代碼中每一個小部分的功能正确。這樣做可以讓你盡早發現 bug,讓你後續的回歸測試變得更容易。一些開發的方法論甚至鼓勵開發者在編寫程式之前就可以寫好測試程式。
挑戰:為每一部分進行測試是一件很枯燥乏味的事情,讓人感覺是在做多餘的事情。
任務描述:撰寫文檔,說明你代碼的含義并解釋應用的工作原理。這包括了獨立的文檔檔案和代碼注釋,讓更多的人了解你的代碼。
挑戰:這是一件耗時的工作,如果沒有人去讀它們的話就是純屬浪費時間了。相比于寫文檔,程式員還是更愛寫程式。
任務描述:有時候你會不得不去實作一些功能和特征,它們不是你的本意,你覺得它們不應該出現在這個項目裡,但是客戶一定要堅持如此。
挑戰:你需要抛開一切個人的感覺和意見,把時間和精力專注于客戶提出的功能需求。
任務描述:有時候你需要維護和調試其他程式員的程式,或一部分代碼。
挑戰:你需要用盡一切辦法了解前任開發者的意圖,他是如何設計的這些代碼。特别是當這些代碼寫得很差,也沒有注釋和文檔可以幫助到你時,那就很糟糕了。
任務描述:作為開發者,你要從客戶那裡得到需求,向經理送出報告,和測試人員一起工作,更要和其他工程師讨論項目。
挑戰:你需要向外行人解釋技術上的事情,有時候你的工作會依賴于他人的認可或輔助。期間也會出現你和 qa 人員或其他工程師有不同意見的時候。
任務描述:項目一開始的時候,你要預估這個項目的完成需要多長時間。
挑戰:一般情況下你要預估的是一個你之前沒有做過的項目,而且你隻能基于那些模糊的需求,再給未來可能發生的問題配置設定些時間。
任務描述:向周圍的非程式員朋友,家人,同學解釋你的工作是在做什麼,不做什麼。
挑戰:你愛的那些人可能不了解你在做什麼,而且你還不斷的被問及計算機相關的一切問題。
任務描述:想出一些名字,為你程式中的變量、過程、函數、類、對象、資料庫等命名。
挑戰:即使是很小的程式或應用都需要給很多東西命名,你要想出那些适合的,簡潔的,可以表達正确含義的一些名字。