當前位置:
首頁 > 科技 > 一個沉重的問題:軟體開發還有價值嗎?

一個沉重的問題:軟體開發還有價值嗎?

作者 | Lisa

無論是醫生、老師,還是會計,都很容易讓人理解工作內容,並且這項工作在現實生活中也可以繼續發揮作用,但軟體開發工程師這個崗位實在是不好描述。縱觀國內外不少程序員扎堆的論壇,我們總能看到與「軟體開發」相關的討論,不少網友甚至發出質疑:除了工作,軟體開發是無用職業嗎?

近幾年,科班和培訓出身的 IT 從業人員數量激增,市場幾近飽和,甚至裁員風波不斷,軟體開發工程師彷彿被放在了裁員一線,聲音少,關注度低,偶爾發出一些聲響還可能是負面新聞。如果了解這個行業,就一定知道每位軟體開發工程師的成長都實屬不易。

Java 工程師、C 工程師、PHP 工程師都屬於單一類別,真正的軟體開發工程師比全棧工程師要求還多,除了基礎編程語言(C、C 或者 Java),還要了解資料庫、JavaScript、AJAX、Spring 等前沿技術,對網路工程和軟體測試等也要有所涉獵。

一般來說,軟體開發工程師既是軟體設計師、軟體架構師,也是一個優秀的程序員,可謂是門門武器皆可把玩,標準的高薪技術人才,為什麼總是被爆出悲觀無用論調呢?

軟體開發是無用職業嗎?

國外一位軟體工程師在與眾多同事聊天中總結出一句話:對大多數人而言,軟體工程開發是一個除工作之外無用的職業之一,這項技能在生活中幾乎用不到。不少網友跟帖調侃稱,平時還可以修修電腦、重裝系統、清理電腦垃圾等。調查中,大多數軟體開發工程師不會詳細向家人介紹自己的工作,除非有人刨根問底,也有人曾因為介紹得過於詳細而被家人拉去到處修電腦。

雖然調侃成分居多,但也不免傳遞出一些心酸。實際上,軟體開發工程師在產品生命周期中的作用非常重大,涵蓋需求、設計、開發、修改、發布等多個環節,生活中也沒有傳說的那麼無趣和無用。很多軟體開發工程師擅長通過編碼解決生活問題,比如編寫一些軟體或小程序自動運行部分重複且複雜的工作;為零售商店編寫網站或者 APP,方便用戶選購商品;為家居編寫控制程序以達到智能目的;編寫簡單的日程提醒軟體,以免忘記重要約會...... 有業內人士表態,是否有用取決於用戶是否真的需要,只要需要就是軟體開發工程師的價值所在。

此外,在國外一線科技公司工作的軟體開發工程師,比如谷歌、蘋果,薪資水平早已達到年薪 100 萬人民幣左右。反觀國內,2010 年的軟體出口規模達到 215 億元,軟體從業人員達到 72 萬人,雖然如此,但人才缺口依舊巨大,尤其是高素質軟體工程人才,極度短缺。

所以,這個崗位不是無用,而是頂尖人才尚未到位。

軟體質量越來越差是開發的鍋嗎?

一個優秀的軟體開發工程師,必須對自己的產品負責。如今,一個手機就可以解決吃飯、休閑、出行、娛樂等各方面需求,只要幾個 APP 就可以搞定全部,軟體產品越來越多,但真正可以算得上顛覆性創新的東西卻很少,基礎軟體的質量似乎越來越差,這個鍋應該開發背嗎?

在 V2EX 上,某開發者深夜發表了一篇題為「底層開發性價比越來越低,基礎軟體的質量將會越來越差」的帖子,他表示,前半句是當前事實,後半句則是基於事實對未來的推斷,也就是說,未來,基礎軟體的質量將會越來越差,這又從何說起呢?

他認為,現在的年輕人中只有很小一部分願意去維護和學習前人花費數十年時間,整理出的數千萬行代碼,基礎軟體的補丁質量在逐年下降。大部分年輕人不願意做「平行世界的守護者」,更加贊同「不重複造輪子」的說法。

隨著市場對產品研發和迭代周期的要求越來越短,各種敏捷開發工具應運而生,與以往相比,同樣的功能只需要很少的特定代碼就可以實現,軟體開發工程師花費的時間確實變少了,但對性能和用戶體驗的關注也在下降,這也導致大量軟體流入市場,但整體質量卻是在下降。

當然,不少奮鬥在一線的底層開發者對此也表達了不滿,認為國內尚有很多開發者重視基礎軟體質量,並願意更新迭代前人編寫的底層代碼,只是這個群體的話語權太少,被外界聽到的聲音太弱。

當然,也有網友認為,這也不全是軟體工程師的問題,很多公司在軟體開發過程中往往是需求提了改,改了提,最終開發的產品成了一堆無用代碼堆積;工期一再壓縮,為了趕時間,大部分軟體開發工程師不得已省去設計時間,自然沒工夫評估項目效益和成本,後果往往是非常痛苦的修改和更新,不同開發者之間的協作也可能影響系統其他功能,導致整個軟體開發流程漏洞百出。

因此,軟體質量好壞不是單純依靠軟體開發工程師就可以解決的,這其中還涉及到多人協作,部門合作等問題,這個鍋全部砸在工程師身上,也是有點痛。

如何避免無用代碼堆積?

當曾經嚮往的職業變成一日又一日的無用代碼堆積,多少讓開發者有些心灰意冷,雖然無法保證整個產品質量,但至少可以在代碼層面下點功夫。無用代碼堆積這種現象在日常軟體開發中非常普遍,對於需求頻繁被修改的問題,根源在於弄清楚軟體開發的目的是什麼,代碼有沒有用的最終決定者應該是用戶,如果一段代碼具備的功能符合用戶需求,具備業務價值,那麼就是有用的。

在軟體開發過程中,需求變更和代碼修改是很正常的事情,但這個不確定性需要在一定範圍內。對此,最佳的解決方案可能是迭代開發,也叫迭代增量式開發,將整個開發周期分解為若干時間段,每隔一段固定時間就對軟體進行一次小迭代,每迭代幾次就進行一次全面測試和大版本更新,對開發成果進行質量評審,這個過程最重要的是聽取最終用戶的意見,以便及時調整優化,避免無效需求,尤其是決策者拍腦門出來的決定。

開發之前,技術負責人務必準備好相應文檔,確定好各工程師的分工,尤其是需要協同完成的部分。另外,團隊盡量抽出時間和精力進行代碼 Review,並以降低代碼複雜度為目標,如果不同工程師之間的代碼間經常互相影響,可以考慮讓這類程序員負責獨立開發模塊,降低對整個項目的影響。

長期以來,測試在國內的重視程度並不夠,一個測試團隊起碼應該有白盒測試、效率測試、單元測試等各類專職人員,不建議在所有功能完成之後才開始測試,最好是完成一個功能就馬上交給測試,測試階段應由測試完全掌握主動權,開發必須尊重測試人員的工作。

歸根結底,軟體開發是一項非常複雜的工作,為了避免過程出錯,很多公司已經摸索並建立了成熟且完整的代碼編寫規範,包括變數命名規則、層次化設計、類和介面設計,到最後的代碼 Review 都很清楚,最重要的不是會寫代碼,而是學會解決問題,做真正有價值的事情。

毫無疑問,軟體工程開發是一項有價值且極具挑戰的工作,這種價值不僅體現在工作中,很多優秀的軟體產品已經對用戶生活產生影響,這也是很多一線科技公司不可或缺的崗位,但價值到底有多大還要取決於做的人,如果開發者自身技藝不精,很容易弄巧成拙。

參考鏈接:

https://www.reddit.com/r/EngineeringStudents/comments/4cqg19/software_engineering_what_seems_to_be_useless/

https://www.perlmonks.org/?node_id=405439

https://www.zhihu.com/question/28158159

Q 言 Q 語時刻

你覺得在現階段,軟體工程還有價值嗎?

為什麼軟體工程現在越來越不受重視了?

點個好看少個 bug


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

程序員:我莫不是被面試官黑了吧?對答如流都被刷掉了?
高可用、彈性動態的金融級移動架構在螞蟻金服的演進之路

TAG:InfoQ |