近期上線了一個新的專案,從前期的需求評審到專案整體設計,最後上線,歷時了快一個月的時間。雖然是個小專案,但是由自己從頭開始跟的專案。 這個專案讓自己學到了很多,同時也發現了自己很多的不足,寫篇文章總結下專案從的0到1的過程以及這段時間的一些感悟
技術選型
先說下專案的組成結構,web專案,由前端+後臺+服務端組成,技術棧為:前端採用vue,後臺使用react,服務端使用node,資料庫使用mysql,快取使用redis,這個技術棧整體看來,還是比較符合潮流的。
關於技術選型,若是小組沒有技術棧的沉澱,都是新的起點,那麼選型的時候就得考慮很多方面,如小組上手的速度、開發的成本、選型是否利於以後擴充套件、運維成本等
開發階段
開發階段細分為以下幾個小階段:業務邏輯梳理、模組設計、開發任務劃分與分配
業務邏輯梳理
專案經過多輪的產品評審敲定後,就可以開始進入到設計階段了,這裡的設計不僅僅是簡單的專案程式碼層面的設計,還包括用例圖、時序圖、表結構、與內部服務溝通配合等設計,這幾部分的設計的好壞是決定了整個專案的業務合理性、可靠性、擴充套件性,這部分產出可以體現程式設計師是一個老司機,還是一個小白
資料庫設計
資料庫是系統的基石,資料庫設計應建立在對業務的深度理解上,設計的時候對業務的理解不能僅限於產品或技術的思維,而是要兩者兼備,這樣設計的表結構才能更合理、更利於業務擴充套件
畫圖
用例圖,顧名思義,體現系統功能的模型圖,用例圖是畫圖的第一步,只有知道系統需要實現哪些功能、系統的邊界,才能往下進展;
時序圖也叫泳道圖,顯示物件間的呼叫互動圖,物件可以是模組、服務等,將各個模組的呼叫順序和業務流轉清晰的畫出來,因為系統會隨著業務的發展不斷的迭代,若是沒有個文件將業務流轉給記錄下來,對後續接手的開發,那就是個大坑,周而復始不斷累積業務,這個專案離重構就不遠了;
還有流程圖等,就不一一說了
任務拆解
接下來到任務的拆解與分配,畢竟專案不一個人單打獨鬥就能完成的,得由團隊的一起推動。這個專案前後端都是由前端小組來開發,js通吃前後端,所以任務的拆解按模組來拆解,比如登入模組,前端的互動和後端的服務均有一個人來負責,這樣的分解,好處就是,免去了前後端聯調的這一溝通流程,讓大家的溝通成本大大降低,開發時效也提高了,但有個小前提,就是大家的編碼水平都要能滿足前後端的開發要求,畢竟大部分前端開發在服務端領域還是有所欠缺的。
制定好開發規範,優秀的專案,必然有一套完整成熟的規範,大部分公司內部都有自己的開發規範,同時藉助主流的工具,可以為我們規範專案編碼
還有就是程式碼review,我們使用git作為版本管理,團隊的提交都會先經過review才能merge到主幹,pull request(簡稱PR)是不必不可少的環節,因一些溝通理解、編碼粗心等,導致提交的程式碼存在問題,所以在review的環節,就可以提交前發現,將其扼殺在搖籃中。
測試階段
交叉測試
交叉測試,在正式提交測試前需要預留兩天左右進行交叉測試,即A開發的功能,由B來測試,因為開發自測往往會陷入邏輯黑洞,考慮場景不全、異常處理不夠等問,交叉測試,開發化身測試,提早將問題給發掘出來,同時也可以讓大家對整個專案邏輯瞭解的更加清晰
測試組測試
測試階段,因為採用的是瀑布流的開發方式,先開發,在計劃期限完成後,在移交給測試,測試遇到的bug,反映了開發的水準,因為開發階段有code review,所以測試的出來的專案質量,也體現了專案負責人的態度和水準。
專案往往會涉及到多個內部服務的呼叫,經常服務間出現些小問題,這次開發間就會拿出甩鍋大法,互相推諉,都不願意去找原因,若一直沒人去跟進解決,輕會影響專案上線計劃,嚴重會給生產留下隱患。這個問題,歸結還是在與開發成員的工作態度,這個跟團隊宣導和建設有關啦,就不展開了。若出現甩鍋未能解決的問題,就需要專案負責人及時跟進處理。
上線前的準備
測試完成後,下一步就是按計劃上線,此時,需要與運維小夥伴進行充分的溝通,申請線上資源、線上引數準備、效能監控、報警監控等
覆盤
覆盤的作用在於迴歸整個開發歷程,遇到了哪些問題、如何解決、哪些未能解決等等看似零碎的部分,將這些部分彙總起來,彙總的過程看似對專案,但實際上是在對自己進行審視,哪些讓自己成長了,哪些還有很大的不足、及自己沒做好的原因等,開發路漫漫,抬頭看看天才能知道自己的位置~
感悟
文章寫得有點流水賬了,在每個點上,自己懂得還很膚淺。 記錄下自己最近的一些心得吧
-
市場上大部分的程式設計師職位都是開發工程師,開發工程師的定位應該是:以完成功能需求為主,基本上是圍繞著產品經理提出的需求文件轉,很多人就吐槽,一直在做功能,沒有提升的空間,但我不這麼認為,在我們不能改變自己開發工程師的職位時,要做的應當是少點抱怨,多自我挖掘,在完美實現功能的同時,深挖其中的技術點,況且能做到寫出來的功能健壯,就足夠考驗人了,其理解能力、邏輯能力絕對不是一般的水準
-
切忌浮躁,敬畏技術,不要會用一個技術了,就認為自己能掌握了,多會幾個技術點,便說自己遇到瓶頸了。沉澱下來,好好啃一啃,比跟風、自我焦慮強的多。知其然,而知其所以然
-
一家公司的開發任務,伴隨著在職時間越長,便越會順手,老油條和晉升達人也在悄悄的拉開差距,要及時走出自己的舒適區,多去承擔難點,讓自己在工作上
難過
,未來才能好過
-
那就先簡單做
這句話在開發間經常聽到,既然都確定去做了,那為什要簡單做呢?;寫業務時,遇到難點,哎,就就這麼寫吧,反正也沒問題
;以上現象,說到底,一句話:懶於思考,安於現狀。多思考,注重細節、端正態度,做一個不將就的coder -
持續學習,有句話說的好:淘汰你的不是你的同齡人,也不是這個社會,而是你自己在原地踏步。網際網路的更新速度令人咂舌,令人焦慮啊,一群人整體喊著跟不上了啊,學不動了啊,可是馬拉松是沒有暫停的,咬緊牙,少去瞎比比,學習是枯燥的,但要知道它才是給你帶來紅利的基礎,是你跑下去的資本