一個(gè)沉重的問(wèn)題:軟件開(kāi)發(fā)還有價(jià)值嗎?
來(lái)源: http://huarui.cc/ 時(shí)間:2021-01-20
無(wú)論是醫生、老師,還是會(huì )計,錦州云店商城都很容易讓人理解工作內容,并且這項工作在現實(shí)生活中也可以繼續發(fā)揮作用,但軟件開(kāi)發(fā)工程師這個(gè)崗位實(shí)在是不好描述。縱觀(guān)國內外不少程序員扎堆的論壇,我們總能看到與“軟件開(kāi)發(fā)”相關(guān)的討論,不少網(wǎng)友甚至發(fā)出質(zhì)疑:除了工作,軟件開(kāi)發(fā)是無(wú)用職業(yè)嗎?
近幾年,科班和培訓出身的 IT 從業(yè)人員數量激增,市場(chǎng)幾近飽和,甚至裁員風(fēng)波不斷,軟件開(kāi)發(fā)工程師仿佛被放在了裁員一線(xiàn),聲音少,關(guān)注度低,偶爾發(fā)出一些聲響還可能是負面新聞。如果了解這個(gè)行業(yè),就一定知道每位軟件開(kāi)發(fā)工程師的成長(cháng)都實(shí)屬不易。
Java 工程師、C++ 工程師、PHP 工程師都屬于單一類(lèi)別,真正的軟件開(kāi)發(fā)工程師比全棧工程師要求還多,除了基礎編程語(yǔ)言(C、C++ 或者 Java),還要了解數據庫、JavaScript、AJAX、Spring 等前沿技術(shù),對網(wǎng)絡(luò )工程和軟件測試等也要有所涉獵。
一般來(lái)說(shuō),軟件開(kāi)發(fā)工程師既是軟件設計師、錦州云店商城軟件架構師,也是一個(gè)優(yōu)秀的程序員,可謂是門(mén)門(mén)武器皆可把玩,標準的高薪技術(shù)人才,為什么總是被爆出悲觀(guān)無(wú)用論調呢?
軟件開(kāi)發(fā)是無(wú)用職業(yè)嗎?
國外一位軟件工程師在與眾多同事聊天中總結出一句話(huà):對大多數人而言,軟件工程開(kāi)發(fā)是一個(gè)除工作之外無(wú)用的職業(yè)之一,這項技能在生活中幾乎用不到。不少網(wǎng)友跟帖調侃稱(chēng),平時(shí)還可以修修電腦、重裝系統、清理電腦垃圾等。調查中,大多數軟件開(kāi)發(fā)工程師不會(huì )詳細向家人介紹自己的工作,除非有人刨根問(wèn)底,也有人曾因為介紹得過(guò)于詳細而被家人拉去到處修電腦。
雖然調侃成分居多,但也不免傳遞出一些心酸。實(shí)際上,軟件開(kāi)發(fā)工程師在產(chǎn)品生命周期中的作用非常重大,涵蓋需求、設計、開(kāi)發(fā)、修改、發(fā)布等多個(gè)環(huán)節,生活中也沒(méi)有傳說(shuō)的那么無(wú)趣和無(wú)用。很多軟件開(kāi)發(fā)工程師擅長(cháng)通過(guò)編碼解決生活問(wèn)題,比如編寫(xiě)一些軟件或小程序自動(dòng)運行部分重復且復雜的工作;為零售商店編寫(xiě)網(wǎng)站或者 APP,方便用戶(hù)選購商品;為家居編寫(xiě)控制程序以達到智能目的;編寫(xiě)簡(jiǎn)單的日程提醒軟件,以免忘記重要約會(huì )...... 有業(yè)內人士表態(tài),是否有用取決于用戶(hù)是否真的需要,只要需要就是軟件開(kāi)發(fā)工程師的價(jià)值所在。
此外,在國外一線(xiàn)科技公司工作的軟件開(kāi)發(fā)工程師,比如谷歌、蘋(píng)果,薪資水平早已達到年薪 100 萬(wàn)人民幣左右。反觀(guān)國內,2010 年的軟件出口規模達到 215 億元,軟件從業(yè)人員達到 72 萬(wàn)人,雖然如此,但人才缺口依舊巨大,尤其是高素質(zhì)軟件工程人才,極度短缺。
所以,這個(gè)崗位不是無(wú)用,而是頂尖人才尚未到位。
軟件質(zhì)量越來(lái)越差是開(kāi)發(fā)的鍋嗎?
一個(gè)優(yōu)秀的軟件開(kāi)發(fā)工程師,必須對自己的產(chǎn)品負責。如今,錦州云店商城一個(gè)手機就可以解決吃飯、休閑、出行、娛樂(lè )等各方面需求,只要幾個(gè) APP 就可以搞定全部,軟件產(chǎn)品越來(lái)越多,但真正可以算得上顛覆性創(chuàng )新的東西卻很少,基礎軟件的質(zhì)量似乎越來(lái)越差,這個(gè)鍋應該開(kāi)發(fā)背嗎?
在 V2EX 上,某開(kāi)發(fā)者深夜發(fā)表了一篇題為“底層開(kāi)發(fā)性?xún)r(jià)比越來(lái)越低,基礎軟件的質(zhì)量將會(huì )越來(lái)越差”的帖子,他表示,前半句是當前事實(shí),后半句則是基于事實(shí)對未來(lái)的推斷,也就是說(shuō),未來(lái),基礎軟件的質(zhì)量將會(huì )越來(lái)越差,這又從何說(shuō)起呢?
他認為,現在的年輕人中只有很小一部分愿意去維護和學(xué)習前人花費數十年時(shí)間,整理出的數千萬(wàn)行代碼,基礎軟件的補丁質(zhì)量在逐年下降。大部分年輕人不愿意做“平行世界的守護者”,更加贊同“不重復造輪子”的說(shuō)法。
隨著(zhù)市場(chǎng)對產(chǎn)品研發(fā)和迭代周期的要求越來(lái)越短,各種敏捷開(kāi)發(fā)工具應運而生,與以往相比,同樣的功能只需要很少的特定代碼就可以實(shí)現,軟件開(kāi)發(fā)工程師花費的時(shí)間確實(shí)變少了,但對性能和用戶(hù)體驗的關(guān)注也在下降,這也導致大量軟件流入市場(chǎng),但整體質(zhì)量卻是在下降。
當然,不少奮斗在一線(xiàn)的底層開(kāi)發(fā)者對此也表達了不滿(mǎn),認為國內尚有很多開(kāi)發(fā)者重視基礎軟件質(zhì)量,并愿意更新迭代前人編寫(xiě)的底層代碼,只是這個(gè)群體的話(huà)語(yǔ)權太少,被外界聽(tīng)到的聲音太弱。
當然,也有網(wǎng)友認為,這也不全是軟件工程師的問(wèn)題,很多公司在軟件開(kāi)發(fā)過(guò)程中往往是需求提了改,改了提,最終開(kāi)發(fā)的產(chǎn)品成了一堆無(wú)用代碼堆積;工期一再壓縮,為了趕時(shí)間,大部分軟件開(kāi)發(fā)工程師不得已省去設計時(shí)間,自然沒(méi)工夫評估項目效益和成本,后果往往是非常痛苦的修改和更新,不同開(kāi)發(fā)者之間的協(xié)作也可能影響系統其他功能,導致整個(gè)軟件開(kāi)發(fā)流程漏洞百出。
因此,軟件質(zhì)量好壞不是單純依靠軟件開(kāi)發(fā)工程師就可以解決的,這其中還涉及到多人協(xié)作,部門(mén)合作等問(wèn)題,這個(gè)鍋全部砸在工程師身上,也是有點(diǎn)痛。
如何避免無(wú)用代碼堆積?
當曾經(jīng)向往的職業(yè)變成一日又一日的無(wú)用代碼堆積,多少讓開(kāi)發(fā)者有些心灰意冷,雖然無(wú)法保證整個(gè)產(chǎn)品質(zhì)量,但至少可以在代碼層面下點(diǎn)功夫。無(wú)用代碼堆積這種現象在日常軟件開(kāi)發(fā)中非常普遍,對于需求頻繁被修改的問(wèn)題,根源在于弄清楚軟件開(kāi)發(fā)的目的是什么,代碼有沒(méi)有用的最終決定者應該是用戶(hù),如果一段代碼具備的功能符合用戶(hù)需求,具備業(yè)務(wù)價(jià)值,那么就是有用的。
在軟件開(kāi)發(fā)過(guò)程中,需求變更和代碼修改是很正常的事情,但這個(gè)不確定性需要在一定范圍內。對此,最佳的解決方案可能是迭代開(kāi)發(fā),也叫迭代增量式開(kāi)發(fā),將整個(gè)開(kāi)發(fā)周期分解為若干時(shí)間段,每隔一段固定時(shí)間就對軟件進(jìn)行一次小迭代,每迭代幾次就進(jìn)行一次全面測試和大版本更新,對開(kāi)發(fā)成果進(jìn)行質(zhì)量評審,這個(gè)過(guò)程最重要的是聽(tīng)取最終用戶(hù)的意見(jiàn),以便及時(shí)調整優(yōu)化,避免無(wú)效需求,尤其是決策者拍腦門(mén)出來(lái)的決定。
開(kāi)發(fā)之前,技術(shù)負責人務(wù)必準備好相應文檔,確定好各工程師的分工,尤其是需要協(xié)同完成的部分。另外,團隊盡量抽出時(shí)間和精力進(jìn)行代碼 Review,并以降低代碼復雜度為目標,如果不同工程師之間的代碼間經(jīng)常互相影響,可以考慮讓這類(lèi)程序員負責獨立開(kāi)發(fā)模塊,降低對整個(gè)項目的影響。
長(cháng)期以來(lái),測試在國內的重視程度并不夠,一個(gè)測試團隊起碼應該有白盒測試、效率測試、單元測試等各類(lèi)專(zhuān)職人員,不建議在所有功能完成之后才開(kāi)始測試,最好是完成一個(gè)功能就馬上交給測試,測試階段應由測試完全掌握主動(dòng)權,開(kāi)發(fā)必須尊重測試人員的工作。
歸根結底,軟件開(kāi)發(fā)是一項非常復雜的工作,為了避免過(guò)程出錯,很多公司已經(jīng)摸索并建立了成熟且完整的代碼編寫(xiě)規范,包括變量命名規則、層次化設計、類(lèi)和接口設計,到最后的代碼 Review 都很清楚,最重要的不是會(huì )寫(xiě)代碼,而是學(xué)會(huì )解決問(wèn)題,做真正有價(jià)值的事情。
毫無(wú)疑問(wèn),軟件工程開(kāi)發(fā)是一項有價(jià)值且極具挑戰的工作,這種價(jià)值不僅體現在工作中,很多優(yōu)秀的軟件產(chǎn)品已經(jīng)對用戶(hù)生活產(chǎn)生影響,這也是很多一線(xiàn)科技公司不可或缺的崗位,但價(jià)值到底有多大還要取決于做的人,如果開(kāi)發(fā)者自身技藝不精,很容易弄巧成拙。