我眼中的移動(dòng)開(kāi)發(fā)二十年

動(dòng)機(jī)

遙想五年多以前的冬天,我那時(shí)剛剛?cè)肼毭缊F(tuán),在團(tuán)隊(duì)中認(rèn)識(shí)了很多有才華和能力的年輕人。有一個(gè)小伙子就在其“網(wǎng)紅”導(dǎo)師的指導(dǎo)下,寫(xiě)了一篇關(guān)于移動(dòng)開(kāi)發(fā)十年的文章。我曾有幸拜讀過(guò)這篇文章,讀罷感覺(jué)意猶未盡,也許是因?yàn)樽约阂彩且苿?dòng)開(kāi)發(fā)出身,總想著要表達(dá)出一些東西來(lái)。轉(zhuǎn)眼時(shí)過(guò)境遷,創(chuàng)業(yè)以來(lái),自己的時(shí)間相比之前在京城謀生時(shí)多了一些,夜晚茶余飯后,便想著一點(diǎn)點(diǎn)地?cái)€出來(lái)一篇我眼中的移動(dòng)開(kāi)發(fā)20年。之所以取名我眼中的,是想先疊幾層甲:一是因?yàn)樽约赫J(rèn)知和閱歷都有限,遠(yuǎn)遠(yuǎn)比不上很多大廠中翻云覆雨的高層,頂多算是一條始終混跡于一線的“老狗”;二是因?yàn)槊總€(gè)人的經(jīng)歷曲折各不相同,加上時(shí)間如梭,很多年代月份可能比較模糊,也請(qǐng)各位讀者見(jiàn)諒。

起源——日本Smart Phone的輝煌

20年前,也就是2004年左右,那時(shí)候距離喬幫主的ipod Touch也還早了3年。我還用著諾基亞的功能機(jī)——這當(dāng)然也不是我隨隨便便就能用的起的,我用過(guò)的更多機(jī)型其實(shí)自于波導(dǎo)和TCL。這可能就是國(guó)內(nèi)手機(jī)的現(xiàn)狀。而我那時(shí)候的工作,是為日本客戶開(kāi)發(fā)他們的功能機(jī)中的軟件。也就是在那個(gè)時(shí)候,我首次認(rèn)識(shí)到了手機(jī)的奇妙之處——在現(xiàn)在看起來(lái)是大家都習(xí)以為常的功能,但是在那個(gè)時(shí)候著實(shí)帶給我了不小的震撼,比如說(shuō),可以看電影的彩色4寸“大”屏幕、可以通過(guò)手機(jī)接觸就可以傳遞通訊錄信息、還有可以用手機(jī)掃描一個(gè)看起來(lái)密密麻麻的黑白圖形就可以獲得一串像網(wǎng)址一樣的信息……

這些功能使我模模糊糊的意識(shí)到了,手機(jī)除了短信和電話,還會(huì)有更大的發(fā)展?jié)摿ΑT谶@個(gè)時(shí)期,我也因?yàn)楣ぷ鞯脑?,頻繁來(lái)日本出差。發(fā)現(xiàn)了很多日本人在等車(chē)時(shí),就盯著那個(gè)手機(jī),好像被攝取了魂魄。也有很多類(lèi)似的發(fā)現(xiàn),自己當(dāng)時(shí)并未多關(guān)注,比如那個(gè)時(shí)候日本人日常聊天通過(guò)郵箱溝通,就非常流行用文字描繪的表情(顏文字)來(lái)表達(dá)一些情感。需求的角度來(lái)看,人與人的溝通一直以來(lái)都追求更豐富的信息表達(dá)。還有那個(gè)時(shí)候,Java游戲非常流行,我的同學(xué)畢業(yè)時(shí)就曾入職一家面向日本的游戲開(kāi)發(fā)公司,可惜因?yàn)楹髞?lái)游戲牌照問(wèn)題,公司無(wú)以為繼。這個(gè)腳本是多么的熟悉。</p><p>那時(shí)日本本土的手機(jī)絕大部份是由電信運(yùn)營(yíng)商向廠商采購(gòu),這種保護(hù)主義促進(jìn)了當(dāng)時(shí)手機(jī)行業(yè)的快速發(fā)展,但是同時(shí)也為后來(lái) iPhone和 Android 系統(tǒng)崛起后,日本廠商的快速衰落埋下伏筆(當(dāng)然,日本廠商的衰落是多方面的)。
那個(gè)時(shí)候,我們老板,我們都愿意叫他主任,經(jīng)常愿意說(shuō)的一個(gè)話題,就是一款手機(jī)的開(kāi)發(fā)成本中,有30%來(lái)自于硬件,70%來(lái)自于軟件。為了節(jié)省成本,很多廠商將手機(jī)的軟件系統(tǒng)進(jìn)行封裝和分層。使得很多功能可以外包和復(fù)用。那個(gè)時(shí)候一個(gè)新機(jī)型的開(kāi)發(fā)時(shí)間少則半年多則一年以上。軟件部分一般都是幾百上千人的團(tuán)隊(duì)參與,當(dāng)然這還不是全新開(kāi)發(fā),是基于上一代的相似機(jī)型修改(我們一般叫做差分開(kāi)發(fā))。
那時(shí)候使用的開(kāi)發(fā)語(yǔ)言是 C,但是大部分代碼都使用了結(jié)構(gòu)體進(jìn)行了封裝,以達(dá)到類(lèi)似于面向?qū)ο蟮倪壿嬓ЧN易鳛橐粋€(gè)新人第一次看到 C 代碼原來(lái)可以這樣寫(xiě)是感覺(jué)非常震驚的。這樣的寫(xiě)法在構(gòu)建比較大的工程時(shí),會(huì)使得代碼的邏輯更加清晰。有些時(shí)候我不理解 Base 中為什么有一些寫(xiě)法可以簡(jiǎn)化,后來(lái)我漸漸領(lǐng)悟到,代碼是給人看的,很多代碼片段看起來(lái)似乎作者“傻傻的”,其實(shí)是為了后續(xù)維護(hù)迭代的有意為之。
因?yàn)閺氖碌氖且苿?dòng)端的開(kāi)發(fā),很多功能需要運(yùn)行在手機(jī)上。因?yàn)槟M器的功能往往非常有限而且滯后于開(kāi)發(fā)流程,所以有大量工作其實(shí)是在開(kāi)發(fā)版上完成的。整個(gè)系統(tǒng)的分層其實(shí)做的并不是怎么完備,很多上層的開(kāi)發(fā)工作往往也需要依賴整個(gè) Base。那么痛苦就來(lái)了,通過(guò)編譯運(yùn)行來(lái)檢驗(yàn)編程結(jié)果會(huì)非常非常費(fèi)時(shí)間,往往需要幾個(gè)小時(shí)的時(shí)間。所以一個(gè)比較有效的方式是一次修改多個(gè) bug,同時(shí)填入盡可能完善的 log。這樣在一次編譯后的運(yùn)行就可以發(fā)現(xiàn)盡可能多的信息來(lái)幫助自己解決問(wèn)題。所以很多老程序員其實(shí)對(duì)于 debug 的依賴并不多也是因?yàn)檫@個(gè)習(xí)慣所致。</p><p>因?yàn)橥獠康囊蕾嚩际窃?Base 中,因此為了提高編程的效率,很多人都會(huì)導(dǎo)入 Base 后進(jìn)行編程,所以那個(gè)時(shí)候?qū)τ?IDE 的依賴就非常非常弱,很多人也都習(xí)慣了 VIM,Emacs,Source insight。因?yàn)槲④浀?Visual Studio 比較占用內(nèi)存,而且也無(wú)法支撐大代碼 Base 的導(dǎo)入。

待續(xù)...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容