咱們要實現一個課程資源共享平臺,爲同窗們獲取資源、分享資源提供便利。對於要解決的問題咱們小組定義得比較明確,對典型用戶和典型場景也有較爲詳細的描述。前端
原計劃實現的資源上傳/下載功能都已經在Alpha階段實現了,只是一些比較細緻的功能,如資源收藏、評價等,尚未實現。咱們的原計劃是發佈一週內用戶量達到300, 實際結果爲230左右。java
目前只是實現了資源上傳和下載的功能,目前接到的反饋有打開資源界面的時候太慢,這一點實際上咱們已經在發佈前注意到了,只是沒有時間去修復了。在發佈以後咱們經過資源的分頁顯示優化了資源顯示過慢的問題,目前使用體驗較好。python
感受沒有抓住用戶的痛點,下載資源的步驟感受仍是繁瑣了點,應該在Alpha階段實現一個「搜索資源」的功能會好一點,這部分咱們在Beta階段實現。nginx
Alpha階段共四周,其中第一週的時間主要都用於作計劃上了,時間感受比較充足。咱們在第一週大體設計了網站的原型,並對數據庫結構和一些接口進行了定義,但儘管作了不少計劃,依然還有不少沒有考慮周全的地方,好比數據庫和接口在實際開發中作了不少修改。程序員
好像在實際開發中出現意見對立的狀況不是不少……通常採起的作法是PM將全部不一樣的意見彙總,綜合利弊得出結論。數據庫
本來計劃是把資源收藏等小功能也給實現了,但資源上傳下載這部分比想象中難很多,尤爲是如何下載用戶上傳的文件是個問題,在這一部分花費的時間超出了預期。npm
我的中心在Alpha階段徹底沒用上,不過這也是爲資源收藏等功能作鋪墊,並且也沒有耗費太多時間。編程
感受並無,PM只是說要實現一個什麼樣的功能,卻沒有說這個功能實現以後要達到一個怎樣的標準,一個模棱兩可的功能實現,最終也能夠被交付。後端
並非,好比在爬取課程信息的時候一開始沒有獲取到課程類別和開課院系等信息,這樣子就沒辦法篩選課程了,只能先把Beta階段的課程搜索功能先實現了。還有一個意外就是以前提到的,咱們的資源分爲兩種,一種是爬取的資源,其實就是引用一個課程中心的連接;另一種是用戶上傳的,和課程中心上的是徹底不一樣的原理,下載用戶上傳的資源咱們費了很多時間。服務器
計劃中沒有緩衝區,都是從issue堆裏直接分配的(逃
工做重心轉移到後端,比起趕着實現博文功能,不如先把資源功能儘量完善,把較少的功能作到極致。
開發感受缺少計劃性,儘管最終目標很明確,可是實際開發時是走一步算一步。我感受計劃方面要向NewTeam團隊學習,他們在Alpha階段代碼編寫以前就已經將任務細化到每人、天天上,這一點比咱們強太多……
咱們是一人測試,四人開發,兩人前端,兩人後端,資源算是很充足了,並且組員們能力都很優秀,遇到的不少坑在你們的努力下都一一踩實了。
以小時爲單位記錄任務時間,估計的時候首先對任務進行一個大體瞭解,而後經過商議、查找資料等途徑判斷其難度。
咱們有一名成員專門負責測試,資源還算充足,只是在進行壓力測試的時候機器要一直開幾天,感受有些吃不消……咱們團隊沒有美工設計和文案,只有碼代碼的程序員。
有時候網站功能出現問題了會幫忙debug,但須要本身先熟悉一下代碼,這樣效率感受就有點低了(其實仍是本身比較菜)。
仍是感受分工出現問題,每一個人只負責職責內的工做是最好的。要是能重來,我做爲一個PM首先要保證文檔是隨着代碼進度不斷更新的,這樣可以提升成員交流的效率,其實能節省下來很多時間。在實際開發過程當中,不少bug也是由於沒有定義清楚接口和功能致使的,感受浪費了很多時間……
感受並無,有些私下決定的事並沒能及時通知你們,這一點PM須要反省。
核心的功能必須實現(如資源的下載和上傳),圍繞着核心功能的小功能能夠先放放(如資源的收藏和評論)。
並無,差很少能跑了就算出口了……
感受並無針對變動制定應急計劃,這一點在計劃中已經反省了,遇到變動的時候只有應急,沒有計劃。
中途有臨時給一些成員添加過任務,他們都接受了而且完成得很漂亮,可是我以爲意料以外的工做請求仍是應當越少越好。
因爲計劃性不是很強,因此對於變動也沒有概念,這實際上是個很危險的事情。另外若是出現了變動,PM要明肯定義出「什麼東西變了,什麼東西沒變」,這樣成員們大概也有個底。
設計是在Alpha階段第一週由PM完成的,軟工團隊項目是和結對項目無縫銜接的,所以時間還算合適。
有,好比課程id這一部分,到底是一個遞增的整數,仍是教務上的課程碼,這一點並沒能達成一致。後來id是按照整數算的,可是又加了一個code字段,用以和爬取的資源信息進行銜接。
並無用到這些工具,測試驅動的話感受時間不是很夠,UML感受用處也不是很大,不過單元測試在beta階段應當嘗試一下。
資源的上傳,由於這裏須要將文件從本地轉移至服務器上,在發佈以後出現的bug有「沒法下載上傳的文件」、「超過1M的文件上傳失敗」等bug。因爲時間較緊,咱們只進行了簡單的測試,沒有想到「上傳的文件也能夠下載」這個問題;咱們文件的上傳大小限制爲10M,咱們前後嘗試了上傳1M如下和10M以上的文件,前者成功後者失敗,覺得功能沒有bug,卻沒有考慮到1M~10M中間可能出現的問題。
團隊沒有統一進行代碼複審,只是PM在Alpha階段結束以後瀏覽了一遍核心的view.py和interface.py兩個文件。其中view.py中發現了未被調用的函數,這些有的是提早開發的Beta階段的功能,有的是Alpha階段廢掉的函數。
代碼規範較嚴格地遵照了,python部分大部分函數都在開頭用註釋標註了requires,modifies和effects,前端部分也遵照了npm的代碼規範(不然編譯都過不了……),只是沒有規定變量的命名方式,這一點沒有作到統一。
設計階段是軟件開發的地基,值得重視。要是能重來,除了增強代碼規範外,還要對設計進行充分的考慮,儘量完善接口和數據庫說明文檔。
PM並無制定測試計劃,由於當時PM認爲測試是要依賴於開發的,因此更多留意了開發部分而忽視了測試部分。
在驗收的時候,除了運行測試樣例外,還進行了負載&壓力測試,測試同窗還提供了一些優化建議。
功能測試使用java版本的selenium,負載測試採用jmeter和badboy實現。
咱們使用jmeter測試網站的性能,在alpha階段後期進行了一次耗時兩天的壓力測試,模擬100個用戶連續訪問,請求響應的錯誤率爲0,經過此次壓力測試,咱們瞭解了網站的承受能力,固然此次測試也有須要改進的地方:
運行壓力測試時要封閉其餘用戶登陸,開放環境下壓力測試獲得的最大用戶量比網站是實際能承受的用戶量略小。
只在alpha階段快結束時進行了一次壓力測試,測試的次數太少,鑑於兩天的時間比較長,測試期間網站不能更新版本,從此打算每次測一兩個小時,每週測一次,以追蹤網站效能。beta階段後期再進行一次較長時間的壓力測試。
nginx默認的文件上傳限制爲1M,後來經過修改配置文件解決了這個問題。
除了要制定開發的計劃,也要制定測試的計劃,並且要增長壓力測試的次數。
調查了一下各個同窗的意願,最終狀況是,前端是有過開發經驗的兩名同窗,測試是一名很細心、能力很強的同窗,然後端是對後端開發抱有極大興趣的兩名同窗。
互相幫助是常常的,好比前端的兩名同窗會常常討論一些技術問題,出了bug以後你們也會很積極地尋找緣由。以前Ajax出現問題的時候你們也都積極地思考解決方法,並在羣裏告知你們。
組裏關係很融洽,至今沒吵過架(捂臉)。有時候代碼銜接出現問題或是任務分配不當的時候,成員們都就事論事,沒有爭吵,而是共同尋找解決的辦法,這是令我很欣慰的。
要了解每一名成員,包括但不限於長處、短處、性格以及時間安排等等,分配給每一名同窗最適合它的工做是墜吼的,可是作到這一點很難很難……
我以爲處於第一檔次,由於沒有一個較爲完整的計劃,管理經驗不足,實際開發變動較多。
我認爲處於創造階段,團隊中全部人的努力都是爲了最終產品的質量,總體氛圍很和諧,爲了更好地達到預期的效果,小組成員會主動學一些技術,出現問題的時候羣裏也會有交流。
任務分配,Alpha階段任務分配太模糊了,組員不知道該作什麼,應當作成什麼樣,這是PM的責任。若是能處理好這一點,規劃好要實現什麼,交付的標準是什麼,明確了方向組員才能投入更多的精力在開發上,而不是在揣測「咱們要作什麼」上。