發(fā)布時(shí)間:2021-10-26 13:47:36
作者:微紅科技
閱讀次數(shù):6928
當(dāng)前位置: 微紅科技 - 新聞動(dòng)態(tài) - 軟件開發(fā)中的十大困難
軟件開發(fā)中最大的難題不是編寫程序,寫代碼只是按照邏輯去實(shí)現(xiàn)功能,這相對(duì)于開發(fā)者需要做的其他事情來說簡(jiǎn)單直接多了。如果你還是一個(gè)不算資深的業(yè)余程序員,那你一定要在真正的走向職業(yè)道路前確保可以解決下面這些障礙。
1.向外行解釋你在做什么
向外行解釋軟件開發(fā)的過程是極其困難的。雖然很多人知道編程,但他們終究是不會(huì)寫程序的人,在他們看來,程序員的生活就是整天在一間小黑屋里趴在鍵盤前,消耗著很多咖啡。你會(huì)從你的朋友,親人,同事嘴中聽到這些話,他們認(rèn)為這不是一個(gè)恰當(dāng)?shù)穆殬I(yè)。
2.形象的說出解決方案
你會(huì)經(jīng)常接到一些簡(jiǎn)潔的,但通常表意不明的需求。比如現(xiàn)在有一個(gè)商業(yè)方面問題的需求,你就要根據(jù)它來設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),程序架構(gòu),算法,接口和一些其他技術(shù)層面的東西來構(gòu)造這個(gè)問題的解決方案。關(guān)鍵的是,你要用大家都可以理解的語(yǔ)言,并在有限的時(shí)間內(nèi)把解決方案講給客戶,但事實(shí)是很多開發(fā)者都做不好這件事情。
3.評(píng)估工期
這恐怕是很多程序員的痛苦之源。對(duì)于程序員來說,去評(píng)估一項(xiàng)從未做過的項(xiàng)目所需要花費(fèi)的時(shí)間是極其困難的。你可能寫過相似的代碼,但現(xiàn)在的環(huán)境,問題和限制條件都發(fā)生了變化。雖然經(jīng)驗(yàn)會(huì)有一些幫助,但大多數(shù)程序員還是低估了問題的難度,通常因?yàn)槌绦騿T只考慮了編程方面的問題,而忽略了其他相關(guān)的事情。
4.借鑒他人的代碼
有很多種方法可以得出解決方案,但是借鑒他人的代碼,在這個(gè)基礎(chǔ)上編程需要花很多精力和時(shí)間,因?yàn)槟阋ニ伎妓麄兪侨绾螛?gòu)思的。而且,如果這些半成品的程序還沒有留下注釋和文檔記錄,你就會(huì)更困難了。
5.面對(duì)項(xiàng)目需求的漸變和奇異的功能
雖然敏捷開發(fā)在一定程度上允許了需求的漸變,但并不意味著需求變化是一件好事,如果再加上一些客戶由于一時(shí)沖動(dòng)提出的奇怪需求,你就更苦惱了。你知道這樣做一定會(huì)失敗,你的團(tuán)隊(duì)也知道,但這是客戶的要求,而且錯(cuò)誤的發(fā)生也是你的責(zé)任,因?yàn)槟銢]有站在他們的角度看問題。
6.在缺乏優(yōu)化和過度優(yōu)化間找到平衡點(diǎn)
復(fù)雜的軟件永遠(yuǎn)做不到絕對(duì)的完美,因?yàn)榭傆懈鼉?yōu)的方法去完善它。你可以無(wú)限制的不斷優(yōu)化你的代碼,這也就是為什么項(xiàng)目不會(huì)提前完成。而另一方面,你有時(shí)也會(huì)有“這樣就行了,我以后再去優(yōu)化它”的想法。這樣的程序目前可以正常運(yùn)行,但明天可能就會(huì)出現(xiàn)錯(cuò)誤。當(dāng)然了,你也可以不用管它,等著下一個(gè)用它的程序員去優(yōu)化。
7.測(cè)試
你也許自己進(jìn)行了單元測(cè)試,也把軟件交付給了測(cè)試組,但bug依然存在。軟件通常是復(fù)雜的,包含了成千上萬(wàn)行代碼,其中有數(shù)不清的交互接口和路徑,把這些全都測(cè)試到是很困難的;類似的,你的軟件會(huì)在不同的環(huán)境下和不同的軟件交互,所以也不可能測(cè)試到每一種可能性;寫好一個(gè)完善的單元測(cè)試是一項(xiàng)枯燥且困難的工作,理想情況下,測(cè)試程序的編寫應(yīng)該在軟件開發(fā)前就進(jìn)行,但是你要向你的客戶解釋清楚為什么一個(gè)月過去了卻還是沒有可用的軟件;單元測(cè)試不會(huì)發(fā)現(xiàn)所有的問題。理想條件下,一個(gè)項(xiàng)目應(yīng)該有一個(gè)單獨(dú)的測(cè)試團(tuán)隊(duì),他們可以積極主動(dòng)的,盡可能的去找程序中的問題,但這對(duì)大多數(shù)項(xiàng)目來說是一件需要很大花銷并耗時(shí)的事情,所以就讓開發(fā)人員同時(shí)負(fù)責(zé)測(cè)試的任務(wù)。但是,這樣的測(cè)試是考慮不到很多邊界和極端情況的;程序員通常是在用理性的邏輯處理問題,但是客戶通常不這樣,他們會(huì)發(fā)現(xiàn)很多你意料之外的問題。
8.寫開發(fā)文檔
給項(xiàng)目寫文檔記錄是一件費(fèi)力耗時(shí)的工作, 幾乎沒有開發(fā)者喜歡或擅長(zhǎng)它,不愿意花時(shí)間閱讀它們。
9.處理各種IT問題
你每天都和技術(shù)打交道,你也許是一個(gè)HTML或PHP程序員,但你可能還要解決一些其他問題,比如硬盤損壞,驅(qū)動(dòng)沖突或軟件報(bào)錯(cuò)。這些雖然都不是你的主要工作,但如果你不去解決這些問題,你就不能繼續(xù)你的開發(fā)任務(wù)。不幸的是,在那些非IT領(lǐng)域的人的眼里,你什么都知道。當(dāng)他們遇到IT方面的問題時(shí),他們不會(huì)花時(shí)間自己解決,而是去尋求你的幫助,而且不管什么問題,因?yàn)槟闶歉阌?jì)算機(jī)的,比如如何將工資單導(dǎo)入Sage,如何配置Oracle,或者為什么他們的藍(lán)莓手機(jī)發(fā)送郵件失敗。也許,這些干擾不會(huì)影響到你的日常工作,但真的不會(huì)嗎?
10.與他人打交道
這些問題都可以歸結(jié)為“與人打交道”的問題。沒有外行人會(huì)指導(dǎo)飛行員如何開飛機(jī),或給電工如何布線提建議,但是他們很愿意給軟件開發(fā)“勇敢”地提出建議?,F(xiàn)在可能還沒有辦法避免這樣的事情發(fā)生,你只能接受這樣的事實(shí):世界上有一半人的智力是低于平均水平的!
上一篇: 談SEO優(yōu)化理念之主題模型!
下一篇: 談SEO優(yōu)化理念之主題模型!
Copyright ? 微紅科技 All Rights Reserved
黔公網(wǎng)安備
黔ICP備17001430號(hào)-1
【微紅科技官方微博】
版權(quán)所有:微紅科技
百度統(tǒng)計(jì)