日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android团队的组建和管理

發布時間:2023/12/20 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android团队的组建和管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個首先要從兩個大方面說起:

A、產品定位(因為產品不同導致功能不同,所面對的應用場景就不同,這個產品定位并不是市場方向的產品定位,而且是要了解所做產品的技術實現及用戶習慣等等方面,具體來說應該是產品技術實現方面的定位);

B、技術層面,最終還是要實現產品功能,讓產品達到量產階段才有意義(這個需要從Android的架構說起,畢竟Android是一個龐大的系統,單獨某個人全部做完,在產品快速迭代的今天不太現實,android架構圖如下);

1、Team Leader(一個強力的Team Leader,外加一些愿意干活的人就行了,在工作中培養人才,提升從業人員水平,有強力Team Leader的指引下,每個人都是能夠發揮出最大作用,而且不會走偏)

2、名校論不適用研發(類似于搜索之類涉及復雜算法的軟件行業,固然需要較高學歷良好背景的人去研究。但對于App應用類軟件而言,每天的開發工作大都是重復性畫UI和調用MobileAPI獲取數據,并無需名校出身)

3、面試時需要考察的幾個點

主要考察3個方面:

(1)、技術水平,主要是候選人的編程技術水平,比如C語言、C++語言、JAVA語言、腳本等等。

(2)、領域知識,主要是候選人對業務的了解程度,這個相當于是對產品功能的熟悉,有很多是針對性的產品。

(3)、軟件技能,包括溝通能力、抗壓能力、性格以及查找BUG的技能(即解決問題的能力,這個是最主要的)。

?

一般而言,面試有兩輪最重要。第一輪是Team Leader面試,考察技術水平。第二輪是用人部門的負責人面試,考察領域知識和軟件技能。

--->如何考察面試者的技術水平?對于App而言,分為3個方向:

(1)、應用類:共同特點是頁面特別多,都需要頻繁地調用MobileAPI獲取數據,都涉及到支付流程,所以這類App的開發人員需要對UI、網絡、登錄、支付流程都非常熟悉。

(2)、手機管家類:這類App雖然也算是應用類,但是很少調用MobileAPI,它更多關注的是手機系統內部數據的讀寫,所以這類App的開發人員需要對ActivityManager、Service、BroadcastReceiver之類的知識很熟悉。

(3)、游戲類:必須對動畫引擎很熟悉,比如說Cocos2d和Lua。

?

? ? ?此外,還有一類Android從業人員,是在華為、三星這樣的硬件廠商做手機系統的二次開發,包括手機系統上自帶的一些軟件,嚴格地說,不屬于App開發。

--->面試時經??疾斓膸讉€方面:

(1)、Activity的生命周期。

(2)、Activity的4的4種啟動方式及使用場合。

(3)、做過的項目中,Activity是否有基類,如果有,封裝了哪些共用的邏輯?

(4)、事件的各種使用方法及優缺點。

(5)、與HTML5頁面的相互調用。

(6)、UI線程的阻塞與解決方案(Runnable 與 Handler)。

(7)、采用什么姿勢調用MobileAPI并解析返回的數據?

(8)、怎樣做列表的分頁和刷新。

(9)、登錄的實現,包括從哪里來,到哪里去的頁面跳轉機制,記住密碼的邏輯設計。

(10)、性能調優,包括Layout調優、Activity中如何使用CONST常量、時間換空間策略、ViewHolder、圖集的優化策略、數據緩存和圖片緩存,等等。

(11)、全局變量過多怎么辦?

(12)、寫過UT沒?

(13)、是否做過自動打包?Ant、Maven或gradle任意一種都可以。

? ? ?對于TeamLeader的要求會更高一些,包括如何檢查內存泄漏,如何優化內存、多線程、自動打包、框架設計、整個android系統都應該熟悉,才能帶好整個團隊,保證每個人問題點都能把控,版本管理等諸多方面。

?

4、無線團隊必備的10份文檔

? ? ?一個團隊成熟與否的標志是文檔。文檔太多,就違反了敏捷的原則,但有幾個文檔是必須提供的:

(1)、新員工入職文檔(這份文檔包括:部門組織結構,新員工所在的團隊和將要擔當的角色;個人簡介,用于群發給部門其他成員;要加入的公司郵件組,部門內部用于溝通的QQ群或微信群;Android項目的地址,權限申請;Bug管理工具及權限申請;測試環境和仿真環境的地址;產品需求的地址;WIFI設置、VPN申請、手機郵箱配置、打印機安裝,等等。)

(2)、加強版新員工入職文檔:(這是一份更適合Android團隊的新員工入職文檔:SVN或GIT的權限申請;Android開發常用軟件下載;迭代的節奏;業務名詞解釋;Android App的項目結構;Android自動打包地址;模板<模范標準>頁面。);代碼規范。

(3)、測試機清單(測試機型號、操作系統、使用人。采購測試機可以看友盟統計)

(4)、模塊分工表:(把開發人員按照業務線<模塊>進行劃分)

(5)、頁面邏輯流程文檔

(6)、MobileAPI接口分布圖:(一般用XMind思維導圖來描述一款App所用到的MobileAPI接口。好處:定期檢查IOS和Android在做同一功能時所使用的MobileAPI是否一致;每次MobileAPI發版上線,相關的測試人員,就可以根據這張圖,找到這些MobileAPI接口改動影響了哪些頁面和功能,需要進行相應的回歸測試。)

(7)、版本管理策略文檔:(無論是使用SVN還是GIT,都要制定一套發版流程。Android團隊中要有專門的開發人員熟悉并遵守這套流程,包括:

? ? ?正常迭代的流程;開新分支做技術調研的流程;緊急上線流程。

流程一般有兩種,要么是主干開發主干上線,要么是主干開發分支上線,無論是哪一種,都要落實文檔,切記口口相傳。)

(8)、框架設計文檔:(當我們把AndroidLib這個業務無關的類庫從App中抽象出來的時候,就該有一份框架設計文檔了。)

(9)、發布流程文檔:(Android要發布到各大市場,為此,需要修改清單配置文件中的友盟渠道號,才能統計各大市場的下載量。此外發布的apk包要混淆:渠道號是否正確? ? ? 代碼是否混淆? ? 版本號是否正確? ? ?是否release包(而不是debug包)? ? ?臨時決定關閉的功能是否露出來了? ? 是否可以支付、分享、掃描二維碼? ? 升級安裝是否會引起崩潰?

? ? ?鑒于以上各點,需要制定發布流程并形成文檔,包括:

<1>、產品經理準備發版所需要的描敘文字、圖片等材料。 ??

<2>、開發人員進行批量打包工作。 ??

<3>、測試人員要隨機抽取一個apk包進行測試,包括功能點測試。

<4>、推廣人員發布到各大市場,要有郵件持續跟蹤各個渠道的版本更新進度。

<5>、在版本倉庫上打Tag,合并分支上的代碼到主干。 ?)

(10)、App啟動流程圖

? ? ?(如果要做App性能優化,最好的著手點是App從啟動到進入首頁的流程。大多數Android App的啟動Activity并不是首頁HomeActivity,而是一個叫做LaunchActivity的頁面,它的UI就是簡單的Splash動畫,同時它肩負著更多的職責,如:

<1>、注冊友盟、推送等等第三方組件。

<2>、加載Splash圖,同時下載新的Splash圖以便下次開啟時使用。

<3>、如果是首次打開,則進入引導頁。

<4>、友盟打點,統計激活數。

<5>、如果有消息推送到達,點擊消息后想不經過首頁而直接進入某個二級頁面,其實在代碼層面還是要經過LaunchActivity的,由它對推送消息進行分發,以決定該跳轉到哪個二級頁面。

? ? ?以上這些邏輯交織在一起,非常復雜,尤其是要區分升級版和全新安裝版的時候,為此我們需要用Visio之類的軟件繪制一個App啟動流程圖。在業界,我們將LuanchActivity稱為Bootstrapper。LuachActivity把上述這些事情都做完,才會進去到首頁HomeActivity。)

}

?

5、一對一溝通

{

? ? ?走簡便流程,要求:

<1>、最近一個月做了哪些事情,有什么提高?

<2>、自身想要有什么提高?需要我幫助做些什么?

? ? ?經常反饋的有:

<1>、強烈要求團建。

<2>、有的程序員想轉行做產品經理,想得到一些鍛煉的機會。

<3>、初級程序員希望分配到一些更高級的Task。他們渴望新知識,而不是天天畫UI。

<4>、有些程序員比較好學,希望團隊有大牛,能學到東西。

<5>、渴望被表揚。

}

?

6、每周技術分享

{

? ? ?技術分享是提高團隊技術水平的3個方法之一,另外兩個是Code-Review和修復線上Crash。

技術分享關鍵在于堅持。技術分享并不是天馬行空,不為所云的技術暢談,要根據團隊整體技術水平和實際項目需要,彌補團隊短板。建議可以羅列Android或IOS必須掌握的若干技術點,然后發給大家給自己打分,每個技術點都是5分制。<完全不知道:0分 ? ? ?聽說過:1分 ? 看過介紹的文章:2分 ? 親手做過demo:3分 ?項目中使用過:4分 ? ?非常熟悉:5分>,把大家的自我打分收集上來進行匯總,對團隊的整體技術水平就一步了然了。對于團隊的技術短板,在每周的技術分享上,會安排團隊成員進行講解。

}

?

7、代碼評審

{

? ? ?常規代碼審核會出現一些情況,首先在我們是個互聯網公司,App迭代的周期只有兩周,所有的開發人員都疲于奔命做需求,哪有時間去審核別人的代碼,會出現一些情況:

? ? ?<1>、能力強且責任心強的開發人員,一天大部分時間在審核別人的代碼。

? ? ?<2>、能力強且責任心差的開發人員,看都不看直接審核通過了。

? ? ?<3>、技術能力弱的開發人員,要審核別人的代碼也是心有余而力不足。

? ? ?另一個副作用是:因為每次請別人Code-Review都要等,所以開發人員傾向于每天下班前一次性提交所有改動,并沒有遵守持續開發、持續提交、持續測試的持續集成思想。

===應變解決方案為:

? ? ?<1>、對老員工不再進行Code-Review。

? ? ?<2>、對新員工和實習生、應屆生,要為他們每人指定一個Code-Review的老員工,至少3個月之內,對他們的Code-Review還是要嚴格執行的。

大致的標準為:看編碼規范或看編碼邏輯。

---->互聯公司沒有時間去搞太繁瑣的流程,可以把Code-Review的策略改為,每周一下午,技術經理從上周提交的代碼中找出10處寫的有問題的代碼片段,然后給大家進行講解和討論。在達成共識后,今后就再也不能寫類似的代碼了。

? ? ?那么對于有問題的代碼,處理方式建議,對于首頁、會員中心這種一級頁面,不能改要保證穩定性。對于二級或三級頁面,局部某個功能可以安排人員去修改。

? ? ?在進行Code-Review的同時,有一個東西可以順便搞出來,那就是模板頁面,即符合編碼規范要求、可以作為編寫其他頁面的模板頁面。對于Android應用類App而言,一個模板頁是不夠的,至少要提供Activity、Adapter、Entity、Fragment這4個模板頁,其中Acitivity要包括對MobileAPI的調用。

? ? ?有了模板頁,所有開發人員的編碼就有章可循,單純搞Code-Review和編碼規范都太抽象,一定要有能落地的東西,那就是模板頁。

}

?

8、對Android團隊Leader的定位

{

? ? ?Android團隊Leader要負責的工作羅列入小:

<1>、每次迭代把Tesk分配到具體的開發人員。

<2>、組織線上Crash的修復。

<3>、處理線上突發bug。

<4>、排查每日客人投訴的問題。

<5>、解決團隊遇到的技術難題。

<6>、組織每周Code-Review。

<7>、組織每周例會。

? ? ?團隊Leader一定要明確自己的職責,,注意以下兩點:

<1>、不要給自己分配具體的需求開發,管理工作會消耗掉你大量的時間。

<2>、努力不要使自己成為瓶頸。很消耗時間的事情,及時分配到具體的開發人員。

? ? ?哪些工作是要盡早分配給具體的開發人員呢?

<1>、Android項目的打包。

<2>、代碼混淆。

<3>、設計Android的Lib框架,交給框架組去做。

<4>、技術調研。

<5>、Monkey日志分析。

}

?

9、Android 應用開發所需技能自我評測

{

? ? ?從事Android應用的開發人員所需要精通的20個技能點,如下:

<1>、Activity相關。App應用開發,以Activity使用最多,涉及LaunchMode、onSaveInsatanceState、生命周期等技術。

<2>、Fragment相關技術。用的人不少,想明白是咋回事的人不多。

<3>、序列化技術。有Parcelable和Serializable兩種。前者是基于Service的,后者是基于Bundle的,二者實現原理不同,但是達到的效果差不多。

<4>、ImageLoader的原理和使用。類似的還可以學習Fracebook新開源的Fresco,它對圖片的處理會更好一些。

<5>、fastJSON或GSON的使用。做App不會用實體自動匹配JSON數據,相當于白做。

<6>、多線程相關。包括Handler、Looper、ExecutorService等。

<7>、Adapetr和ListView。這兩個技術捆在一起,經常容易崩潰,尤其是分頁的時候,要仔細研究深刻領會。

<8>、用戶Cookie設計。需要把登錄機制徹底搞清楚,包括在HttpRequest頭中夾帶Cookie來進行用戶身份驗證的技術。

<9>、網絡請求封裝。使用AsyncTask的網絡底層封裝,使用Handler+Runnable的網絡底層封裝。

<10>、Android與HTML5的 交互。包括Android調用HTML5的方法,以及HTML5調用Android的方法。

<11>、代碼混淆。沒用過ProGuard,不知道keep相關語法的,有待研究。

<12>、Android 打包機制。涉及Android SDK中的若干命令。對Android打包過程做的每一件事都很清楚。進一步是Android多項目依賴的打包技術。Ant、Gradle或者Maven,掌握其中任何一種打包機制即可。

<13>、線上Crash分析并修復。要具備通過分析Crash信息修復線上Crash的能力。

<14>、內存泄漏。包括內存優化、內存泄漏的場景、MAT工具的使用。

<15>、調試工具。包括DDMS、Eclipse或者Android Studio的調制功能。

<16>、Monkey機制。Android開發人員如何對一款App進行Monkey測試。

<17>、單元測試。這里指的是JUnit。對復雜的算法寫過單元測試以保證其沒有問題。

<18>、GIT的高級功能。如果項目使用的是SVN,那么要掌握SVN的版本管理策略。

<19>、插件化編程。哪怕知道一點DexClassLoader的概念也好。

<20>、設計模式。對常見的設計模式如工廠、生成器、適配器、代理、策略模式耳熟能詳。

}

總結

以上是生活随笔為你收集整理的Android团队的组建和管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。