前言
我們做程序員的有時(shí)候總會(huì)想著是不是有一些捷徑能夠快速成長(zhǎng)鲫惶,希望自己突然某一天就得到了九陽(yáng)神功之類的東西淮逻,突然頓悟就成為技術(shù)大牛了爽锥,我以前也經(jīng)常這樣想疑苫,但是不幸的是熏版,過了這么多年纷责,我仍然沒有找到這個(gè)捷徑-_-(小說果然都特么是騙人的)。不過摸爬滾打這么久撼短,捷徑?jīng)]找到再膳,倒是讓我找到了一條笨路,所以我這里想告訴大家的是一種笨方法去成長(zhǎng)曲横。
什么是主R
大家其實(shí)都知道喂柒,在做項(xiàng)目的時(shí)候,是成長(zhǎng)最快的時(shí)候禾嫉,那么如何在項(xiàng)目中將這個(gè)成長(zhǎng)發(fā)展到淋漓盡致灾杰,這個(gè)是我想說的一個(gè)核心點(diǎn)。
我們一般稱呼一個(gè)項(xiàng)目的整個(gè)負(fù)責(zé)人為主R熙参,那么我就如何做好主R說一下我的理解吭露。 簡(jiǎn)單來說,項(xiàng)目分為如下幾個(gè)階段:
需求分析 -> 方案設(shè)計(jì) -> 開發(fā) -> 聯(lián)調(diào) -> 測(cè)試 -> 上線 -> 后評(píng)估
成為一名合格的主R尊惰,其實(shí)就是要把整個(gè)項(xiàng)目生命周期的每件事兒都做好就行了讲竿,有一定經(jīng)驗(yàn)的小朋友肯定會(huì)吐槽了,你妹的說著簡(jiǎn)單弄屡,做起來可沒這么清晰了题禀。所以這里我針對(duì)每個(gè)階段要做的事兒都做一下說明,其實(shí)總結(jié)起來核心就一句話:在不同的時(shí)間點(diǎn)膀捷,滿足不同的人對(duì)不同的事兒的訴求迈嘹。
需求分析階段
需求分析階段,我們要搞定的人是誰(shuí)全庸?是業(yè)務(wù)方和pm秀仲,這個(gè)階段我們需要弄清楚業(yè)務(wù)方的真正訴求的來龍去脈(即做這個(gè)事兒的背景),要搞清楚pm的產(chǎn)品是否真的能滿足業(yè)務(wù)方的訴求壶笼,同時(shí)我們還要多問一句神僵,做完這個(gè)事兒, 我們?nèi)绾卧u(píng)估做這個(gè)事兒的效果覆劈,這個(gè)事兒是不是真的有意義或者有做的價(jià)值保礼。這個(gè)階段我們一定要把需求揉碎了看,想清楚每個(gè)細(xì)節(jié)點(diǎn)责语,跟pm和業(yè)務(wù)方確認(rèn)清楚這個(gè)是不是真正是他們想要的炮障,只有大方向理解一致了,最后的結(jié)果才不會(huì)出現(xiàn)太大偏差坤候。我見過很多在需求分析階段沒有做好(rd理解的和pm理解的完全不是一個(gè)東西)而導(dǎo)致做出來一個(gè)四不像東西最終返工的例子胁赢,所以在這個(gè)階段一定要多溝通,把要做的事兒確定好白筹。有的程序員會(huì)覺得智末,我就是一個(gè)需求實(shí)現(xiàn)人員谅摄,我有必要了解那么深的業(yè)務(wù)么?我有必要去關(guān)心產(chǎn)品出的方案是不是合理么吹害?這里我想多說兩句的是,你有這個(gè)必要虚青,并且非常有必要它呀,我們是程序員,但是我們并不僅僅是一個(gè)代碼翻譯器棒厘,如果連你的業(yè)務(wù)都不理透了纵穿,你何談架構(gòu),如何能拍著胸脯說我設(shè)計(jì)的就是朝著未來更正確的方向去走呢奢人。我一直以為谓媒,程序員其實(shí)是應(yīng)該比pm更了解業(yè)務(wù)的,并且應(yīng)該不斷的能協(xié)助pm提出一些更有價(jià)值的東西的何乎。
方案設(shè)計(jì)階段
方案設(shè)計(jì)階段句惯,這個(gè)階段我們要搞定的人是和我們配合的前端,后端人員支救,我們需要對(duì)比現(xiàn)有系統(tǒng)抢野,一步步想出實(shí)現(xiàn)需求的各個(gè)要素,過程中可能會(huì)不斷的找pm確認(rèn)一些細(xì)節(jié)點(diǎn)各墨,直到整個(gè)方案出來為止指孤, 如果覺得方案不太盡如人意,或者思路不太清晰贬堵,可以找你的leader協(xié)助給你一些指導(dǎo)性的建議恃轩。 確認(rèn)好方案之后,我們需要搞定幾個(gè)時(shí)間點(diǎn)黎做,前端叉跛,后端開發(fā)何時(shí)開始,何時(shí)聯(lián)調(diào)蒸殿,何時(shí)提測(cè)昧互,qa的排期及上線時(shí)間,提前要出這幾個(gè)時(shí)間點(diǎn)是很重要的伟桅,避免出現(xiàn)多方開發(fā)完了敞掘,結(jié)果有某一方說還沒排期的尷尬情況發(fā)生。
開發(fā)階段
開發(fā)階段楣铁,這個(gè)階段每個(gè)開發(fā)都很熟悉玖雁,那么這個(gè)階段我們要搞定的人是誰(shuí)呢,是我們自己以及配合我們做項(xiàng)目的各個(gè)業(yè)務(wù)方開發(fā)盖腕。我們需要在幾個(gè)時(shí)間點(diǎn)去確認(rèn)項(xiàng)目各個(gè)業(yè)務(wù)方的開發(fā)是否按部就班的進(jìn)行著赫冬,一般是項(xiàng)目三分之一的時(shí)間點(diǎn)浓镜,需要跟進(jìn)一下各個(gè)業(yè)務(wù)方進(jìn)度是否如期進(jìn)行,項(xiàng)目一半時(shí)間的時(shí)候再次溝通是否正常劲厌,項(xiàng)目聯(lián)調(diào)前一天再次確認(rèn)是否能如期進(jìn)入下個(gè)階段膛薛。如果在這個(gè)過程中哪個(gè)環(huán)節(jié)進(jìn)度不佳,要及時(shí)溝通原因补鼻,這個(gè)時(shí)候就需要自己多去了解一下對(duì)方的一些實(shí)現(xiàn)方式之類的哄啄,一起協(xié)商一下解決方案以保證項(xiàng)目如期進(jìn)行(這個(gè)溝通過程很重要,是自己不斷成長(zhǎng)的最主要因素风范,因?yàn)椴粩喔鞣綔贤ㄗ傻銜?huì)不斷了解對(duì)方的一些思維方式及實(shí)現(xiàn)方式,不要怕因?yàn)樽约翰粫?huì)就不去溝通硼婿,不去問锌半,我們要做的是只要自己不懂的 ,就要多問寇漫,直到搞懂了刊殉。慢慢的你就會(huì)發(fā)現(xiàn)你懂的越來越多,自己的認(rèn)知邊界也越來越廣州胳,跟各方配合起來也越來越得心應(yīng)手)冗澈。這個(gè)時(shí)候會(huì)有人問,如果我很多時(shí)間都耗費(fèi)在了協(xié)助其他人解決問題上陋葡,那我自己的時(shí)間是不是有可能delay呢亚亲?對(duì)于這個(gè)問題我是這么看的,每個(gè)人的成長(zhǎng)都是由不會(huì)到會(huì)的過程的腐缤,在你初次跟別人配合的時(shí)候捌归,可能確實(shí)很難,并且想搞清楚問題在哪岭粤,如何解決確實(shí)會(huì)花費(fèi)大量的時(shí)間惜索,那么我們要做的就是在前期時(shí)間預(yù)估上給自己多預(yù)留一些buffer,一般我會(huì)讓經(jīng)驗(yàn)不足的人預(yù)留出20%的時(shí)間buffer以應(yīng)對(duì)這樣的事兒發(fā)生剃浇,雖然前期會(huì)很難巾兆,但是當(dāng)你每次都這么協(xié)助別人處理好各種問題的時(shí)候,你對(duì)各個(gè)不同環(huán)節(jié)的理解就越來越深(前端虎囚,其他業(yè)務(wù)方的業(yè)務(wù)等等)角塑,并且很有意思的一件事兒是,在協(xié)助別人處理問題的時(shí)候淘讥,有時(shí)候你會(huì)發(fā)現(xiàn)別人的設(shè)計(jì)或者代碼風(fēng)格很nice圃伶,這個(gè)時(shí)候你會(huì)能從他們身上學(xué)到很多不一樣的思路,這就相當(dāng)于變相的學(xué)習(xí)了其他人的優(yōu)秀代碼一樣,這對(duì)自己的代碼能力的提升也是巨大的窒朋。所以我是很希望大家能把這個(gè)過程做到極致搀罢,多參與一些優(yōu)秀的設(shè)計(jì)等,為自己未來能做出更好的系統(tǒng)打下堅(jiān)實(shí)的基礎(chǔ)侥猩。慢慢的榔至,自己的能力提升之后,你的效率都是隨之會(huì)提升很快的欺劳。這個(gè)過程中還有一個(gè)問題是開發(fā)人員比較困惑的唧取,在做一個(gè)需求的時(shí)候,要不要把改這塊代碼涉及到的主線邏輯杰标,以及所有其他支線細(xì)節(jié)都摳一遍兵怯,因?yàn)橐彩且粋€(gè)比較花時(shí)間的操作彩匕。我的看法和剛才說的答案一樣腔剂,還是有這個(gè)必要的,每個(gè)需求做的時(shí)候驼仪,把所有主線及支線邏輯都梳理一遍掸犬,會(huì)進(jìn)一步加深自己對(duì)自己系統(tǒng)的理解,同時(shí)有時(shí)候會(huì)突然發(fā)現(xiàn)系統(tǒng)里哪個(gè)地方是不是有什么問題绪爸,能剛好在梳理的時(shí)候及時(shí)發(fā)現(xiàn)并處理湾碎。其實(shí)改bug也是如此,我們常說奠货,改bug是理解系統(tǒng)最快的方式介褥,就是因?yàn)楦腷ug的時(shí)候我們應(yīng)該把調(diào)用方的整個(gè)主線支線都梳理清楚,而不是簡(jiǎn)單的改完這一行代碼就完事递惋,那對(duì)自己的成長(zhǎng)并沒有任何益處柔滔。
聯(lián)調(diào)階段
聯(lián)調(diào)階段,這個(gè)階段要搞定的是聯(lián)調(diào)的前端后端人員萍虽,當(dāng)聯(lián)調(diào)出現(xiàn)問題的時(shí)候睛廊,一定要主動(dòng)協(xié)調(diào)各方解決問題,從協(xié)調(diào)的過程中杉编,你會(huì)了解到不同人的做事兒方式超全,也會(huì)了解到你自己系統(tǒng)的邊界能力以及可能以后會(huì)出現(xiàn)的問題,這些都是比較寶貴的經(jīng)驗(yàn)邓馒,長(zhǎng)久積累下去嘶朱,會(huì)形成質(zhì)變的。在這個(gè)過程中光酣,有時(shí)候會(huì)碰到一些邊界不太清晰的問題见咒,會(huì)出現(xiàn)一些你做或者我做都兩可的事兒,這個(gè)時(shí)候挂疆,溝通的雙方最好將利害關(guān)系講清楚改览,首先以肯定的態(tài)度認(rèn)可這個(gè)事兒是雙方都可以做的下翎,然后看對(duì)方做的話代價(jià)及成本多高,綜合考量之后宝当,再協(xié)商出一個(gè)合理的結(jié)果视事,有時(shí)候適當(dāng)?shù)臓奚约旱囊恍r(shí)間去承擔(dān)這個(gè)事兒得到的可能是長(zhǎng)遠(yuǎn)的一個(gè)收獲。 在這個(gè)階段我們重點(diǎn)關(guān)注的時(shí)間點(diǎn)是聯(lián)調(diào)的進(jìn)度是否符合預(yù)期庆揩,必要時(shí)候需要采用每日站會(huì)的形式花五分鐘讓大家都知道現(xiàn)在的問題以及需要解決的問題俐东。那么這個(gè)階段要搞定的幾個(gè)時(shí)間點(diǎn)就是聯(lián)調(diào)過半及提測(cè)前一天。
測(cè)試階段
測(cè)試階段订晌,我們需要提前將測(cè)試用例進(jìn)行評(píng)審虏辫,指出測(cè)試用例中不滿足要求的地方,以保證測(cè)試的覆蓋程度锈拨,這同樣是對(duì)自己的一個(gè)考驗(yàn)砌庄,需要你考慮清楚整個(gè)系統(tǒng)做完之后,哪些地方是邊界奕枢,哪些是重點(diǎn)要測(cè)試幫你把關(guān)的地方娄昆,哪些細(xì)枝末節(jié)測(cè)試可能沒有考慮到。在這個(gè)階段缝彬,需要我們更主動(dòng)的跟QA同學(xué)做配合萌焰,以保證項(xiàng)目的一個(gè)質(zhì)量。同時(shí)這個(gè)階段需要我們卡的一個(gè)時(shí)間點(diǎn)就是上線前一天谷浅,因?yàn)榭赡苄枰覀冊(cè)谏暇€前將上線前要做的事兒提前做了扒俯。
上線階段
上線階段,我們需要按照我們的上線步驟(不僅僅是自己的一疯,是相關(guān)所有前后端的上線步驟)撼玄,一步步發(fā)布上線,同時(shí)觀察線上服務(wù)日志看是否有問題违施,上線之后互纯,可以在隔離的環(huán)境對(duì)結(jié)果進(jìn)行一些正確性校驗(yàn),以保證上線的功能是沒問題的磕蒲。
上線后評(píng)估階段
上線后評(píng)估階段留潦,這個(gè)階段需要我們看到上線前的一個(gè)效果,同時(shí)也要觀察上線后的效果對(duì)比辣往,不斷的跟進(jìn)兔院,看是否達(dá)到我們做這個(gè)事兒的預(yù)期,如果沒有站削,那么就需要反思是什么原因?qū)е聸]有按預(yù)期出發(fā)坊萝。這個(gè)過程是對(duì)我們做的事兒的一個(gè)檢驗(yàn)過程,以及是一個(gè)對(duì)自己肯定的過程,在不斷做正確的事兒的前提下十偶,也能極大的提升自己的信心以及對(duì)自己所做的系統(tǒng)的信心菩鲜。
總結(jié)
總的來說,在上面所列出的這些步驟里惦积,每一個(gè)步驟都做到極致的人接校,他的見識(shí),對(duì)系統(tǒng)的理解狮崩,對(duì)邊界的判斷蛛勉,對(duì)時(shí)間的預(yù)估,對(duì)人的理解都會(huì)處于一個(gè)一直上升的過程睦柴,那么當(dāng)積累到一定程度之后诽凌,質(zhì)變只是一個(gè)必然的結(jié)果了,成長(zhǎng)為一個(gè)合格的程序員也是一個(gè)水到渠成的過程了坦敌。
上面啰嗦了這么多侣诵,最后我這里給總結(jié)一個(gè)比較便于大家實(shí)施的表格,由于本身是一個(gè)順序的過程恬试,所以不會(huì)出現(xiàn)并發(fā)的問題窝趣,一個(gè)個(gè)階段屢著走就行疯暑。
最后預(yù)祝大家都能“快速”成長(zhǎng)為大俠~