“全棧”工程師筆記/記一個完整的項目流水賬


  引語:相信很多人都自認為自己是個全棧工程師,不管有沒有驗證過,我也不例外。心中總有一種傲氣,事情都能做,只是做得好不好,時間夠不夠的問題!所以,對很多事情,我其實是一點不怕的,隨着時間的推移,人總是應該要進步的,去做一些沒做過的事,才對得起成長二字!
  剛好上上個月,公司有一個新的項目需求,需要做一個全新的系統,但是看起來也不難,所以任務就交給了我。我可以說我是這個項目負責人嗎?應該是可以的!但是,最開始就已經存在了一些坑,等着我去跳,比如過需求的時候,我卻不在場!總體算下來,流程是這樣的:

  一、過什么項目需求?
    需求肯定是要過的。
    1. 要做什么?
    2. 哪些能做,大概要多久可以做好?
    3. 哪些不能做,為什么不能做,替代方案是什么? 
    4. 功能的必要性,哪些功能是必須的,哪些是可選的,哪些是多余的,以后的方向是什么?
     整理過需求后,大概就知道整個項目是什么樣的了。

  二、寫什么計划文檔?
    由於是公司內部使用的平台項目,說什么不需要美觀之類的,全部的基礎就只有一些抽象的原型圖,其他的全部工作就交給開發人員(最開始就只有我本人,后來加入了一位多年開發經驗的大師兄),因此在我計划里寫了,靜態頁面模板編寫:3天。
    因為只有我本人干,所以,在寫項目計划文檔的時候,我只管按照我的個人意願,就把時間給評估上去了(這最后被證明是自己給自己挖了大坑),各種功能,我幾乎都以1天2天或0.5天來算,功能點也是寫得比較抽象。因為畢竟,計划這東西,就是一拍腦門想出來的事。
    最后,把計划發給領導時,領導說,開發時間太長,能不能再短一點(我當時幾乎是崩潰的,因為我已經盡量把時間壓縮了)。其實我也理解,領導的意思是盡快完成。
    基本上所有的計划都會被一定程度上的延后,所以,領導讓你早一點的意思,其實基本上也是讓你按照這上面的時間來完成。
    計划就是你做事的證據,不可大意了!

  三、划分什么模塊?
    這一塊嚴格來說,很多項目基本算不得是一個流程的,至少我這個項目算不得,因為,其實就幾個字就描述清楚,扯那么多干嘛呢,哈哈哈。。。

  四、設計什么數據庫?
    這個是非常重要的環節,如果把這一塊做好了,會給以后的工作減輕不少壓力,如果沒做好,后面將導致各種問題,尤其在不是你一個在做事的時候,又會增加許多的溝通成本!
    設計的基本原則就是,看需要些什么信息,有哪些信息是公用的,會在哪里產生其他效果,詳細參照需求文檔,適當考慮擴展性!
    這個環節,一定要讓領導過一下的,他知道的比我多,考慮的點和我也不一樣,關鍵是,最后出事了,也算是心里有個底,畢竟領導自己看過了!
    然而,很奇葩的是,對於這個重要的環節,我幾乎只花了不到一天的時間就完成了!

  五、搭建什么框架?
    由於公司不讓使用外面的框架,而且其他項目的代碼,目錄結構混亂,所以決定使用內部框架,進行構建系統。但是,內部框架還明顯不成熟,就連一個像樣的幫助文檔都沒有,唯一的一個幫助文檔是框架目錄中的一個readme.md,使用了極為簡單的文字描述了功能。
    不過,最終,我還是看懂了他的框架,並順利使用到項目中,當然,繼承框架的一些東西,改掉不好的以適應項目或者個人習慣,這是必須要做的工作。並將需要使用的插件,目錄,擴展都給弄好!這樣以后,只要往既定的目錄下寫自己的代碼,修改即可,相對來說,結構還是很清晰的!
    把前幾天寫好的靜態頁面嵌入代碼中,這樣,整個項目就算有了真正的樣子了!
    把最基本的驗證一類的工作做在這里,可以不實現具體功能,但是位置一定要預留!
    使用到的東西有:內部PHP框架、bootstrap、Jquery、Jquery.form.js、My97Date、validform、layer、cron、Redis、微信接口、內部通信接口...

  六、寫什么主要功能?
    根據業務需求,首先把主要的功能給實現了,讓頁面動起來。其實,大部分的需求,都只需要通過增刪改查,就可以完成效果,但是復雜的邏輯,還是需要仔細屢屢的。
    主要功能實現后,還需要其他各種基礎數據輔助,把這些環節給做出來。
    在這期間,遇到了一些有難度的問題,發現時間不夠用,領導也發現了,偶爾會來催一下項目進度,最后,讓那位大師兄加入其中,輔助完成任務。如果沒有他的加入,我想,這個項目真的要延后很多了(盡管他加入后,也有一定程度的延后,所以,領導畢竟是領導,他才是掌舵人)。
    前面寫的計划,其實在這個時候是不太起作用的,因為之前很多功能點都沒有評估到,在這時候加進來,只有自己默默加班趕上,說多了,就是無能!

  七、做什么腳本輔助(消息處理)?
    需求中,需要服務器中進行處理一些工作,完成后通知到數據庫及相關人員,所以,需要寫相應的腳本去做這些工作,主要為配全redis進行隊列接收,另一個定時腳本隔幾分鍾執行一次,定期處理消息隊列的東西。這個工作在我本地來說,相對是不容易操作的,因為需要模擬服務器處理的工作,完了之后再進行通知,再進行定時腳本執行,如果我是在linux環境下進行開發,那這也是ok的,然而我是在windows下開發...
    把這一步做完以后,基本上大的東西就算做完了,這里要注意的就是並發和鎖的問題,你能不能允許同時執行多個實例,得考慮清楚。

  八、頁面優化,項目部署
    把主要功能實現以后,可以好好再去調一下頁面了,當然,幾乎所有的工作都是在之前做的,但是這個時候,最好還是要有這么個過程,算是檢查一下也是可以的!連接到測試服務器,進行自己測試的階段,服務器也已經部署完成!

  九、轉接測試,迅速更改
    項目進度沒有及時到位,但是,我還是將工作推進到下一步了,轉接給測試人員。當然,有幸我遇到一個好測試,他絕對算得上半個開發了,沒有他的監督,這個項目怎么敢上線,一方面,測試在測試功能,另一方面,我們加班加點,把問題解決,這個時候的工作推進還是挺不錯的,只是,自己的bug列表里面,添加了許多的記錄,多得你都不敢想!
    但不管過程如何,最后的榮耀始終是有的,在上線的那一刻,所有的bug都不是問題了,哈哈哈。。。

  十、產品介入測試
    測試通過之后,產品才算是正式介入到檢驗中來,雖然個人覺得這怎么也有一種,事不關已高高掛起的感覺,但是事情也就這樣吧。再一次有人介入,項目又再一次進入快速更改狀態,但是都已經不那么多事了,改起來也非常快。進度快速推進!

  十一、線上刪檔測試
    刪檔測試,這TM誰想出來的,所謂的線上測試,不過是對自己產品的不信任,我們再一次在線干起了測試的工作。但是,至少可以可以向上上面的領導交差了吧!

  十二、正式上線
    終於,上面催得急了,趕緊上線,上線,上線。終於可以回家睡大覺了,那一晚,真的睡得很爽。。。

  十三、補設計文檔
    忙着開發的事,一直沒時間寫文檔,做完之后,把這東西補上,否則,新來的人怎么看??

  十四、監控措施
    沒有監控措施的系統,是不信任的,出了問題你都不知道,這可不是一個有經驗的人干的事,不過晚點補也是可以的,畢竟這東西也有一個完善的過程!

  十五、后續功能
    本以為把東西做到這里,就算差不多了,但是,明顯后續工作還有很多,比如功能增加(干),比如數據壓力變大(分表分庫集群),比如與其他系統的對接(接口),我拭目以待。。。

  本項目其實算一個小項目,但是,從最開始的一無所有,到最后系統形成,幾乎所有地方都介入,這個我不知道算不算全棧的表現,至少也算是之前沒有的體驗吧。以前都是跟着大牛們做事情或者拿現有的系統進行更改,很多基礎的東西,都不用你來做,如果一直這樣,我想,經歷不能算是完整的!

  隨着時間的推移,故事還在繼續,用時間經驗填寫的故事,才夠真實,至少對於自己來說,是這樣的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM