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