關(guān)于一次模塊劃分的爭論及其結(jié)局
公司最近正在對整個產(chǎn)品進(jìn)行大規(guī)模的重構(gòu),把原先基于Web的產(chǎn)品線全部轉(zhuǎn)向Android平臺。隨之而來的就是產(chǎn)品整體架構(gòu)設(shè)計上的大討論。作為其中一項最為曠日持久的爭論的發(fā)起者,我覺得有必要把這個事件記下來。無論現(xiàn)在的思路或是觀點是成熟的還是幼稚的。以后都可以引以為鑒。
先來描述一下我們要做什么。簡單而言就是一個橫跨各個內(nèi)容源的書籍閱讀平臺。這個平臺的目標(biāo)不僅僅是方便用戶在一個終端上,以一種統(tǒng)一的方式購買、閱讀到所有內(nèi)容源的書。同時,這個平臺作為一個開放式的平臺,也以方便內(nèi)容源的接入為目標(biāo),這個平臺就是起著這樣一臺讀者與內(nèi)容源之間的通道的作用。
這里的內(nèi)容源是指持有內(nèi)容版權(quán)的內(nèi)容提供商,比如全國各家出版社、網(wǎng)絡(luò)小說站點(如起點、紅袖、縱橫天下等)及其它數(shù)字出版資源提供商(如當(dāng)當(dāng)、淘花、云中書城、方正Apabi等)
這次改造的目標(biāo)主要有這樣幾點:
開放平臺:提供Apple Strore這樣的機(jī)制,讓其它內(nèi)容源的開發(fā)者可以有機(jī)會自主地接入這個平臺。比如當(dāng)當(dāng)網(wǎng)可以用我們給的SDK自己做一個Android APK,在里面賣當(dāng)當(dāng)?shù)臅?/p>
升級管理:將原來一整個系統(tǒng)分拆成各個模塊,各個模塊可以獨立地發(fā)布、測試。并使用強(qiáng)制升級的方式回避向后兼容的問題。
爭論問題的背景是:不同的內(nèi)容源所提供的內(nèi)容的格式不盡相同。有EPUB,有PDF,有TXT,有SNB,也有DOC的。我們顯然要盡量多地去支持這些書籍的格式。
爭論的焦點在于:對內(nèi)容的閱讀這個功能,應(yīng)該與每個內(nèi)容源自身的APK合并還是分開實現(xiàn)?很多人覺得當(dāng)然是要分開,但是其實現(xiàn)實中的問題沒有這么簡單。比如如下的幾個問題:
有的書不是整本購買,而是一章章地買。閱讀器看到一半兒,發(fā)現(xiàn)有一章沒有買,是不是發(fā)起購買呢?如果是,應(yīng)該向誰發(fā)起呢?
有版權(quán)的書,都是經(jīng)過加密的,想解析這種加密好的文件,需要有Key,閱讀器發(fā)現(xiàn)某一章沒有Key了,找誰要Key呢?
TXT是整個的,沒有章節(jié),如果想為TXT附加章節(jié)信息,可能就要額外的實現(xiàn),但是不同內(nèi)容源的實現(xiàn)方式不同。如果章節(jié)列表在閱讀中顯示,閱讀器又怎么知道不同內(nèi)容源對于章節(jié)列表的定義方式呢?
諸如此類的問題還有很多。即便如此,我個人自始至終都堅持分開。但我的上級領(lǐng)導(dǎo)堅持認(rèn)為應(yīng)該合并在一起,一個APK應(yīng)當(dāng)包括分類瀏覽、購買、閱讀等一整套的功能,自成體系。如果僅僅是我一個人堅持分開,顯然不會有爭論,級別在這兒擺著,他一句:“這個事情不要討論了,就是這個樣子的。”我就直接歇了。好在主導(dǎo)這次重構(gòu)的兩個架構(gòu)師的意見和我比較一致。于是我們幾個人在大庭廣眾之下(一時找不到會議室)爭論了多次。***上級的上級看不下去。把我們一票人拉去群體PK。
***BOSS給的解決方案是這樣的:
如果討論不清楚就合一塊。以后有必要了再分開。
這兩種方式?jīng)]有實質(zhì)上的沖突,可以并存,也應(yīng)該并存。只是先實現(xiàn)哪種方式的問題。
討論哪一種方式更好的時間,還不如直接讓做的人自己選一個自己覺得爽的方試直接做了。
雖然我就是那個做的人,BOSS說我爽就行。但是對于這個解決方案我目前是相當(dāng)?shù)牟粷M意。
從技術(shù)的角度,我覺得合比分要簡單得多,先分著做,出現(xiàn)無法解決的問題,再合起來所用的時間應(yīng)該比把一個系統(tǒng)拆分成不同模塊所用的時間更少。先分著做,也能把層次關(guān)系盡早理清。
從管理的角度,做正確的事情,應(yīng)該比做事的效率重要吧?
原文鏈接:http://www.cnblogs.com/nankezhishi/archive/2012/01/10/2318643.html
【編輯推薦】