在這個(gè)春風(fēng)得意馬蹄急,金三銀四跳槽季的日子里,相信很多小伙伴都拿到了心儀的offer了吧,其中不乏有初入職場(chǎng)的同學(xué)。那么今天,我就從服務(wù)端的角度來(lái)給大家分享一些關(guān)于工作中開(kāi)發(fā)流程的經(jīng)驗(yàn),希望初入職場(chǎng)的同學(xué)盡量少踩坑不背鍋,能夠順利通過(guò)考核期。
進(jìn)入公司你會(huì)發(fā)現(xiàn),一般正規(guī)點(diǎn)的公司都會(huì)分很多部門,如開(kāi)發(fā)部(科技部或研發(fā)部)、產(chǎn)品部(業(yè)務(wù)部)等,這兩個(gè)部門是相互對(duì)等的,也就是說(shuō)后者負(fù)責(zé)產(chǎn)品功能的創(chuàng)意、設(shè)計(jì),產(chǎn)品的大方向,說(shuō)白了就是負(fù)責(zé)提出產(chǎn)品需求,把控產(chǎn)品的定位和走向;而前者則是需求的受理者,負(fù)責(zé)從軟件、技術(shù)層面來(lái)實(shí)現(xiàn)后者提出的需求。兩個(gè)部門沒(méi)有上下級(jí)的關(guān)系。
而對(duì)于我們程序員來(lái)說(shuō),做一個(gè)需求從接到需求到上線的完整流程大致如下:
從你拿到需求文檔開(kāi)始說(shuō)起,你會(huì)看到需求文檔至少包括2部分來(lái)闡述這個(gè)需求:需求背景和需求描述。
需求背景:
主要告訴你為什么會(huì)有這個(gè)需求,提這個(gè)需求的目的是什么。
需求描述:
這才是這個(gè)需求的重點(diǎn),主要告訴你要實(shí)現(xiàn)什么樣的功能,做成什么樣的效果,以及一些業(yè)務(wù)規(guī)則等,可能還會(huì)放幾個(gè)頁(yè)面的原型圖,這就再好不過(guò)了。
這些都是業(yè)務(wù)部門經(jīng)過(guò)深思熟慮、各級(jí)領(lǐng)導(dǎo)審核通過(guò)后的需求,才會(huì)到研發(fā)部門,研發(fā)部受理這個(gè)需求,分給你的組長(zhǎng)或直接分給你。
言歸正傳,你接到需求,打開(kāi)需求文檔,開(kāi)始看需求了。
可以先快速地通讀一遍,了解需求的大致意思,對(duì)需求有個(gè)整體的把握,做到心中有數(shù)。
然后第二遍,看細(xì)節(jié),抓疑問(wèn)點(diǎn)。
這一遍,你可以看仔細(xì)點(diǎn),把一些關(guān)鍵點(diǎn)認(rèn)真看看理解一下,同時(shí)看的時(shí)候可能會(huì)發(fā)現(xiàn)需求有寫的不明確的地方,或者需要確認(rèn)的地方,或者你會(huì)有一些疑問(wèn),這個(gè)時(shí)候你可以把這些點(diǎn)記錄下來(lái),認(rèn)真讀完一遍之后,你記錄了一些問(wèn)題。
讀完兩遍之后,你有一些疑問(wèn)。然后你可以找個(gè)時(shí)間拉上經(jīng)理或需求負(fù)責(zé)人,開(kāi)發(fā)組長(zhǎng),前后端開(kāi)發(fā)人員,業(yè)務(wù)(提需求的業(yè)務(wù)人員,他是最了解需求的人)、測(cè)試負(fù)責(zé)人一起當(dāng)面開(kāi)個(gè)小會(huì)(能當(dāng)面絕不群里聊),去解決你記錄的疑問(wèn)點(diǎn),把這些需求里你認(rèn)為寫的不確定的地方弄清楚。這個(gè)過(guò)程就是答疑解惑。
在這個(gè)討論過(guò)程中,定下來(lái)的業(yè)務(wù)規(guī)則務(wù)必要記錄下來(lái),會(huì)后可以發(fā)一封電子郵件,把需求確認(rèn)的東西或者業(yè)務(wù)又新加的東西寫在郵件里,提醒業(yè)務(wù)確認(rèn)無(wú)誤后讓他更新需求文檔,并且郵件抄送給一起開(kāi)會(huì)的人。
為什么拉上這么多人呢?因?yàn)槟阌幸蓡?wèn)的地方你的組長(zhǎng),經(jīng)理等也可能有疑問(wèn),這種拍板釘釘?shù)氖虏荒苤蛔屇阋粋€(gè)人知道,到時(shí)候做完了上線了,業(yè)務(wù)發(fā)現(xiàn)不想要那樣的效果了賴賬不承認(rèn)了咋辦。拉上測(cè)試是為了避免開(kāi)發(fā)和測(cè)試?yán)斫庑枨笊嫌衅睿苊鉁y(cè)試寫的測(cè)試案例和需求要求有出入。
為什么發(fā)郵件呢?做這一步也是為了規(guī)范開(kāi)發(fā)流程以及留個(gè)底有個(gè)證據(jù)吧,防止以后問(wèn)你為啥這樣做,你就有據(jù)可依了。不然你單憑嘴說(shuō):當(dāng)時(shí)討論就這樣定的。這樣說(shuō)服力不夠啊。我們一定要做到,不甩鍋也絕不無(wú)故背鍋!
需求討論過(guò)程中如發(fā)現(xiàn)涉及其他系統(tǒng),提出來(lái),并確認(rèn)下其他系統(tǒng)接口有沒(méi)有提供好,并通過(guò)項(xiàng)目經(jīng)理向其他系統(tǒng)要接口文檔(系統(tǒng)間的文檔收發(fā),最好通過(guò)系統(tǒng)負(fù)責(zé)人,即使都是內(nèi)部系統(tǒng));另外,如涉及到頁(yè)面改動(dòng)需要提供UI的,督促業(yè)務(wù)及時(shí)提供UI,防止延誤需求上線。
為什么出UI?出UI的目的是嚴(yán)格按照UI圖的尺寸、色值來(lái)做頁(yè)面,防止到時(shí)候前端做好頁(yè)面后業(yè)務(wù)又來(lái)扣這些細(xì)節(jié),讓你返工,還顯得你干活不利索。假如有的公司根本沒(méi)有UI設(shè)計(jì)師,那就提前和業(yè)務(wù)說(shuō)好,做的時(shí)候讓業(yè)務(wù)把把關(guān),看是否復(fù)合他要的效果。
其次,針對(duì)該需求,寫每日工作進(jìn)度(日?qǐng)?bào))時(shí),寫上當(dāng)前需求到了哪個(gè)階段(如需求分析階段,開(kāi)發(fā)階段等,具體到了哪個(gè)階段,自己評(píng)估),以及當(dāng)前遇到的阻礙等。這樣如果有阻礙,即使是延誤了上線,也不是自己的原因。
注意:1、系統(tǒng)間接口聯(lián)調(diào)大概需要1-2天,復(fù)雜的接口可能需要更長(zhǎng)的時(shí)間。系統(tǒng)聯(lián)調(diào)最好放在系統(tǒng)設(shè)計(jì)前,這樣可以發(fā)現(xiàn)接口返回內(nèi)容是不是滿足這個(gè)需求,并提出這個(gè)問(wèn)題。如果你開(kāi)發(fā)的時(shí)候用到這個(gè)接口的時(shí)候再聯(lián)調(diào)才發(fā)現(xiàn)問(wèn)題,那不是耽誤時(shí)間了嗎。
2、假如第一次調(diào)用該系統(tǒng),還要注意開(kāi)通系統(tǒng)間的網(wǎng)絡(luò),不然無(wú)法訪問(wèn)。開(kāi)通網(wǎng)絡(luò)當(dāng)然也需要項(xiàng)目負(fù)責(zé)人來(lái)申請(qǐng)。而且一定要測(cè)試環(huán)境和生產(chǎn)環(huán)境的網(wǎng)絡(luò)一并開(kāi)通,開(kāi)通后并測(cè)試是否真的已經(jīng)開(kāi)通。這樣防止沒(méi)有開(kāi)通網(wǎng)絡(luò),上線后調(diào)不通,又臨時(shí)火急火燎的發(fā)郵件申請(qǐng)開(kāi)通網(wǎng)絡(luò),這樣只會(huì)讓你難堪,顯得你這個(gè)人不夠仔細(xì)。
需求分析,接口聯(lián)調(diào),開(kāi)通網(wǎng)絡(luò)等一些準(zhǔn)備工作及雜事處理完后,就可以開(kāi)始系統(tǒng)設(shè)計(jì)了或者邊處理邊進(jìn)行系統(tǒng)設(shè)計(jì)(因?yàn)槟愕戎鯱I、開(kāi)網(wǎng)都需要時(shí)間)。
系統(tǒng)設(shè)計(jì)就是來(lái)思考怎么來(lái)實(shí)現(xiàn)這個(gè)功能,實(shí)現(xiàn)流程是什么樣的,要不要新增表或增加表字段,表結(jié)構(gòu)如何設(shè)計(jì),要寫幾個(gè)接口給前端,調(diào)用順序是什么樣的,返回什么樣的數(shù)據(jù),數(shù)據(jù)格式什么樣的,可以和前端開(kāi)發(fā)坐一塊兒討論。這些應(yīng)該在你分析完需求后就有了一個(gè)大致的思路,然后現(xiàn)在提取需求的關(guān)鍵詞、關(guān)鍵點(diǎn)作具體的詳細(xì)設(shè)計(jì)。
系統(tǒng)設(shè)計(jì)也是很重要的一環(huán),是在寫代碼之前定的目標(biāo),做的一個(gè)宏觀規(guī)劃。盡量不要邊寫代碼邊想怎么實(shí)現(xiàn),這樣會(huì)導(dǎo)致最后思路很亂寫的代碼也很亂。
建議最好畫流程圖,條件允許的情況下小組內(nèi)評(píng)審下,找出不足。
在系統(tǒng)設(shè)計(jì)階段如果需引入新技術(shù),一定要考慮使用什么技術(shù),技術(shù)的復(fù)雜度,成熟度等,為什么用這個(gè)技術(shù),好處是什么。如果自己不敢確定用什么技術(shù),可以找技術(shù)經(jīng)理或比自己經(jīng)驗(yàn)豐富的同事一起定一下。初入職場(chǎng)或經(jīng)驗(yàn)頗少的同學(xué),可以把自己的設(shè)計(jì)思路和他們說(shuō)一下,讓他們把把關(guān)。
這一步就是你最喜歡的寫代碼階段了,寫代碼的一些規(guī)范不用我多說(shuō)了吧,下載阿里的開(kāi)發(fā)手冊(cè)看看,或自己公司的開(kāi)發(fā)規(guī)范。
業(yè)務(wù)代碼一定要加注釋,在關(guān)鍵步驟加上簡(jiǎn)單的注釋,以便日后自己看或者其他同事接替你的時(shí)候能一目了然,看懂這代碼是在干嘛,不至于背地里被吐槽被罵娘。很多時(shí)候一些同學(xué)自己寫的代碼,不加一行注釋,時(shí)間長(zhǎng)了自己看的時(shí)候都懵逼了。加必要的注釋是程序員最最起碼的修養(yǎng)。
在功能開(kāi)發(fā)到近一半的時(shí)候,郵件給測(cè)試負(fù)責(zé)人并抄送相關(guān)人員,告知此需求已開(kāi)發(fā)過(guò)半,目的提醒其寫需求的測(cè)試案例,以免延誤測(cè)試。這一點(diǎn)根據(jù)你們開(kāi)發(fā)流程定,建議如此。
開(kāi)發(fā)完成就進(jìn)入功能測(cè)試階段了,或開(kāi)發(fā)完某一接口(給前端調(diào)用的)開(kāi)發(fā)人員就可以邊開(kāi)發(fā)邊測(cè)了。
開(kāi)發(fā)人員對(duì)自己開(kāi)發(fā)的功能自己測(cè)試,主要測(cè)試接口的邏輯,入?yún)⒊鰠⑹欠裾_等,邊開(kāi)發(fā)邊測(cè),前后端可以一起測(cè)。
當(dāng)整個(gè)功能都開(kāi)發(fā)完成后,開(kāi)發(fā)人員對(duì)該需求做整個(gè)流程的測(cè)試,針對(duì)可能出現(xiàn)問(wèn)題的場(chǎng)景重點(diǎn)測(cè)試,當(dāng)覺(jué)得本地測(cè)試的差不多的時(shí)候,可以把代碼合并到測(cè)試環(huán)境再進(jìn)行一次完整的測(cè)試。當(dāng)覺(jué)得可以的時(shí)候,請(qǐng)小組組長(zhǎng)發(fā)起走查代碼,主要檢查代碼邏輯及代碼規(guī)范等常見(jiàn)的顯而易見(jiàn)的問(wèn)題(畢竟旁觀者清,自己寫的代碼可能看很久也發(fā)現(xiàn)不了問(wèn)題),有問(wèn)題就改一下,走查沒(méi)問(wèn)題了就可以提交給測(cè)試人員了。
這里走查可以記錄到代碼走查記錄里,主要寫走查負(fù)責(zé)人,開(kāi)發(fā)人員,走查時(shí)間,需求名,走查發(fā)現(xiàn)的問(wèn)題,是否解決,何時(shí)解決等。通過(guò)走查代碼可以防止同樣的問(wèn)題再發(fā)生,或大家互相引以為戒。
自測(cè)完畢后,郵件給測(cè)試負(fù)責(zé)人及相關(guān)人員,郵件說(shuō)明某某需求已經(jīng)合并到某某分支,或已發(fā)布在某某測(cè)試環(huán)境,現(xiàn)在提測(cè)本需求,及時(shí)測(cè)試等等...并說(shuō)明涉及到的功能和系統(tǒng),以及主要的測(cè)試點(diǎn)。
接下來(lái)你就配合測(cè)試人員啦,有bug改bug。
當(dāng)測(cè)試人員測(cè)的差不多了,她們會(huì)郵件給業(yè)務(wù)人員。業(yè)務(wù)測(cè)完覺(jué)得沒(méi)問(wèn)題,那就等著上線吧。
需求上線前一定要檢查你的代碼完整性,把你的需求涉及到的SQL語(yǔ)句(如新增的系統(tǒng)參數(shù),新增表結(jié)構(gòu)等)、改動(dòng)的配置文件(新增或修改配置)提交給運(yùn)維。(重要?。。。?/strong>
在需求上線的那天,你熬夜等上線(大部分都是晚上上線避開(kāi)高峰期,也有的是灰度發(fā)布可以提前上)。當(dāng)生產(chǎn)發(fā)完后,測(cè)試人員和業(yè)務(wù)人員會(huì)在生產(chǎn)驗(yàn)證,當(dāng)業(yè)務(wù)說(shuō)驗(yàn)收通過(guò)時(shí),恭喜你可以回家了。如果有問(wèn)題,你還得去查日志排查問(wèn)題,然后解決,再上,再驗(yàn)證;如果問(wèn)題太嚴(yán)重,你的代碼就需要撤下來(lái),暫時(shí)不上。
上線完畢后,將本次需求所有有關(guān)的文檔打包歸檔,提交至你們的文檔庫(kù)或者類似confluence這樣的開(kāi)發(fā)管理平臺(tái),如果沒(méi)有這些東西或沒(méi)要求做這些,可以自己保存下來(lái),以便以后查閱。
軟件工程是一門學(xué)科,這里主要站在后端程序員的角度分享了自己總結(jié)的需求開(kāi)發(fā)流程及開(kāi)發(fā)過(guò)程中避免踩坑背鍋的經(jīng)驗(yàn),可能寫的有點(diǎn)粗略,或廢話很多,可能有的公司沒(méi)那么規(guī)范,也可能有的公司比這流程復(fù)雜多了,但是這里提到的需求分析、系統(tǒng)設(shè)計(jì)部分應(yīng)該跟公司定的開(kāi)發(fā)流程沒(méi)關(guān)系,是開(kāi)發(fā)人員自己的習(xí)慣和經(jīng)驗(yàn)、自己給自己定的規(guī)范。還是那句話,我們程序員不甩鍋也絕不無(wú)故背鍋!
聯(lián)系客服