為什么要流水線?為了提升效率4488倍纸肉!
流水線出來(lái)之前,汽車工業(yè)完全是手工作坊型的溺欧。每裝配一輛汽車要728個(gè)人工小時(shí)喊熟。這一速度遠(yuǎn)不能滿足巨大的消費(fèi)市場(chǎng)的需求.所以使得汽車成為富人的象征。
1913年,福特應(yīng)用創(chuàng)新理念和反向思維邏輯提出在汽車組裝中姐刁,汽車底盤在傳送帶上以一定速度從一端向另一端前行芥牌。前行中,逐步裝上發(fā)動(dòng)機(jī)聂使、操控系統(tǒng)壁拉、車廂、方向盤柏靶、儀表弃理、車燈、車窗玻璃屎蜓、車輪痘昌,一輛完整的車組裝成了。第一條流水線使每輛T型汽車的組裝時(shí)間由原來(lái)的12小時(shí)28分鐘縮短至10秒鐘炬转,生產(chǎn)效率提高了4488倍辆苔!
Android項(xiàng)目開(kāi)發(fā)如何流水線化?
對(duì)于編程這樣的智力密集型活動(dòng)返吻,能做到流水線式的生產(chǎn)嗎姑子?
對(duì)Android開(kāi)發(fā)而言,這個(gè)答案是可以做到测僵。
主流水線包含以下工序:
- 按照產(chǎn)品詳細(xì)需求街佑,設(shè)計(jì)框架,切分成module捍靠。
- 實(shí)現(xiàn)Module:
- 按照產(chǎn)品原型設(shè)計(jì)沐旨,將每個(gè)module細(xì)化為頁(yè)面的Fragment類。
- 按照產(chǎn)品視覺(jué)設(shè)計(jì)榨婆,繪制每個(gè)Fragment的xml磁携。
- 按照產(chǎn)品視覺(jué)設(shè)計(jì),結(jié)合
butterfork
等工具良风,實(shí)現(xiàn)各個(gè)按鈕的點(diǎn)擊跳轉(zhuǎn)谊迄,將各個(gè)頁(yè)面連接在一起。 - 按照服務(wù)端接口文檔烟央,封裝所有數(shù)據(jù)Model的結(jié)構(gòu)和網(wǎng)絡(luò)加載接口统诺。
- 按照產(chǎn)品視覺(jué)設(shè)計(jì),寫好數(shù)據(jù)展示類的數(shù)據(jù)獲取疑俭、展示(可能涉及到特殊的View控件封裝粮呢,比如圖表等);
- 按照產(chǎn)品視覺(jué)設(shè)計(jì),寫好數(shù)據(jù)上傳類的數(shù)據(jù)提交啄寡、展示(可能涉及到特殊的View控件封裝豪硅,比如時(shí)間控件等);
- 按照產(chǎn)品原型設(shè)計(jì)挺物,結(jié)合
EventBus
等工具懒浮,優(yōu)化跳轉(zhuǎn)結(jié)構(gòu),設(shè)計(jì)Module內(nèi)的Event事件產(chǎn)生和消耗识藤,并實(shí)現(xiàn)嵌溢; - 編譯Module,生成apk蹋岩,做模塊測(cè)試
- 將各個(gè)Module組裝在一起赖草,生成目標(biāo)apk,做整體的系統(tǒng)測(cè)試剪个。
除了主流水線秧骑,還可以建立輔助流水線來(lái)生產(chǎn)特殊的控件
,比如
- 圖表顯示控件
- 日期選擇控件
- 時(shí)間選擇控件
- 圖片選擇控件
- 緩存管理控件
- 數(shù)據(jù)庫(kù)管理控件
- 網(wǎng)絡(luò)連接管理控件
- ……等等
這些輔助流水線通晨勰遥可以放在項(xiàng)目預(yù)研期開(kāi)始乎折。Android開(kāi)發(fā)人員在等待產(chǎn)品詳細(xì)需求、產(chǎn)品原型設(shè)計(jì)侵歇、產(chǎn)品視覺(jué)設(shè)計(jì)骂澄、服務(wù)端接口文檔時(shí)進(jìn)行這項(xiàng)工作,即可以提前預(yù)估項(xiàng)目的技術(shù)風(fēng)險(xiǎn)惕虑,也有利于合理規(guī)劃后面的工期坟冲,防止人員空轉(zhuǎn)。
編程流水線化和汽車流水線的異同和由此帶來(lái)的影響溃蔫?
相同點(diǎn) 是 相鄰的兩個(gè)工序 由不同的人完成健提。這樣做有兩個(gè)好處:
- 界限清晰,每個(gè)工序可以在不同的領(lǐng)域內(nèi)做自身的精深訓(xùn)練伟叛,完成積累私痹;
- 每個(gè)工序依賴上一道工序的產(chǎn)物,因此工序間形成約束關(guān)系统刮,有利于趁早發(fā)現(xiàn)上個(gè)工序的問(wèn)題紊遵,及時(shí)修正。同時(shí)這也是培訓(xùn)新員工的好方便侥蒙,便于大家對(duì)中間產(chǎn)物保持同樣的理解暗膜。
不同點(diǎn)是 汽車流水線上是實(shí)物操作,每道工序可以切分的非常細(xì)致辉哥,輸入輸出非常明確桦山,因此工作技能培訓(xùn)難度很低,每個(gè)人都可以輕易學(xué)會(huì)醋旦。
而編程是一項(xiàng)智力密集型活動(dòng)恒水,流水線上流動(dòng)也是虛擬的文檔、代碼饲齐,所以在編程流水線上钉凌,彼此很容易模糊自身職責(zé)邊界,順手就把別人的問(wèn)題解決了捂人,別人的事情做了御雕,達(dá)不到流水線的效果。這種現(xiàn)象在磨合初期是難以避免的滥搭,需要通過(guò)相應(yīng)的培訓(xùn)來(lái)強(qiáng)化大家的分工理念酸纲。
編程流水線化對(duì)程序員帶來(lái)的影響
- 可以專工某一個(gè)領(lǐng)域,不斷沉淀瑟匆,在效能上不斷提升闽坡。
- 可以透過(guò)換崗的形式與周圍工種進(jìn)行技能交換,快速獲得別人沉淀的經(jīng)驗(yàn)愁溜。
怎么做到4488倍疾嗅?不會(huì)唬我吧
流水線對(duì)于汽車生產(chǎn)的作用,是將工種細(xì)化到極致冕象,降低對(duì)工人綜合素質(zhì)的要求代承,同時(shí)由于工種的細(xì)化使得整個(gè)每個(gè)工種的專業(yè)度上升,效率大幅提升渐扮。
對(duì)開(kāi)發(fā)而言论悴,原理是一樣的。所以要想做到效率提升墓律,方向就是兩個(gè):
- 細(xì)化工種意荤,降低從業(yè)人員的需求。
- 研究每個(gè)工種的特性只锻,制定相應(yīng)的專業(yè)度提升方案玖像。
比如,對(duì)xml繪制人員而言齐饮,把市場(chǎng)上排名前100的應(yīng)用都看一遍捐寥,然后抽取通用的樣式,形成模板庫(kù)祖驱,以后制作xml的時(shí)候握恳,要么把模板庫(kù)中l(wèi)ayout直接Include進(jìn)來(lái);要么復(fù)制粘貼捺僻,做簡(jiǎn)單的修改就可以了乡洼。單個(gè)頁(yè)面制作從4小時(shí)崇裁,縮減為1秒鐘,不是不可能束昵。
對(duì)于控件封裝更是如此拔稳,一個(gè)復(fù)雜的邏輯控件,比如下拉刷新锹雏,從設(shè)計(jì)到實(shí)現(xiàn)巴比、優(yōu)化,可能需要1~2個(gè)星期礁遵,但使用起來(lái)也就幾行語(yǔ)句的事情轻绞。效率的提升遠(yuǎn)遠(yuǎn)操作4488倍。
軟件就是一段方便復(fù)制佣耐、粘貼政勃、復(fù)用的數(shù)據(jù)塊,其效率的提升是沒(méi)有天花板的兼砖。
【Android流水化開(kāi)發(fā)】相關(guān)文章
- 理念·Android端開(kāi)發(fā)效率如何提升4488倍稼病?
- 工序1:初始化項(xiàng)目框架
- 工序2:繪制xml
- 工序3:如何增加點(diǎn)擊事件,將各個(gè)頁(yè)面連接在一起掖鱼?
- 工序4:封裝數(shù)據(jù)加載然走、上傳接口,并顯示戏挡、跳轉(zhuǎn)
Panda
2016-06-20
2016-06-21后記:
第一次寫文章芍瑞,收到負(fù)面評(píng)論,有點(diǎn)糾結(jié)是刪除還是留著褐墅,最后決定還是留著吧拆檬,世界總有不同的聲音,學(xué)會(huì)適應(yīng)就好妥凳。
??做app開(kāi)發(fā)多年竟贯,也對(duì)編程這件事有些不一樣的思考。如果更高效的輸出編程產(chǎn)物逝钥?是一個(gè)一直引領(lǐng)我思考的問(wèn)題屑那,最近想到的答案是流水化,我也正在把公司的Android團(tuán)隊(duì)往這個(gè)方向帶領(lǐng)艘款,幾個(gè)項(xiàng)目后應(yīng)該會(huì)看到成效持际,到時(shí)候再跟大家分享吧。
??@stefanli 提到了標(biāo)題黨的事情哗咆,其實(shí)我一開(kāi)始寫這個(gè)標(biāo)題的時(shí)候蜘欲,也會(huì)覺(jué)得有點(diǎn)標(biāo)題黨。但是我想表達(dá)的不是stefanli認(rèn)為的組件化晌柬,而是如何在項(xiàng)目實(shí)踐中高效地產(chǎn)生合適的組件姥份。大家都覺(jué)得Android開(kāi)始是一個(gè)完整的工種郭脂,很少有人提及 xml的制作 和 邏輯類的編寫是可以分開(kāi)的,而其實(shí)當(dāng)它們分開(kāi)的時(shí)候澈歉,才是各自效率大幅度提升的時(shí)候展鸡。就像福特之前,人們也就認(rèn)為汽車就應(yīng)該是手工作坊型闷祥,一個(gè)人即安裝發(fā)動(dòng)機(jī)、也安裝車輪傲诵,沒(méi)有人想到凯砍,如果一個(gè)人僅僅安裝發(fā)動(dòng)機(jī),這種重復(fù)之中拴竹,他的效率可以快到驚人的程度悟衩,所以流水化的重點(diǎn)是社會(huì)分工的精細(xì)化。