讓程序員精神分裂的9件事
我們總結(jié)了9件最讓程序員糟心的事——簡(jiǎn)直就是分分鐘讓我們精神分裂啊!!!
小編覺得程序員們苦和淚編織的生活場(chǎng)景是這樣的:老夫聊發(fā)少年狂,寫程序,到天亮。 千行代碼,Bug何處藏。 縱使上線又怎樣,朝令改,夕斷腸。 領(lǐng)導(dǎo)每天新想法,天天修,日日忙。 又要加班,惟有淚千行。 每晚燈火闌珊處,程序員,工作狂!仿佛都能看到程序員們“飛流直下三千尺”的眼淚,呵呵。
英文原文:Arg! The 9 hardest things programmers have to do
在外行人眼里,軟件開發(fā)工作就跟看天書一樣難——但是程序員往往會(huì)一臉苦哈哈地表示“還有更難的呢!”我們總結(jié)了 9 件最讓程序員糟心的事——簡(jiǎn)直就是分分鐘讓我們精神分裂啊!!!
9. 設(shè)計(jì)解決方案
任務(wù):給出一系列要求,設(shè)計(jì)出可實(shí)施的方案,包括設(shè)計(jì)數(shù)據(jù)和代碼結(jié)構(gòu)、功能算法和應(yīng)用程序流程。
難點(diǎn):確保你設(shè)計(jì)的解決方案得滿足客戶的要求,并且按時(shí)完成。
網(wǎng)友的話:
“如何始于此終于彼可謂是最難的部分了。”——misconfiguration
“過于臃腫的設(shè)計(jì)會(huì)崩潰,過于淺薄則沒有用。”——nvteighen
“不去一個(gè)個(gè)試一試,就不知道什么樣的方案才適用……。”——jpkotta
8. 寫測(cè)試
任務(wù):編寫單元測(cè)試,以確保每一部分代碼都能正常運(yùn)作。這些測(cè)試不但有助于在開發(fā)早期找出 bug,還能方便后續(xù)的回歸測(cè)試。很多開發(fā)方法論甚至鼓勵(lì)我們?cè)趯懘a之前就可以先寫好測(cè)試程序。
難點(diǎn):選擇和編寫測(cè)試的過程是既辛苦又繁重的,有時(shí)候會(huì)讓人感覺是在做無用功。
網(wǎng)友的話:
“我就是不喜歡寫測(cè)試,你能怎么滴。”——Anonymous
7. 編寫文檔
任務(wù):創(chuàng)建用于解釋代碼和應(yīng)用程序的文檔,包括獨(dú)立文檔和代碼注釋。目標(biāo)人群范圍從終端用戶乃至其他開發(fā)人員。
難點(diǎn):很耗時(shí)間,甚至有時(shí)候你會(huì)覺得要是沒人看的話那不就是在浪費(fèi)時(shí)間。
網(wǎng)友的話:
“Shit!!!就因?yàn)檫@是“進(jìn)程”的組成部分,我們就得寫這些可能根本沒人會(huì)去看的文檔。”——Christian Dechery
“通過文檔,我們不需要閱讀代碼就能知道其作用。”——Raghu Nandan
“簡(jiǎn)潔又能清晰闡述的文檔,我的大愛啊!”——Ayush Goel
6. 實(shí)現(xiàn)自己并不認(rèn)可的功能
任務(wù):不管什么原因,如果你的客戶或者上司堅(jiān)持某個(gè)特性和功能,那么你就不應(yīng)該將個(gè)人的感情因素帶到工作中去。
難點(diǎn):摒棄個(gè)人想法和意見,竭盡全力地實(shí)現(xiàn)或支持功能需求。
網(wǎng)友的話:
“……當(dāng)然你也可以堅(jiān)持己見然后提早退休,呵呵。”——Sabbir Asgar
5. 關(guān)于別人家的代碼
任務(wù):維護(hù)、調(diào)試或改善由其他開發(fā)人員寫的應(yīng)用程序或者代碼片段。
難點(diǎn):理解前任開發(fā)人員的代碼是非常痛苦的一件事,特別是如果此人已經(jīng)離開,而他的代碼寫得亂七八糟、缺少必要的注釋和文檔,那就更悲劇了。
網(wǎng)友的話:
“沒文檔的代碼就像后媽。”——Omar Diab
“應(yīng)該淘汰掉那些不會(huì)好好寫代碼的程序員……”——Nani Tatiana Isobel
“代碼破萬行,沒有注釋也不怕不怕了。”——Simon Zhu
4. 和其他人打交道
任務(wù):收集客戶需求,提供狀態(tài)管理報(bào)告,配合測(cè)試人員,和其他工程師協(xié)作。
難點(diǎn):需要向非技術(shù)人士解釋技術(shù)問題,不得不依賴于其他人交接過來的任務(wù),與 QA 或其他開發(fā)人員出現(xiàn)意見相左情況的處理方式。
網(wǎng)友的話:
“交代機(jī)器干事比交代人去做要來得容易得多。”——Marko Poutiainen
“三人行,必有我?guī)熝?hellip;…合作也是學(xué)習(xí)的機(jī)會(huì)。“——Anonymous
“……和外行人說話簡(jiǎn)直就像對(duì)牛彈琴。” ——lnostdal
“總是要等其他團(tuán)隊(duì)完成任務(wù)之后我們才能開工,太拖我們的后腿了。”——Anonymous
3. 預(yù)估項(xiàng)目工期
任務(wù):項(xiàng)目一開始,就需要估算出完成所需要的時(shí)間。
難點(diǎn):哪怕沒有接觸過項(xiàng)目,手頭只有模糊的需求說明也得硬著頭皮預(yù)估時(shí)間。
網(wǎng)友的話:
“在開工之前,真的很難估算出會(huì)出現(xiàn)多少亂七八糟的問題……”——Jan Christian Meyer
“我發(fā)現(xiàn)估算時(shí)間可能是最難的部分了,因?yàn)楹芏嗳藭?huì)將其當(dāng)做一個(gè)承諾,信守著一諾千金。” ——Samnang Chhun
“……每次碰到這個(gè)問題我就一個(gè)頭十個(gè)大……”——Jack Menendez
2. 解釋我的工作
任務(wù):向非程序員——親朋好友,解釋自己的工作內(nèi)容。
難點(diǎn):親人和愛人不了解我們是做什么的??偸潜灰笕ソ鉀Q任何與計(jì)算機(jī)有關(guān)的問題(比如修電腦)。
網(wǎng)友的話:
“總是要跟人解釋——我,不是,修電腦的。”——Brandon P-Lost
“不止一遍地和我的家人說明,我到底是干什么的。”——Utsav Singh Rathour
“編程的世界,外行人不懂。”——Anand Safi
“為什么別人都認(rèn)為我是給電腦安裝盜版操作系統(tǒng)和其他盜版軟件的家伙呢?我干什么了我,我只是程序員。”——Anbu Jey
1. 命名
任務(wù):為變量、過程、函數(shù)、類、對(duì)象、數(shù)據(jù)庫組件等命名。
難點(diǎn):即使是一個(gè)小程序,也會(huì)有很多需要命名的東西。名字***一貫又簡(jiǎn)潔,有內(nèi)涵,能承載一些意思——這個(gè)是什么或者這是用來做什么的。
網(wǎng)友的話:
“想啊想啊想名字,想出一個(gè)好名字~”—— Aditya Muraletharan
“別煩我,我正在給函數(shù)命名呢。”—— Lakshman Siripurapu
“計(jì)算機(jī)科學(xué)中只有兩座大山:緩存失效以及命名。”——Phil Karlton
各位,最讓你頭疼的事情是什么呢?歡迎在這里傾訴。