對大多數人而言,軟件工程開發(fā)是一個除作業(yè)之外無用的作業(yè)之一,這項技能在日子中幾乎用不到。實際上,軟件開發(fā)工程師在產品生命周期中的作用十分嚴重,涵蓋需求、規(guī)劃、開發(fā)、修正、發(fā)布等多個環(huán)節(jié),日子中也沒有傳說的那么無趣和無用。許多軟件開發(fā)工程師拿手經過編碼處理日子問題,比方編寫一些軟件或小程序自動運行部分重復且雜亂的作業(yè);為零售商鋪編寫網站或者APP,便利用戶選購商品;為家居編寫控制程序以到達智能意圖;編寫簡略的日程提醒軟件,防止忘掉重要約會......有業(yè)內人士表態(tài),是否有用取決于用戶是否真的需求,只要需求便是軟件開發(fā)工程師的價值所在。
此外,在國外一線科技公司作業(yè)的軟件開發(fā)工程師,比方谷歌、蘋果,薪資水平早已到達年薪100萬人民幣左右。反觀國內,2010年的軟件出口規(guī)劃到達215億元,軟件從業(yè)人員到達72萬人,盡管如此,但人才缺口仍舊巨大,尤其是高素質軟件工程人才,極度短缺。
所以,這個崗位不是無用,而是頂尖人才尚未到位。
軟件質量越來越差是開發(fā)的鍋嗎?
一個優(yōu)異的軟件開發(fā)工程師,有必要對自己的產品擔任。如今,一個手機就能夠處理吃飯、休閑、出行、文娛等各方面需求,只要幾個APP就能夠搞定悉數,軟件產品越來越多,但真實能夠算得上顛覆性立異的東西卻很少,根底軟件的質量似乎越來越差,這個鍋應該開發(fā)背嗎?
在V2EX上,某開發(fā)者深夜發(fā)表了一篇題為“底層開發(fā)性價比越來越低,根底軟件的質量將會越來越差”的帖子,他表示,前半句是當時現實,后半句則是根據現實對未來的揣度,也便是說,未來,根底軟件的質量將會越來越差,這又從何說起呢?
他以為,現在的年青人中只有很小一部分樂意去維護和學習前人花費數十年時刻,整理出的數千萬行代碼,根底軟件的補丁質量在逐年下降。大部分年青人不樂意做“平行世界的守護者”,更加贊同“不重復造輪子”的說法。
跟著商場對產品研制和迭代周期的要求越來越短,各種敏捷開發(fā)工具應運而生,與以往比較,相同的功用只需求很少的特定代碼就能夠實現,軟件開發(fā)工程師花費的時刻確實變少了,但對功用和用戶體會的關注也在下降,這也導致大量軟件流入商場,但全體質量卻是在下降。
當然,不少奮斗在一線的底層開發(fā)者對此也表達了不滿,以為國內尚有許多開發(fā)者注重根底軟件質量,并樂意更新迭代前人編寫的底層代碼,只是這個群體的話語權太少,被外界聽到的聲音太弱。
當然,也有網友以為,這也不全是軟件工程師的問題,許多公司在軟件開發(fā)進程中往往是需求提了改,改了提,終究開發(fā)的產品成了一堆無用代碼堆積;工期再三壓縮,為了趕時刻,大部分軟件開發(fā)工程師不得已省去規(guī)劃時刻,天然沒工夫評價項目效益和成本,結果往往是十分苦楚的修正和更新,不同開發(fā)者之間的協作也可能影響系統(tǒng)其他功用,導致整個軟件開發(fā)流程漏洞百出。
因而,軟件質量好壞不是單純依托軟件開發(fā)工程師就能夠處理的,這其中還涉及到多人協作,部門協作等問題,這個鍋悉數砸在工程師身上,也是有點痛。
怎么防止無用代碼堆積?
當從前向往的作業(yè)變成一日又一日的無用代碼堆積,多少讓開發(fā)者有些灰心喪氣,盡管無法確保整個產品質量,但至少能夠在代碼層面下點功夫。無用代碼堆積這種現象在日常軟件開發(fā)中十分普遍,對于需求頻繁被修正的問題,本源在于弄清楚軟件開發(fā)的意圖是什么,代碼有沒有用的終究決定者應該是用戶,假如一段代碼具備的功用契合用戶需求,具備業(yè)務價值,那么便是有用的。
在軟件開發(fā)進程中,需求變更和代碼修正是很正常的作業(yè),但這個不確定性需求在必定范圍內。對此,最佳的處理方案可能是迭代開發(fā),也叫迭代增量式開發(fā),將整個開發(fā)周期分解為若干時刻段,每隔一段固定時刻就對軟件進行一次小迭代,每迭代幾次就進行一次全面測驗和大版本更新,對開發(fā)成果進行質量評定,這個進程最重要的是聽取終究用戶的定見,以便及時調整優(yōu)化,防止無效需求,尤其是決策者拍腦門出來的決定。
開發(fā)之前,技術擔任人務必準備好相應文檔,確定好各工程師的分工,尤其是需求協同完結的部分。另外,團隊盡量抽出時刻和精力進行代碼Review,并以下降代碼雜亂度為方針,假如不同工程師之間的代碼間經?;ハ嘤绊?,能夠考慮讓這類程序員擔任獨立開發(fā)模塊,下降對整個項意圖影響。
長期以來,測驗在國內的注重程度并不行,一個測驗團隊最少應該有白盒測驗、效率測驗、單元測驗等各類專職人員,不建議在所有功用完結之后才開始測驗,最好是完結一個功用就馬上交給測驗,測驗階段應由測驗徹底掌握主動權,開發(fā)有必要尊重測驗人員的作業(yè)。
歸根結底,軟件開發(fā)是一項十分雜亂的作業(yè),為了防止進程出錯,許多公司現已摸索并建立了成熟且完整的代碼編寫規(guī)范,包含變量命名規(guī)矩、層次化規(guī)劃、類和接口規(guī)劃,到最后的代碼Review都很清楚,最重要的不是會寫代碼,而是學會處理問題,做真實有價值的作業(yè)。
毫無疑問,軟件工程開發(fā)是一項有價值且極具挑戰(zhàn)的作業(yè),這種價值不只體現在作業(yè)中,許多優(yōu)異的軟件產品現已對用戶日子產生影響,這也是許多一線科技公司不可或缺的崗位,但價值到底有多大還要取決于做的人,假如開發(fā)者本身技藝不精,很容易弄巧成拙。多使用,以改進企業(yè)營收和客戶關于產品的體會度。