從產品的角度看開發流程

背景

由於剛進入程序員這個領域不久,之前沒有太多積累,剛進入公司,大部分時間都在做“熟悉項目代碼”的工作,並不十分熟悉一個項目從 寫需求 => 項目框架搭建 => 需求評審 => 需求開發 => 測試 => 發佈 這個流程是如何進行的。

因此,最近搭了一個簡單的博客系統,希望以此作爲打通上述流程的契機,實實在在打通流程。下面簡述一下整個項目。

前端情況

  • 前後端分離。這是一個稍有規模的現代項目的絕對趨勢,雖然一些資源約束型項目可能會採用模板引擎作爲前端部分的開發方式,但絕大多數情況下,使用現代前端框架 + rest api是最普適的開發方式。因此,這個項目也採用了前後端分離的方式。

  • 以vue作爲主要的前端框架。對於前端框架的選擇,由於公司目前的大多數項目均是在vue框架下的,而且我目前也希望對vue有更深入的瞭解,因此,該項目選擇了vue作爲主要的前端框架。然而主要並不是全部,爲了能有對比地認識前端框架,在過程中還應當加入react作爲第二框架,部分頁面使用react。另外,由於沒有經歷過 JQ 的時代,但有些時候,一些比較小的項目,不必使用vue,也有一些不便於使用vue(例如在vue主項目外融入一個分離的彈窗),這時,使用 JQ 就尤爲有優勢,因此,在這個項目的一部分頁面或功能,應當融入 JQ。

  • 暫未使用node環境對整個項目進行打包,而是採用最基礎的 頁面引入 的形式。整個頁面目前採用es module開發,所有依賴庫均是直接在模塊中導入,但也有在全局導入的,例如vue、jq以及一些全局css的內容。先按這種方式進行,之後再用工程化的工具去進行處理。

後端情況

  • 使用node作爲後端環境。從上手便利性方面進行考慮,決定採用熟悉的js語言作爲後端的開發語言,採用KOA作爲後端框架。目前來說,語言的選擇並不是最重要的事,最重要的是熟悉後端程序處理的層次劃分,因此,目前先用js作爲語言,之後熟悉了後端流程,開始進行其他語言的語法學習時,再採用django、beego等語言進行重寫。

  • 使用 mysql 作爲數據庫。由於mysql的流行性,先採用mysql作爲數據庫進行數據存儲,先把數據表的設計、數據查詢優化等這一系列的內容熟悉後,再去考慮性能、分佈式等方面技術。例如添加redis緩存等等。

產品情況

  • 產品主體是一個博客系統,最基礎的功能是寫文章、看文章、寫評語,主體功能已經基本實現。

  • 目前,對 產品 的理解是非常不到位的,不論是 對需求的把握 還是 需求生產流程的遵照 都是非常原始的,基本處於 “我想大概做個什麼 ,然後就直接寫代碼實現了”,雖然在項目還未開始的階段,簡單畫了個原型圖,但存在較多問題(下面分析下),因此,還需要多瞭解 “產品的想法”,不斷地規範產品設計工作流程。

  • 之前開發中的一些問題

    • 原型圖過於簡單,如下是其中兩個頁面(總共也只有4個頁面),可以看出完全沒有交互的說明(因爲根本就沒想清楚交互是怎樣的),也沒有頁面之間的跳轉關係。實際上是沒有真正想清楚,這個產品是什麼,要滿足什麼樣的需求,每個頁面的作用是什麼,用戶可能會有什麼樣的操作過程。
      在這裏插入圖片描述在這裏插入圖片描述
    • 沒有先把 ‘小組件’ 規劃好,而是想到什麼就開發什麼,有些公共的部分其實是可以抽象出來的(目前抽象了一個Message的全局組件)。
    • 公共樣式沒有做約定,每次寫樣式都是根據自己當時的心情完全重寫,比較費事。
產品開發流程的問題
  • 產品設計上,沒有做開發版本規劃,目前處於非常原始的狀態,想到了就在頁面的一個地方寫個簡單的TODO,然後做完就把東西刪掉了。沒有形成一套完整的開發流程。應當要做產品版本規劃,在一個版本內,做好產品功能優化的系列,然後完成某個功能點後打勾,整個版本規劃是增量的,便於回顧之前的樣子。
  • 前後端開發結合上,沒有做比較明確的前後端分離的接口約定,每次都是看前端需要什麼,然後立馬在後端給返什麼。但實質,是沒有思考清楚一個場景中需要哪些字段,他們之間的邏輯關係是什麼。最好是先分析清楚數據邏輯,從後端開始開發,包括字段確定然後寫接口文檔,最後再開發前端。

總結

雖然這是一個完全 ‘自導自演’ 的項目,但必須要把每個階段區分開,在每個階段時,都全心全意做好當前階段應該做的事,‘自導自演’的好處是讓我理解各個階段的工作內容,而不是刻意隨心所欲地來回切換,這樣看似各階段可以流暢溝通(都是跟自己溝通),但實際上,每個階段的專業內容都沒有做好。

區分開各個階段後,每個階段都要做得更專業。產品規劃時,要先分析產品需求,要寫版本規劃,要做產品體驗反饋。前端開發時,要做全局樣式約定,要做公共組件抽象和規劃,要理清楚頁面的關係。後端開發時,要跳出頁面看數據本質,對應到數據模型的字段邏輯,要做分層抽象,Controller、Model、Logic、View、Utils每一個分層要做特定的抽象和封裝。

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