文章出處

如果我比別人看得更遠,只因為我站在巨人的肩膀上。                                                        ——牛頓

 

高級軟件工程課程終于開課了!第一堂課上,殷秋豐老師要求我們回顧學習往屆學長學姐們的工作,從中學習、吸取經驗教訓,為自己更好地工作打下基礎。課后,我們小組對以往Team的博客進行了充分的調研,并最終確定了選擇Gun N' Rose組的博客(http://www.cnblogs.com/Gun-N-Rose/)進行學習。通過學習師兄師姐的以往項目,我們對以往的課程進度有了大致的了解,也對軟件開發的過程與核心有了更清晰的認識。

 

下面是我們小組對于Gun N' Rose組博客的學習心得。

 

Pick a past project

“Gun N' Rose”組的項目是“ImageSearchHelper”,顧名思義,是一款定位于輔助圖片搜索的軟件。傳統圖片搜索主要是通過關鍵字搜索,該組產品針對一些特殊場景實現了基于圖像的搜索,譬如可以針對特定顏色進行圖片搜索、用戶直接畫出心里所想來進行搜索。該產品主要基于Sketch search和Color search技術,幫助用戶更好地得到搜索結果。

 

Interview student of that team

本組首先派出特派員章瑋對Gun N' Rose組元老Li Zhang師姐進行了采訪,以下是對于這個項目的采訪內容總結。

Q1:我在博客上看到你們組最后做的是圖片搜索,之前也有提過關于“ToDoList for Win8”的proposal,請問一下你們最終是如何定下這個題目的?

A1:我們當時定下這個題目的過程是,記得鄒欣老師當時有4個題目可以供我們選擇?我們全班總共分成5個組,按照抽簽順序抽到這個題目。

Q2:你當時在組里是哪個角色?同組大致還需要哪些角色分工?

A2:我當時在組里負責寫代碼,每個組首先需要一個PM,剩下的人都是developer。PM每天組織daily scrum和更新博客以及和大家討論項目當中的Features, 以及各個寫代碼的分工,developer主要負責寫自己要負責完成的部分,以及維護代碼的check in、checkout等工作。

Q3:你們做這個項目的代碼量大嗎?關于編程語言方面有沒有什么建議?

A3:我們做這個項目的總代碼量很大,但是我們主要動手寫的也就主要是UI以及一些新加的功能部分代碼,圖片搜索的主要算法部分是用的開發這個圖片搜索的研究員的代碼。編程語言的話,建議c#、c++。

Q4:對于圖片搜索,我也知道軟件工程中開始的需求分析和設計很重要,那一開始你們設想的成果和最終發布的版本差距大嗎?

A4:我們設想的成果和最終發布的版本還是比較一致的。這可能是因為圖片搜索的主要算法已經實現了,我們負責的是怎么樣讓用戶更好的使用這個搜索。

Q5:我看到你們組的博客上在定題后主要是daily scrum,還穿插了一些技術分享。你對于我們之后要開始的軟件工程項目有沒有什么建議呢?

A5:建議的話,我覺得作為一個團隊,實現一個項目的話,首先團隊里的每個人都要有責任心,因為大家在自己的組里都有任務,可能會碰到有些人一直抽不出來時間來做軟件工程的項目,這個時候作為團隊里的一名成員,要時刻記得自己必須要按時完成自己該完成的部分,要真正付出行動來讓這個項目最終很好的完成;其次就是團隊溝通需要高效率,每次daily scrum不僅僅是一個形式,最好每個人在daily scrum之前已經總結好自己要說的東西。

最后師姐還希望我們好好加油,做出有意思的東西,我們都得到了很大的激勵!在此對Li Zhang師姐表示衷心感謝!

 

Lessons learned from them

我們小組在仔細學習了以往項目之后,對軟件項目的開發都有了更深入的了解,也收獲了很多。下面是羅人千同學對我組學習成果的總結匯報。

我們小組認真學習了Gun N' Rose組的圖片搜索項目的blog,感受到一個軟件項目想要做好,有以下幾點最需要注意:

1、了解用戶需求

一個好的軟件一定要解決用戶的需求,站在用戶的角度思考他們缺什么、需要什么,這樣的軟件做出來才會有生命力,不然只是曇花一現,甚至連一現的機會都沒有就沉溺在軟件商店的汪洋大海里。解決了用戶需求才會讓用戶對我們的產品產生粘性,會離不開我們的產品。就像我們現在在移動互聯時代離不開即時通訊軟件、支付軟件一樣。Gun N' Rose組的圖片搜索軟件恰好解決了很多用戶在使用搜索引擎時遇到的問題——搜索到的結果并非自己想要的,或者搜索到的結果太廣而自己只想要其中某一類具有共同特征的結果,這在文字搜索時只要加足條件敘述即可,但在搜索圖片時會有難度,比如我們需要某一類樣子的圖片,這個“某一類樣子”不好用語言描述。而Gun N' Rose組的軟件恰好解決了這個需求,能根據用戶的某些需求搜索特定特征的圖片。這一功能會大大滿足諸如編輯、UI設計人員、幻燈片制作者的日常需求,并大大減少其工作量。

2、良好的分工和任務規劃

一個團隊要運營好,每個人的職責分工一定要清楚。一個項目在開工伊始,一定要有明確的任務分工和任務規劃,讓每個人都充分發揮他的價值,讓每個人在每個階段都有明確的任務。

3、團隊交流

隊員之間一定要經常進行交流,每天一次短暫交流或者是利用博客、郵件列表、交流群等工具。交流的內容可以是對項目的看法,或者開發過程中的一些心得、經驗,或者是請教一些問題,這種交流可以讓大家共同學習。有質量的交流可以提高項目的速度和效率,一個隊員把自己走過的彎路告訴大家后可以讓大家避免犯同樣的錯誤,避免浪費時間,提高效率,一個隊員的好的經驗可以幫助大家更好更高效地開發。學長學姐們每天的Daily Scrum給了大家交流的機會,我還看到有學長在博客里貢獻文章教給大家——比如一些好的開發習慣,一些技術講解,一些項目背景知識的擴充,自己開發過程中的思想體會和建議等,這些都是能提高大家工作效率和質量的地方。

4、執行力

前面提到了任務規劃。我們不能讓任務規劃只是停留在紙面,一定要認真按照制定的規劃里的時間節點保質保量的完成任務,這樣才不會出現發布前手忙腳亂還在調整需求、開發功能、測試功能,感覺往屆的學長學姐們其實在這一部分還是沒能做地很好,還是會在發布前還在開發功能、測試功能模塊。

 

What we would do differently

俗話說:當局者迷,旁觀者清。大家在學習完師兄師姐的軟件項目之后,也敏銳地覺察到了一些有待提高之處,那么如果我們是Gun N' Rose組的組員,我們會著重改善哪方面呢?下面分享一下幾位組員的想法。

我覺得他們做的確實不錯,從daily scrum中可以看到大家的努力,更重要的是看到了他們的團隊精神。下面談談我的幾個想法。

第一個是關于bug。每個人在大大小小的task上都會遇到bug,而bug的解決往往需要時間和運氣,我想這是每個程序員親身經歷過的。個人的感覺是有時候自己一時想不通自己程序的問題,或看不出錯在哪里,這個時候找別人交流一下,會得到他人的經驗幫助自己快速定位bug和解決辦法。因此每次做daily scrum,或者組員之間頻繁的交流bug,可以起到事半功倍的效果。另外一點,每天博客上的daily scrum大都說了出現的bug,但后期沒有說bug如何解決的。我認為在博客上針對一些有所收獲的解決概括的寫一下bug的原因和解決方案,不僅是對自己的提升,也是經驗的分享。

第二個是分工的時候最好能事先討論好接口該怎么寫,也就是說幫助code寫的更有前瞻性。即使只是確定一個大致的方向,幫助也會很大,可以避免后期整合大家的code時大量的刪改。

最后一點是每個小的task的驗收應該盡量的嚴格,這也是避免到后期整合task時出現太多隱藏的bug而措手不及,同時不斷的給developer反饋,以幫助他們更好的完成后續task。

——拜重陽

學長學姐們的ImageSearchHelper項目還是做得挺努力的,想法也挺有創意。如果當時我在這個小組中,我會嘗試做出以下改變:

一、需求或用戶場景上,加上通過圖片的描述來獲取圖片這一項功能(當然,這涉及到的領域可能就廣一些了)。在他們的Spec中,針對設計師的特定顏色搜索功能挺不錯。但是“針對不知道關鍵字而無法使用關鍵字搜索的用戶”這一項感覺有些牽強。有時候“涂涂畫畫”,對于稍復雜的物體,要想準確識別、精確搜索的話可能比較困難,這對普通用戶而言可能還不如想一些關鍵字更方便些。

二、在M1階段的task劃分更明確一些。我看到有的Daily Scrum上只是簡單地寫了下完成了taskXXXX,具體內容沒有;有的task則拖了很長時間才完成。

三、介紹一些典型的bug有哪些,是怎么解決的,以便學習和回顧。通過blog可以看到,隊員很長時間一直都在挑bug,而沒有指明為什么會出現這些bug,或最終怎樣解決的典型bug。

四、設計完整地測試計劃,明確到測試項。在blog中可以看到,隊員中有的是泛泛地負責test,但是測試哪些內容不得而知。項目的結尾看起來有些草率。最終的Final Scrum里效果圖只放了三張,不知道最終效果做的怎么樣,是不是能夠滿足當時定義的需求。

——任爍

我提五點我的看法哈!如果我是組員,我…

一、會盡量開動腦筋,自己想題目。一方面會對題目有更好地了解,一方面也能鍛煉自己獨立思考的能力;

二、會盡量在核心功能加入自己的一些特色,而不是僅僅滿足于將研究員大大的代碼用起來。例如,對于搜索,其實比較成熟的技術是基于文本的搜索,那有沒有可能將文本和圖片結合起來一起搜索呢?而不是簡單地忽略原來文本的搜索,然后開始一個新的搜索;

三、會努力將這個工具發布到外部,而不僅僅是提供給公司內部使用,希望可以吸引到更多的用戶,并獲得更多的反饋;

四、如果做到了第三點,希望嘗試跨平臺的應用的開發;

五、努力更合理得分配時間,趕在時間的前面而不是被時間趕。

——劉力源

 

結語

以上就是Code Hunters組對項目ImageSearchHelper的學習心得。期待我們小組能長江后浪推前浪(一代更比一代浪:P),在之后的學習與項目中表現得更出色!


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()