为什么我们程序员不把软件开发当回事?
作者?|?Dev by RayRay
譯者 |?彎月,責(zé)編 | 伍杏玲
出品 |?CSDN(ID:CSDNnews)?
以下為譯文:
最近,我一直在想為什么大多數(shù)公司認(rèn)為軟件的構(gòu)建過程與現(xiàn)實(shí)世界基礎(chǔ)設(shè)施的構(gòu)建有很大的不同呢?
我想談一談我們必須像構(gòu)建現(xiàn)實(shí)世界的基礎(chǔ)設(shè)施那樣重視軟件的構(gòu)建。每當(dāng)我與其他人談起這件事時(shí),我們都非常震驚, 作為軟件開發(fā)人員,為什么我們未能認(rèn)真對(duì)待自己的工作呢?
需求
首先讓我們從處理軟件開發(fā)中的需求開始說起:
軟件開發(fā)
在從事軟件開發(fā)的最近十年中,我見識(shí)了很多收集需求的方法。大多數(shù)人并沒有認(rèn)真對(duì)待這項(xiàng)工作,他們的思想非?!懊艚荨?#xff0c;并沒有真正理解自己在構(gòu)建什么。
雖然他們制定計(jì)劃本身就遇到了問題,但依然會(huì)義無反顧地開始寫代碼。沒有任何需求,只有我們需要構(gòu)建什么的想法。一邊寫代碼一邊思考需求。這些項(xiàng)目遲早會(huì)因?yàn)槿狈η逦哪繕?biāo)而受阻。
現(xiàn)實(shí)世界的基礎(chǔ)設(shè)施
當(dāng)需要在現(xiàn)實(shí)世界蓋樓、搭建橋梁、建購物中心或其他基礎(chǔ)設(shè)施時(shí),人們首先會(huì)討論需求。
目標(biāo)用戶需要什么?需要解決的問題是什么?需要在哪一塊土地上建造?為什么人們需要這個(gè)建筑?……
為了確立一個(gè)好的需求清單,需要回答很多問題。我想上述問題只是其中很小一部分。
為什么人們會(huì)如此重視現(xiàn)實(shí)世界基礎(chǔ)設(shè)施的構(gòu)建呢?可能是因?yàn)樗麄儾幌牖ㄔ┩麇X,他們不希望發(fā)生事故,他們希望為最終用戶創(chuàng)造成功。當(dāng)然,他們也想賺錢。
現(xiàn)實(shí)世界與軟件開發(fā)
為什么我們大多數(shù)人(從事軟件開發(fā)的人)不會(huì)嚴(yán)肅認(rèn)真地想清楚需求呢??我們不在乎嗎?我們不想為我們的用戶創(chuàng)造成功嗎?我們不在乎錢嗎?我并不這樣認(rèn)為!
你的老板也不會(huì)這樣想。但他們知道些什么?你的老板很有可能并不是軟件開發(fā)人員、架構(gòu)師或設(shè)計(jì)師。即便你的老板是,你會(huì)聽他的嗎?
請(qǐng)不要誤會(huì)我的意思,我并不想別人對(duì)我有意見或不高興!
但我認(rèn)為,作為軟件開發(fā)人員,我們必須更加認(rèn)真地對(duì)待我們的需求。我們必須為我們的工作感到更加自豪。為了給這些人提供建議,我們必須提出需求。
靈活性
如果比較構(gòu)建軟件開發(fā)與構(gòu)建現(xiàn)實(shí)世界的基礎(chǔ)設(shè)施,就會(huì)發(fā)現(xiàn)二者在靈活性方面有很多差異。深入研究一下,看看是否真的有很大的不同,還是說軟件開發(fā)人員推動(dòng)了新事物的發(fā)展?
軟件開發(fā)
幾個(gè)世紀(jì)以來,我們從瀑布式開發(fā)過渡到了敏捷開發(fā)。在瀑布式開發(fā)中,所有流程都依序而建:編寫需求、構(gòu)建軟件、測(cè)試軟件,然后發(fā)布。
起初聽起來這種方式還不錯(cuò)。然而問題出現(xiàn)了,我們需要等待數(shù)月之久,才能測(cè)試軟件。
瀑布式開發(fā)的效果不是很好,因此一些聰明人提出了《敏捷宣言》。這套準(zhǔn)則可以幫助我們更靈活地構(gòu)建軟件。因?yàn)樵陂_發(fā)過程中,需求可能會(huì)發(fā)生變化。
需求之所以會(huì)發(fā)生變化,是因?yàn)橛脩籼峁┝朔答伝蛉藗兪褂密浖M(jìn)行了測(cè)試。
也許是軟件公司不知道究竟應(yīng)該為用戶解決什么問題。因此敏捷開發(fā)應(yīng)該讓應(yīng)用程序的開發(fā)成為學(xué)習(xí)的過程,敏捷是企業(yè)成功的關(guān)鍵。
然而當(dāng)一家公司從瀑布式轉(zhuǎn)變?yōu)槊艚菔胶?#xff0c;他們就認(rèn)為不再有需求了,他們可以隨時(shí)根據(jù)需要提出任何變更,即便他們沒有意識(shí)到變更帶來的影響。于是問題出現(xiàn)了。
作為一家軟件公司,如何才能以敏捷的形式開展工作,這個(gè)話題足以寫一本書或一系列的文章。
如果公司制定出需求,而且這些需求都能得到滿足,那么就可以將影響降到最低。但是大多數(shù)公司不會(huì)花時(shí)間來制定需求。
因此在大多數(shù)情況下,影響都會(huì)超出估計(jì)。每當(dāng)需求不斷變化,或者我們需要更新依賴關(guān)系,或者從一個(gè)框架改為另一個(gè)框架時(shí),每個(gè)人都會(huì)有點(diǎn)過于輕敵。
很多人沒有意識(shí)到這些變化的影響!希望你不是其中之一!
現(xiàn)實(shí)世界的基礎(chǔ)設(shè)施
在現(xiàn)實(shí)世界基礎(chǔ)設(shè)施的構(gòu)建過程中,一旦發(fā)生任何變故,每個(gè)人都知道這可能會(huì)對(duì)金錢或完工日期造成巨大的影響。
當(dāng)必須有所變動(dòng)時(shí),整個(gè)工程都需要暫停。而且還需要看看變動(dòng)帶來的影響。但是這種效果可能會(huì)很大。
因此,整個(gè)建筑團(tuán)隊(duì)、建筑師和其他人員都必須回到圖紙上。需求的變化會(huì)產(chǎn)生巨大的影響!團(tuán)隊(duì)中的每個(gè)人都清楚這一點(diǎn)。
因?yàn)樗麄冎烂看巫儎?dòng)都需要付出金錢和時(shí)間的代價(jià),而且可能還會(huì)對(duì)項(xiàng)目的成功帶來風(fēng)險(xiǎn)。
現(xiàn)實(shí)世界與軟件開發(fā)
將兩個(gè)世界相比較,我認(rèn)為我們必須更加清醒地意識(shí)到變化帶來的影響。依賴關(guān)系的變化、架構(gòu)的變更。在做出決定之前,我們應(yīng)該針對(duì)每項(xiàng)變化進(jìn)行適當(dāng)?shù)恼{(diào)查。
如果我們更加認(rèn)真地考慮時(shí)間和金錢對(duì)企業(yè)的影響,那么就不會(huì)再輕易考慮架構(gòu)變更了。
因此,我們應(yīng)該意識(shí)到這一點(diǎn)。此外,如果你非常清楚變更造成的影響,那么就有責(zé)任為做出決定的人員提供建議。
維護(hù)
說起維護(hù),我們都知道軟件開發(fā)和現(xiàn)實(shí)世界的基礎(chǔ)設(shè)施都離不開維護(hù)工作。但是公司處理軟件和現(xiàn)實(shí)世界基礎(chǔ)設(shè)施的維護(hù)方式卻有很多差異。
軟件開發(fā)
我見過很多公司都沒有人來維護(hù)軟件。當(dāng)開發(fā)結(jié)束,你要求投入維護(hù)人員時(shí),有些公司甚至?xí)械胶荏@訝。有些人甚至?xí)軕嵟?#xff01;
當(dāng)然,也并非所有公司都會(huì)輕視軟件的維護(hù)工作。謝天謝地,有很多優(yōu)秀的公司,在軟件發(fā)布后就會(huì)投入人員來更新軟件或改Bug,甚至改進(jìn)軟件。
但是在小規(guī)模的公司中,普遍沒有人承擔(dān)這些工作。
這些公司里的大多數(shù)經(jīng)理都認(rèn)為:“開發(fā)團(tuán)隊(duì)?wèi)?yīng)該為軟件的未來做好萬全的保障,不應(yīng)該有任何Bug。”
然而,我們都知道人無完人,所以軟件也永遠(yuǎn)不可能沒問題。
現(xiàn)實(shí)世界的基礎(chǔ)設(shè)施
在現(xiàn)實(shí)世界中,道路、橋梁、房屋或其他建筑物等基礎(chǔ)設(shè)施通常都需要有人來承擔(dān)維護(hù)的工作。
你的房子經(jīng)常需要一些維護(hù),比如粉刷墻壁、換屋頂、修漏水等。當(dāng)然你可以雇一家公司來做這些事。
每個(gè)人都知道現(xiàn)實(shí)世界中的基礎(chǔ)設(shè)施需要維護(hù),否則就會(huì)年久失修。
道路需要時(shí)不時(shí)地鋪筑水泥和瀝青,木材需要新的油漆,或者由于環(huán)境而造成的其他問題。
軟件開發(fā)與現(xiàn)實(shí)世界的基礎(chǔ)設(shè)施
令人非常震驚的是,許多公司甚至都沒有考慮軟件的維護(hù)工作。他們將其歸咎于開發(fā)人員,認(rèn)為他們應(yīng)該獲得沒有任何Bug的軟件,或者覺得他們必須在未來十年內(nèi)重新構(gòu)建這些軟件,所以沒必要維護(hù)。
老實(shí)說,我們不會(huì)對(duì)建造房屋、道路、橋梁和其他現(xiàn)實(shí)世界基礎(chǔ)設(shè)施的人說這些話。那么,你又為什么會(huì)覺得軟件不需要維護(hù)呢?
服務(wù)器獲取安全補(bǔ)丁,框架的Bug得到修復(fù)。我們都希望我們每天使用的軟件會(huì)越來越好,越來越安全,不是嗎?
我希望這篇文章能引起人們的注意,希望我們作為軟件開發(fā)人員更加深刻地意識(shí)到這個(gè)問題。
軟件開發(fā)與現(xiàn)實(shí)世界基礎(chǔ)設(shè)施的構(gòu)建沒有太大的不同。因此,我們應(yīng)該更加認(rèn)真地對(duì)待我們的軟件開發(fā),并更加深刻地意識(shí)到我們對(duì)其產(chǎn)生的影響。
我們應(yīng)當(dāng)以身作則,影響那些沒有認(rèn)真對(duì)待這個(gè)問題的公司。我們?yōu)樽约旱墓ぷ鞲械阶院?#xff0c;并更加認(rèn)真地對(duì)待每一項(xiàng)工作!
鏈接:https://medium.com/better-programming/we-are-not-serious-enough-about-software-development-b9e3222f2906
*本文為CSDN翻譯文章,轉(zhuǎn)載請(qǐng)注明出處。
推薦閱讀
視頻大戰(zhàn)再起:B站、頭條對(duì)戰(zhàn)愛優(yōu)騰
知乎上高贊的40個(gè)有趣回復(fù),很精辟!
天秀,17 歲高中生獨(dú)立開發(fā)全球疫情追蹤網(wǎng)站后火了!
END
來和小伙伴們一起向上生長(zhǎng)呀~~~
掃描下方二維碼,添加小詹微信,可領(lǐng)取千元大禮包并申請(qǐng)加入 Python學(xué)習(xí)交流群,群內(nèi)僅供學(xué)術(shù)交流,日?;?dòng),如果是想發(fā)推文、廣告、砍價(jià)小程序的敬請(qǐng)繞道!一定記得備注「交流學(xué)習(xí)」,我會(huì)盡快通過好友申請(qǐng)哦!
(添加人數(shù)較多,請(qǐng)耐心等待)
總結(jié)
以上是生活随笔為你收集整理的为什么我们程序员不把软件开发当回事?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 揭秘微信「看一看」如何精准挖掘你感兴趣的
- 下一篇: 一文理清面向对象(封装、继承、多态)+