一文弄清傳統軟件開發與互聯網軟件開發的異同

在這裏插入圖片描述

在傳統軟件開發領域8年,從一線開發,到項目技術經理,再到產品研發技術負責人,一路走來,感受着互聯網行業的軟件越來越貼近日常生活,一直有一個疑問,那就是互聯網行業中的軟件開發是怎麼樣的?兩年前,決定轉行到互聯網行業實際體驗看一看,通過兩年的觀察總結以及實際親身感受,我覺得我已經找到了答案,解除了心中的疑問,此文寫給那些跟我有相同疑問的朋友。

相信很多在傳統軟件開發領域的朋友或多或少對互聯網公司的軟件開發有如下疑問:開發流程是怎麼樣的?人員組成是怎麼樣的?系統架構是怎麼樣的?成長路線是怎麼樣的?是不是加班厲害?薪資福利是不是傳言的那麼有誘惑力?

而在互聯網行業高壓力的同學,也會問:傳統軟件開發公司工作會不會輕鬆點?會不會穩定一點?是不是在傳統軟件開發領域年齡沒那麼敏感?

這篇文章會一一解答上述疑問

介紹

首先,先來介紹一下何謂傳統軟件行業,何謂互聯網軟件行業,有如下幾個明顯差異點。

傳統行業

傳統軟件開發行業,也可以叫做企業軟件開發行業,他的明顯特徵如下

  • 軟件: 比如財務系統、OA系統、CRM、ERP等業務系統,醫療、電力、智慧城市、稅務等行業軟件,目的爲幫助公司或政府與事業單位更高效運轉的業務支撐系統
  • 目標羣體: 客戶 - 軟件的使用羣體一般爲公司內部員工、政府、事業單位職員
  • 公司: 金蝶、用友、中軟、東軟等

互聯網行業

  • 軟件: 比如微信、QQ、baidu.com、今日頭條、抖音、優酷等
  • 目標羣體: 用戶 - 廣大互聯網用戶
  • 公司: 阿里、騰訊、百度、頭條等

項目流程

作爲碼農,不論在傳統行業還是互聯網行業,都是做軟件開發,軟件開發一般都是以項目爲單位。首先,就先以項目流程的角度聊一下傳統軟件行業與互聯網軟件行業的區別。

在這裏插入圖片描述

傳統行業

結合上圖,從如下幾點說說傳統軟件項目的項目流程

需求來源

需求來源一般爲甲方客戶,當一家公司慢慢成長起來時,往往需要軟件來提升公司的管理與運行效率。比如所有公司無一例外都需要人事管理系統、財務管理系統、OA系統、考勤系統;一些製造行業還需要生產管理的ERP系統,醫院需要病例管理系統、學校需要學生管理系統、政府需要公文管理系統等等。這些甲方客戶一般都沒有專門的軟件開發團隊,大部分只有一個叫技術中心的部門負責網絡與各種系統的管理。所以,要落地這些軟件,就需要專業的軟件公司來實施。

需求收集

有了實際的需求,要麼客戶主動找到軟件公司,要麼軟件公司挖掘客戶;首先入場的一般都是銷售入場(主管商務事項,比如報價、簽約,客戶關係維護,需求挖掘,以便籤約項目二期、三期…)。
有時還會有售前顧問支持(主管技術,比如給客戶給出技術方案、初步分析出項目實施範圍,方便合理報價);需要說明的是售前顧問通常都是技術出身,項目經驗豐富,不僅是技術專家,還是業務專家,對某一行業有深刻理解,能夠告訴客戶,怎麼做纔是行業最好的方案,利用行業經驗幫助客戶提升效率,而不是簡單把客戶的下線流程搬到線上。

需求實施

項目簽約下來後,緊接着就是項目實施團隊入場。
項目團隊包含這些人:項目經理、需求分析師、技術經理、技術開發、UI、QA
項目實施有時爲駐場開發,有時是在公司開發好後到甲方公司去部署上線

需求交付

需求通過QA測試部署後,通常會有試運行階段,在試運行階段,客戶可提出問題點與優化點。所有功能沒問題後,即完成交付,技術團隊撤出,投入到下一個項目,銷售收尾款。
偶爾客戶還會購買系統運維服務,即支持系統運行期間的問題處理以及小需求迭代。

互聯網行業

結合上圖,從如下幾點說說互聯網軟件項目的項目流程

需求來源

需求來源主要在於這三個方面

  1. 產品需求:PM發起的需求,比如要做個視頻面試的新產品、要優化下單流程之類的
  2. 營銷需求:此類需求一般爲公司運營和營銷人員發起的需求,PM把需求梳理爲產品文檔後,交由技術團隊落地
  3. 內部需求:此類需求可理解爲內部系統建設需求;前面兩種一般稱之爲To C,這種叫To B

最後,還有一種活兒的來源,那就是技術自己發起的需求,比如系統重構,技術基礎設施的建設,比如系統性能、異常監控系統、持續集成系統等

需求收集

在互聯網公司,所有的需求都會收集到產品經理(PM)處,技術團隊原則上只從產品經理處承接需求

PM會把各種需求整理成需求文檔,還會附帶上需求原型。通常會先期找技術初評,確認哪些功能無法實現然後調整需求文檔。

需求實施

需求沒問題後,C端需求最先入場的是UE、UI,即交互設計與視覺設計,完事後前端FE拿到設計稿後進行開發,這期間後端開發可並行,最後接口聯調、測試

需求交付

  • 測試完畢後,預發佈、預發佈沒問題由QA上線

貼一個以前端視角的大致項目流程:
在這裏插入圖片描述

最明顯的感受就是,傳統行業的軟件開發是給甲方幹,在互聯網行業的軟件開發是給自己幹!

項目相關人員

上面介紹了項目的整體流程,接着針對於項目團隊的組成,即實際參與項目落地的人員以及人員分工聊一聊

傳統軟件項目

在這裏插入圖片描述

  • 項目經理

項目的總負責人,負責與客戶對接,大部分情況參與需求的調研,把客戶的線下需求轉變爲需求文檔,給到技術人員去落地

  • 技術經理

項目的技術負責人,負責整個項目的關鍵技術把控,業務抽象、系統架構、模塊劃分,以及對開發工程師的工作分配與管理

  • 需求分析師

協助項目經理梳理需求,比較大的項目一般是項目經理整體把控,帶領多個需求分析師,沒人負責一塊業務需求,把需求文檔化。目的在於與客戶對齊需求,保證開發出來的東西是客戶想要的。還有一個比較重要的目的是,開發之前都需要客戶確認需求,方便控制需求變更以及需求範圍,避免無限制的增加需求。

  • UI設計師

一般PC端系統首頁,以及移動端的一些頁面需要UI單獨設計,後臺系統一般不需要。UI屬於公共資源,需項目組申請,一般不常駐項目。

  • 開發工程師

在傳統軟件開發中,很少會有專職的前端人員,大部分情況都是項目經理劃分好功能模塊,開發人員從數據庫設計、後端業務邏輯編寫,再到前端UI實現,都是同一個人。好處很明顯,就是效率高;壞處就是相對於互聯網行業的分工細化,質量會相對差一些。

  • 測試工程師

公共資源,到測試階段入場。一般負責壓力測試、性能測試、功能邏輯測試。

  • 系統安全

關於系統安全這塊,政府或者國家級項目,甲方一般會找第三方安全廠商來做滲透測試,或者直接找國家網絡安全中心來做系統的安全評估,最終給出系統的安全報告,有哪些系統漏洞會一一列出來。在經歷過的項目中,私企這一塊基本沒有,政府與事業單位軟件項目居多。

互聯網軟件項目

下面貼一張曾經以項目經理角色負責過的項目,因爲該項目較大,牽涉到的人較多,可以很清晰的看到一個項目的完整人員分工與構成。
在這裏插入圖片描述

  • PM

產品經理,負責需求文檔編寫,以及需求上線後產品效果的跟蹤

  • UE

交互設計,跟進PM的需求,制定頁面的交互邏輯

  • UI

根據需求與交互稿設計UI圖,然後註明UI圖的標註,直接給到前端或者上傳到藍湖

  • 視覺

視覺與UI實際上都屬於設計部門,視覺設計的主要分工爲活動海報、運營活動頁面,插畫等的設計

  • RD

後端開發,提供數據接口給到端上(FE、APP)

  • FE

前端開發,負責所有H5頁面、各種小程序、NodeJS層的開發。

  • APP

一般分爲兩塊,IOS與Android

  • QA

測試人員,FE與RD並行開發,都開發完畢後進行接口聯調,聯調完成後QA介入測試

  • BI

數據分析人員,數據一般來源於前端的埋點以及業務數據,負責根據相關數據給出數據分析報表

  • 安全

安全團隊負責把控系統上線前是否有安全漏洞

  • 法務

保障新上線的項目需求無法律風險。比如一些文案的提示,活動的規則、用戶協議等。

  • 運營

提出需求,營銷活動規則的指定

  • 財務

營銷活動類需求活動資金的控制

傳統軟件項目開發一般都會基於公司產品來做二次開發,提升開發效率。互聯網軟件大部分情況都是對現有線上業務的迭代,爲了提升開發效率後端也有中臺組、架構組支撐,前端與UI也會抽取業務組件方便開發。

傳統軟件開發項目,由項目經理負責制,從項目最開始跟到系統上線驗收;互聯網公司中的項目組織相對零散,需求詳設評審進入開發後基本上就沒PM的事情了,這個時候一般會在FE、RD、QA中推舉一位項目負責人推進項目的落地,把控項目進度。敏捷項目一般由Master來負責。

項目技術架構

傳統行業

核心訴求: 在滿足功能需求的情況下,怎麼好維護,怎麼開發成本低怎麼來。機器都是甲方出,所以能通過堆機器解決的問題都不是問題 (不過也需要爲客戶考慮項目整體成本)

常見的架構是這樣的:
在這裏插入圖片描述

傳統行業的企業內部系統技術架構80%都是隻做到讀寫分離、按應用拆分、分佈式緩存、單獨的查詢服務就不再往下走了,因爲再往下走,開發成本會成指數級上升。少數會做到大表拆分、負載會上LVS或F5。

對於這樣的技術架構,只要機器足夠,性能夠強,足以支撐一家上萬人的公司日常正常運轉了。

對於那種項目金額上千萬的項目,更多的也是採取多地分開部署,數據集中上報彙總的方式,避免架構複雜化帶來的開發成本提升。

互聯網行業

核心訴求: 支持快速迭代、穩定、高併發。另外,機器都是自己出,多一臺都是成本…

爲了達成上述訴求,基礎配置大部分都是這樣的,上不封頂
在這裏插入圖片描述

可以看到,對於傳統行業軟件技術架構,相對於互聯網軟件架構,最明顯的區別標誌就是微服務

這裏是一篇很不錯的講述架構演進的文章:https://mp.weixin.qq.com/s/yZlQUZQS0Rkn_7vY7hjvHQ

成長路線

大部分上了規模的互聯網公司都有清晰明確的職級體系;傳統行業軟件公司大部分職級體系較模糊。

傳統行業

一般分爲技術路線與業務路線兩種

技術路線

職級從初級開發、中級開發、高級開發、資深開發、一路到系統架構師;

實際工作中,做到在項目中負責整個項目的技術負責人,或者公司的產品研發負責人,技術路線基本就到頭了

項目技術負責人更多的要求綜合能力;產品研發負責人給更多要求技術深度與從項目業務中提煉成產品的能力

業務路線

大多數都會先做一兩年技術,然後做項目的需求分析人員,再然後到項目經理,成爲業務方面的專家;例如財務領域專家、生產製造領域業務專家、金融領域業務專家等。

這條線是業務經驗越豐富越值錢,需要靠一個個實際項目歷練出來,無捷徑可走。

互聯網行業

上規模的互聯網公司,大部分都有成體系的晉升路線圖

下面從網絡上找到幾張圖,比較清晰
在這裏插入圖片描述

以阿里爲例,分爲技術線和管理線
在這裏插入圖片描述

技術線職級對應的要求如下所示
在這裏插入圖片描述

能力要求

  • 傳統軟件開發

在傳統軟件開發中,更多的是要求技術的廣度,以及綜合能力,希望技術人員是多面手,要求以最快的速度,最低的成本搞定需求。開發時,更多的也是按功能模塊拆分,希望開發人員能夠從前到後一條龍搞定。對時間、代碼質量不敏感,對項目的資源投入與收益敏感。

  • 互聯網軟件開發

在互聯網公司中,崗位拆分的很細,會更多的要求單一方向的技術深度,專門的崗位幹專業的事。之所以會把崗位拆這麼細,是因爲這樣方便模塊拆分,實現更多的並行開發,盡力做到增加人員,就能加快項目開發進度,實現快速搶佔市場的目的。

行業關注點

  • 傳統行業

更多的關心一個項目的投入與產出比,所以會在產品上多下功夫,儘量的把通用功能產品化,以更多的複用來減少開發成本。同時,更注重業務解決方案的抽取,提升核心競爭力。

  • 互聯網行業

更多的關心需求的上線速度,更快的速度佔領市場就會有更多的優勢;所以會更多的關注模塊化,實現通過不斷的增加開發人員,就能明顯提升開發速度,所以崗位、系統纔會拆得比較細粒度。爲了解決複用問題,衍生出中臺概念。

關於加班

傳統軟件行業

大部分情況是早九晚六,中午可午休,基本不加班。

由於傳統軟件每個項目的開發週期較長,大部分都是按月計,所以緊急情況下,有足夠的消化空間,很少有加班特別狠的情況。

特殊情況,從業8年,甲方爲日企,唯一一次連續996一個月。

其他: 有出差需求,因爲有時需要到客戶所在地駐場開發。

互聯網軟件行業

公認的加班狠,什麼996(早9點,晚9點,一週6天)、大小周(隔週雙休)的開創者全部來源於這個行業;

也有極少數公司能做到早10晚7,不過碰到上線,基本都得加班(有時上線還挺頻繁的,一週至少有一半時間有需求上線)

其他: 基本無出差需求

總的來說,傳統軟件行業加班時間是少數,有更多的非工作時間;互聯網軟件開發行業,加班是常態,不加班或少加班的公司簡直是一股清流存在。

關於薪資福利

傳統軟件行業

從實際待過的兩家A股上市公司,以及所瞭解的其他頭部傳統行業軟件公司來看,漲薪基本上靠你的直屬主管覺得你應該加薪纔會獲得薪資的提升

雖然從系統裏能夠查出來你的職位是助理開發還是資深架構師,但是公司沒有一個相對明確的每個職位層級的薪資範圍,也沒有正式的述職與職位晉升一說,我的感受就是你的薪資越高,代表着你的職級越高。整體來看,同職級崗位薪資低於互聯網行業一個層級,月薪30k是一個比較難達到的坎。

股票、期權激勵較難見到。

互聯網軟件行業

互聯網公司的漲薪基本上靠如下幾個方面

  • 年度普調(發展好的公司)
  • 每年績效不錯,核心骨幹(針對性漲薪)
  • 職位晉升

薪資基本與職級掛鉤,每個職級對應一個薪資範圍,達到薪資範圍的上限,就只有靠職位晉升來提升了。薪資範圍可參見成長路線部分的貼圖。

股票、期權激勵較常見。

關於穩定性

傳統軟件行業

傳統行業相對穩定,原因有如下幾點

  • 以項目爲單位,每個項目都是獨立的業務邏輯,要想摸清摸透一個方向的業務邏輯,需要花費大量的時間;即使一個業務方向熟悉了,還有下一個業務方向等着你。有效避免過早進入舒適區,導致人員的不穩定因素增加。即使不想做項目往業務方向紮根,希望多做技術,還可以轉產品研發,摸透整個產品架構與細節至少又是兩年過去了。
  • 行業內的公司就那麼些家,可選擇面不大
  • 行業內跳槽薪資漲幅有限

傳統軟件領域,很多軟件系統屬於用戶的核心業務系統,比如ERP、財務系統等,屬於剛需。所以,這一塊只要有穩定的客戶來源,即使是運維需求也會有一口飯吃。因爲穩定性,收入也很難像互聯網行業公司那樣快速增長。

互聯網軟件行業

業務不賺錢,即使你再努力、個人能力再強也只能走人

見過上一天還在努力上班,第二天就被n+1裁掉的場景

在互聯網行業能夠真切的感受到個人的渺小,選擇大於努力。

還有那句,只要在風口上,即使是豬也能飛起來的生動詮釋。

在互聯網軟件開發領域裏,兩三年一跳槽是常態,人員流動性較大。

關於年齡

傳統軟件行業

由於加班沒那麼狠,很少有拼體力的情況,所以在傳統行業軟件開發領域年齡沒那麼敏感。

曾經的同事,好多都是在這個行業幹了20+year的老碼農,照樣幹得風生水起。

因爲傳統軟件開發領域的特殊性,需要更多的與甲方客戶溝通交流,外加對行業業務需求的深刻理解。年齡大,代表着更豐富的與客戶打交道經驗,以及更豐富的業務行業經驗,更具競爭力。

之前還碰到有客戶指明項目實施團隊必須要有10+year的帶隊,或者不能低於多少比例,直接寫進合同那種。

互聯網軟件行業

對於這個行業,崇尚一個字“

要求業務發展快、個人成長快

經常可以在網絡或工作中聽到說XXX多年輕就晉升xxx職級了

網絡上甚至還流傳xxx大廠到了35歲還沒晉升到xxx職級,就極有可能被優化掉的說法

這樣的氛圍,對於那些想把更多時間放到生活上的人極不友好

難道就不能保持低職級,拿該拿的薪資,保持work balance?

no,no,no;隨着年齡的增大,這種安於工作現狀的人會顯得跟整個團隊格格不入,極易績效背鍋

xxx公司對於這類員工,還發明瞭一個叫做“老白兔”的標籤

由此可見,互聯網行業對於年齡的友好程度!

所以,建議想再奮鬥一下,再挑戰一下自己的到互聯網行業去,那裏有更大的機遇與空間。
建議對技術追求沒那麼高,希望工作生活相對平衡,可以考慮一下傳統軟件行業,那裏只要你做事靠譜,年齡不是問題。

關於轉行

首先要注意的是,得看在什麼團隊,什麼崗位,做什麼事情。

傳統軟件轉互聯網

可能在傳統行業公司,做的事情偏互聯網公司的玩法。例如:做針對於互聯網用戶的系統。

互聯網公司做事、溝通相對open,競爭激烈,優勝劣汰;業務發展不好,能力再強努力再多也得面對裁員;所以跳槽到互聯網公司一定要選對行業、選對部門;去冷門行業、邊緣部門要多考慮

優勢: 技術寬度、軟實力、綜合能力

互聯網轉傳統軟件

也可能在互聯網公司,實際上做的事情跟在傳統行業的軟件公司差不多。例如:做公司內部的各種系統。

傳統軟件公司相對比較穩定,企業業務系統是剛需,旱澇保收;正因如此,公司業務也很難有指數級的增長,薪資也同理;可考慮走業務專家路線。

優勢: 技術深度、良好的自驅力、技術創新能力

最後

如果用一句話來總結傳統軟件開發與互聯網軟件開發,我覺得可以用一個更“”,一個更“”來概括。

行業的業務形態決定了訴求點不同,由此帶來工作方式、能力要求等方方面面的不同。

如果要問到底從事傳統軟件開發好還是互聯網軟件開發好?

我要說的是:“這個問題對於不同的人有不同的答案,沒有好與不好,只有適合與不適合”。

如有其它相關問題,在公衆號回覆問題或加微信諮詢,儘量知無不言言無不盡。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章