主頁 > 後端開發 > 大廠需求研發流程,進去前了解一波?

大廠需求研發流程,進去前了解一波?

2020-10-06 09:06:06 後端開發

點贊再看,養成習慣,微信搜索【三太子敖丙】關注這個互聯網茍且偷生的程式員,

本文 GitHub https://github.com/JavaFamily 已收錄,有一線大廠面試完整考點和系列文章,

前言

我的讀者好像學生居多,然后大家最近問的比較多的一個話題就是大廠的研發流程,都比較好奇,整個流程是怎么操作的,

我也不多BB了,那下面就跟隨暖男的腳步,走進大廠研發流程吧,

正文

我們先看看一個產品有哪些研發流程,帥丙就用自己接觸的阿里系的研發流程舉例了,這也基本上是互聯網大廠的研發流程了,可能細節有出入,但是絕對大同小異,

我問了下位元組,多多,騰訊的朋友出入不大,所以還是具有代表性,

看完流程我們就一個個點的去看看每個環節干了些啥,我們開發同學在這個環節需要做啥,以及在每個環節的職能,

需求提出:

這個環節主要是產品爸爸給我們提需求,每個需求都是他們從用戶,或者自己絞盡腦汁想出來的,但是產品爸爸還拿不準,不能直接敲定,所以就需要我們大家(產品,UI,前端,后端,客戶端和測驗)一起討論一下,看看這個需求是否合理,或者這個需求是否有意義,能否達到預期,技術實作的成本,周期等等,

一旦聊成了,他們就會進入下一個階段,聊不成他會想方設法讓你答應,然后進入下個階段,知道我為啥叫產品爸爸了吧?

需求PRD提出:

這個階段,產品爸爸會根據第一版聊下來的結果,大致出一個Demo版本的PRD,會畫出初版的原型圖,并且配上文字說明,所有涉及到的業務,還有互動細節都會羅列出來,

大致就是下圖這樣:

這個時候大家又會圍繞這一版本去開會討論,敲定細節,這個環節會久點,因為細節比較認真,邏輯也不能出錯,還有UI稿子也得敲定,這里如果不敲定邏輯,UI提前去畫原型圖,后面假如邏輯推翻,一切重來就會浪費大量時間,

這一環節大家都會把細節問清楚,不了解的點也會去了解,測驗,開發,UI我們都會在會議上提出自己的觀點,自己的意見,然后等產品反饋,最后意見一致之后,產品當天就回改出敲定版本,

UI就會按照產品爸爸的意思去作圖,接下來就是互動設計評審了,

互動設計評審:

UI會畫出客戶端,前端,H5開發所需要的UI圖,基本上就是我們看到的產品的樣子了,不過還是要敲定細節,比如按鈕合理不,或者上面資料是否在這展示,或者這里展示的資料是否合理,

這個環節會比較快,只要UI按照之前敲定的邏輯開發,出入不會很大,一般都是小改,

但是也不乏很多,之前敲定了情況,等UI按照敲定版本出了圖,但是卻發現出圖之后有些不合理的點,比如是否應該在這里展示GMV(銷售總額),或者是否這樣展示活動規則啥的,會有這種情況,不過是小概率事件,改動也不會特別大,

UI界面:

大家看到的這種操作界面,按鈕,圖示的各種位置和圖案,都是UI在這個階段設計好的,(我什么都沒暗示,不用關注我的B站)

大家敲定后就進入我們開發人員的回合了,

概要設計:

概要設計,這個是大廠程式員需求下來之后基本上都會做的一步,不過看需求大小,可能很多小需求直接就詳細設計了,也有啥設計都不用做的小改動,具體需求具體分析嘛,

很多不了解的同學可能會問,需要設計什么呢?為什么要設計呢?

問得好,經常看我文章的都知道,技術是把雙刃劍,你用了技術之后你是不是需要列出他的優點缺點,出問題之后的解決方案,還有可能出現的問題注意點等等,

這么是為了讓你能有把控力,比如你這個需求接入了新技術Es**(**Elasticsearch)你什么都不管你就是要接入它,你把他開發好了上線了,但是有啥坑你知道么?上線崩了怎么辦?

不主動,不拒絕,不負責,這是渣男的行徑,我們需要負起責任,

這個環節你需要考慮這個需求涉及到哪些服務了,需要新增哪些介面,修改哪些介面,表有現場的還是要新建表,欄位要新建么?

其實遠遠不止這些問題,這就是我們做設計的主要原因,也是大家作業里面能成長的途徑之一,你以為大佬們的經驗是怎么來的?

推薦工具:Xmind/ProcessOn

  • Xmind官網地址: https://www.xmind.cn
  • ProcessOn在線作圖地址:https://www.processon.com

ProcessOn是我使用最頻繁的工具了,我身邊也有很多小伙伴在用,也推薦大家都使用:

大家在學習,看書等等的時候做個腦圖,后面學習和復習的時候思路會很清晰,而且效率瞬間很多,形成知識體系,

概要設計一般就是做個大概,給大家看一下我自己在設計ES相關的需求的時候的概設,比較粗糙看個大概就好了:

這個設計好了,就需要給Leader看,看理解程度,一兩次返工是有可能的,如果你像或者像敖丙一樣笨的話,是有可能會被打回N次的,這里我得提一下,好好做設計好處大大的有,自己體會,

然后會進行一輪測驗用例評審,比如你涉及哪些服務,新增了哪些介面,改了哪些介面,都是要同步出來的,至于為啥?

是因為測驗會依據這個資料,評估影響范圍,方便他寫測驗用例,后面會提到,

詳細設計

小伙伴又要問了啥是詳細設計呀帥丙

傻瓜,簡單呀,見名知意嘛,概要設計是大概的設計,詳細設計是詳細的設計,

我們研發的時候整個流程往往很復雜,如果你理解不對直接就寫代碼,最后容易造成返工,延期,加班,被罵,心情差,回家吵架,離家出走,露宿街頭,饑寒交迫,被迫吃野味,然后全國,,,,

看到不做詳細設計的后果了吧,其實大家花點時間做詳細設計很有必要,你思路完全清晰了,寫代碼那就是分分鐘的事情,不是嘛?

那再看看帥丙的一個小設計吧,之前文章中大量的流程圖,時序圖都來自它,主要是這玩意還是在線的,都不用下載很方便啊,

詳細設計的工具我用的就是之前提到的在線**作圖神器:**ProcessOn https://www.processon.com

還是我自己之前設計的一些流程圖,大家可以看看:

這個環節一樣重要,這個地方如果你能想好很多細節,開發的時候效率會高很多,像我上面的一些點,基本上就是看著圖開發了,

這個環節一般上不需要Leader參與,但是如果你有疑問或者不了解的點還是要提出來的,

測驗用例評審:

上面我們說過,測驗會根據你的概要設計,評估你的影響范圍,你的影響點,新增和改動的介面啥的,去撰寫自己的測驗用例,

測驗用例,主要是為了把改動點影響點都考慮到,測全一點,免得上線了影響別的現有業務,也是為了把你開發的功能可能出現的bug給排除了,

我拿個小破站的小用例大家看看,這個比較粗糙但是也有點那味了,

這個環節也會開會討論,也是細節的確定,比如他寫的是否合理,或者有什么點沒考慮到,大家有沒有補充的,

介面定義&開發&前后端聯調

這個環節其實比較好理解,啥都敲定了,那就開發唄,開發差不多了,就得前后端聯調了,

這里有個小細節還是想說一下,一般開發前我們都會提前定義資料型別,介面名稱,然后在公司的介面工具上給出鏈接和引數,方便前端爸爸mock資料,

他總不能等我們后端開發完了,才去開發嘛,這樣效率打折扣,所以都是后端先定義好,然后前后端并行開發的,

后端開發好,一般都是會發布到聯調環境,我們有哪些環境,聯調環境在我們所有的環境中處于哪個地位呢?

大家可以看到我列出了我們開發的所有環境,

Tip:日常環境不能由開發人員發布,是因為測驗流程比較久,所以不能中斷,如果你一直發布會影響測驗的效率,在發布期間他們是沒辦法干活的,而且很多部門涉及相同的服務,你發布還會影響別人,

測驗發布之前,在測驗群里問問可以發某個服務么,大家覺得不影響,那么就可以發了,懂了吧,

預發環境,也叫灰度環境,這是跟線上資料一樣的一個環境,只是只能內網訪問,一般這一步是防止很多是因為日常的資料量不夠真實,資料級別達不到線上的量級無法測出的bug,

扯遠了,聯調完了就是代碼Review了,

代碼Review:

codeReview環節,畫一下重點,這可能是整個研發流程中,讓你成長最快的一個環節,讓組員和Leader Review你的代碼,往往他們能給你很多業務上和技術上的建議和意見,

過來人的經驗你就說香不香吧,以前老大經常沒時間,但是我就是煩著他要Review,后來他說不用review了,但是我還是要組員大佬review,因為我很享受別人對我提建議的時候,這不就是成長,掃盲的好時機嘛,

提測&灰度發布&產品第一次驗收

這一階段就是把代碼都發到日常環境,然后等測驗爸爸測驗,這個環節開發同學如果沒BUG是比較輕松的,等著就好了,可以看看丙丙的文章啊,看看丙丙的B站視頻什么的,

但是如果你BUG多,那我覺得你可能會生不如死,因為有的bug真的找很久很久的,呼叫鏈路又長,特別是跨服務又涉及訊息佇列,或者第三方的介面什么的,

img
img

總之你也不知道會出現什么bug,我看身邊的大神也只能用經驗避免常見的吭,孰能生巧吧,

發布計劃

敲黑板,這個確實是比較重要的環節,這個環節主要是開發同學和前端同學說好一個發布時間,然后制定一個發布計劃,為啥要發布計劃呢?

我們開發一個需求,可能涉及到N個服務,這些服務是有依賴關系的,那就需要打包,比如訂單系統,依賴人員系統,優惠券系統,也依賴人員系統,然后訂單系統還依賴優惠券系統,是不是有點亂了?

我們看圖:

打包和發布順序原則上是一樣的,從沒完全依賴的服務按照順序發布到最后一個服務,

生成環境上線:

這就是神圣而莊嚴的上線環節,一般在這個環節丙丙都是要洗手洗澡,然后才點下那個神圣的發布按鈕,

一般現在都是自動化發布,界面上點點就好了,記得丙丙大學發布都是進服務器一個個kill行程,替換jar包然后重啟,

現在都是分布式的集群,這樣發無疑會累死,我之前負責的系統有50多臺機器,一般都是4臺4臺發布,

日志觀察&產品第二次驗收

一般發布第一批之后不會馬上發布第二批,而是觀察錯誤日志,看看是否正常,有時候會發現還是會出現例外情況的,那就保留錯誤日志,然后回滾,

知道解決了再發布,順利的話就沒啥錯誤,一口氣發完了,看了下時間凌晨了,那發完差不多也得回家了,

一次發布可能涉及服務多的話,真的有可能發布這么久,但是沒辦法,線上出問題就是掉腦袋的事情,

日志觀察一般公司都有錯誤日志搜集系統,或者自己登錄跳板機查看就好了,

沒問題,發完之后告訴產品大大就好了,

需求結束

至此基本上一個需求可能就結束了,其實還是很不容易的,短的需求幾天,長的需求幾個月,中間涂涂改改,BUG,技術難點都是你要面對的,不過沒啥大問題,我們技術人嘛皮實能頂,

總結

產品研發流程大家是不是覺得有點復雜,或者覺得很多點有點小題大做了,不瞞你說,剛開始我也這么認為的,但是隨著時間的推移,你會發現有時候越是這樣規范,越是提升了效率,也提升了產品質量,

對自己設計的嚴苛也會讓你的業務能力提升,開發考慮的點也越來越廣泛,我想大佬應該都是這樣走過去的,那沒啥好說的,我們也走,

最后給大家看看我自己搞的一個專案管理模板吧,基本上能適用大部分專案了,要xmind格式的公眾號回復【專案】即可,

相關資料

準備了很多學習資料給大家https://pan.baidu.com/s/1gM4Ea11ygHuMomT2VQ2aNQ

我是敖丙,一個在互聯網茍且偷生的程式員,

你知道的越多,你不知道的越多人才們的 【三連】 就是丙丙創作的最大動力,我們下期見!

注:如果本篇博客有任何錯誤和建議,歡迎人才們留言!


文章持續更新,可以微信搜索「 三太子敖丙 」第一時間閱讀,回復【資料】有我準備的一線大廠面試資料和簡歷模板,本文 GitHub https://github.com/JavaFamily 已經收錄,有大廠面試完整考點,歡迎Star,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/159097.html

標籤:Java

上一篇:HTTP--Request詳解

下一篇:Oracle呼叫Java方法(下)復雜Jar包封裝成Oracle方法以及ORA-29521錯誤

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more