《App研發錄》面世


  古者富貴而名滅,不可勝記,唯倜儻非常之人稱焉。故西伯拘而演《周易》,屈原放逐,乃賦《離騷》。文人雅士一次次的譜寫着千古絕唱,而我亦不能免俗,也要附庸風雅,寫一部前不見古人、后不見來者的經典之作。

  於是,歷時一年,嘔心瀝血,結合自身3年來從事App領域的一線實戰經驗,再輔之以從事軟件行業十余載的奇技淫巧,寫下這洋洋灑灑三百多頁十幾萬字。初稿完成后,就如同和氏璧般,竟找不到出版社願意出版,而我又不肯妥協,去寫那些無關痛癢的語法介紹和UI布局等入門級章節。就在這時,杜勇幫我介紹了機械工業出版社的吳怡老師,促成了這本書的出版。

  臨近出版之際,約到了周鴻禕和劉江、屠毅敏等人的序言。劉江老師是帶我進入圖書出版的引路人,回想起來也是八年前的事了;而屠毅敏則是WaxPatch的發明者,全世界第一個解決了iOS熱修復線上bug的人(JSPatch要晚好幾年)。說起周鴻禕,那是我在某個微信群誤打誤撞認識的,他欣賞我一條路走到黑的研究精神,而我則欣賞他的個性張揚。現實中我們從未見過面,前幾天我去360給他送樣書,保安不讓進,我也只好鎩羽而歸。

  購書地址:http://item.jd.com/11791229.html

  隨書源碼:http://www.cnblogs.com/Jax/p/4656789.html

 

 

  最后,附上本書的前言,以饗讀者:

 

皇皇三十載,書劍兩無成 

  在你面前娓娓而談的我,曾經是一位技術宅男。我寫了6年的技術博客,500多篇技術文章。十年編程生涯,我學習了.NET的所有技術,但是從微軟出來,踏上互聯網這條路,卻發現自己還是小學生水平,當時恰逢三十而立之年,感慨自己多年來一事無成,於是又開始了新一輪的學習。選擇移動互聯網這個方向,是因為這個領域所有人都是從零開始,大家都是摸索着做,初期沒有高低上下之分。

  在此期間,我做過Window Phone的App,學會了Android和iOS,慢慢由二把刀水平升級到如今的著書立說,本來我想寫的是iOS框架設計,因為當時這方面的經驗積累會更多一些,2013年的時候我在博客上寫了一系列這方面的文章,可惜沒有寫完。如今這本書是以Android為主,但是框架設計的思想是和iOS一致的。

  作為程序員,不寫本書流傳於世,貌似對不起這個職業。2008年的時候我就想寫,可那時候積累不夠,所知所會多是從書本上看到的,所以沒敢動筆,而是選擇翻譯了一本書《MSIL權威指南》。翻譯途中發現,我只能老老實實地按照原文翻譯,而不能有所發揮。我渴望能有一個地方,天馬行空地將自己的風格淋漓盡致地表現出來,在寫這本書之前,只有我的技術博客。

  終於給了自己一個交代,東隅已逝,桑榆非晚。

 

文章本天成,妙手偶得之

  這是一本前后風格迥異的書,以至於完稿后,不知道該給本書起一個什么樣的書名。只希望各位讀者看過之后能得到一些啟示,我就心滿意足了。

  下面介紹一下本書的章節概要。本書分為三個部分共計12章。

  第1章講重構。這是后續3章的基礎。先別急着看其他章節,先看一下這一章介紹的內容,你的項目是否都做到了。

  第2章講網絡底層封裝。各個公司都對App的網絡通信進行了封裝,但都稍顯臃腫。我介紹的這套網絡框架比較靈巧,而且擺脫了AsyncTask的束縛,可以在底層或上層快速擴展新的功能。這樣講多少有些自賣自誇,好不好還是要聽讀者的反饋,建議在新的App上使用。

  第3章講App中一些經典的場景設計,比如說城市列表的增量更新、緩存的設計、App與HTML5的交互、全局變量的使用。對於這些場景,各位讀者是否有似曾相識的感覺,是否能從我的解決方案中產生共鳴?

  第4章介紹Android的命名規范和編碼規范。網上的各種規范多如牛毛,但我們不能直接拿來就使用,要有批判地繼承吸收,要總結出適合自己團隊的規范。所以,即使是我這章內容,也請各位讀者有選擇地采納。我寫這一章的目的,就是要強調“無規矩不成方圓”,代碼亦如是。

  第5章和第6章組成了Android崩潰分析三部曲。寫這本書用了一年,其中有半年多時間花在這兩章上。一方面,要不斷優化自己的算法,訓練機器對崩潰進行分類;另一方面,則是對八十多種線上崩潰追根溯源,找到其真正的原因。

  第7章講Android中的代碼混淆。本不該有這一章,只是在工作中發現網上關於ProGuard的介紹大都只言片語。官方倒是有一份白皮書,但是針對Android的介紹卻不是很多,於是便寫了這章,系統而全面地介紹了在Android中使用ProGuard的理論和實踐。

  第8章講持續集成(CI)。十年傳統軟件的經驗,使我在這方面得心應手。這一章所要解決的是,如何把傳統軟件的思想遷移到App上。

  第9章講App競品分析,是研究了市場上幾十款著名App並參閱了大量技術文章后寫出的。之前積累了十年的軟件研發經驗,這時極大地幫助了我。

  第10章講項目管理,是為App量身打造的敏捷過程,是我在團隊中一直堅持使用的開發模式。App一般2周發一次版本,迭代周期非常快,適合用敏捷開發模式。

  第11章講日常工作中的問題解決辦法。那是在一段刀尖上舔血的日子中總結出的辦法,那時每天都在戰戰兢兢中度過,有問題要在最短時間內查找到原因並盡可能修復;那也是個人能力提升最快的一段時光,每一次成功解決問題都伴隨着個人的成長。

  第12章講App團隊建設。我是一個孔雀型性格的老板,所以我的團隊中多是外向型的人,或者說,把各種悶騷型技術宅男改造成明騷;我是從技術社區走出來的,所以我會推崇技術分享,關心每個人的成長;我有8年軟件公司的工作經驗,所以我擅長寫文檔、畫流程圖,以確保一切盡在掌握之中。有這樣一位奇葩老板,對面的你,還不快到我的碗里來,我的郵箱是16230091@qq.com,我的團隊,期待你的加入。

 

心如猛虎,細嗅薔薇

  話說,我也是無意間踏上編程這條道路的。如果不是在大三實在學不明白實變函數這門課的話,我現在也許是一個數學家,或者和我的那些同學一樣做操盤手或是二級市場。

  我真正的愛好是看書,最初是資治通鑒、二十四史,后來發現在飯桌上說這些會被師弟師妹們當做怪物,於是按照中文系同學的建議翻看張愛玲、王小波的小說,讀梁實秋的隨筆。在復旦的四年時光,熏出了一身的“臭毛病”,比如說看着夜空中的月亮會莫名其妙地流眼淚,會喜歡喝奶茶並且挑剔珍珠的口感。

  不要以為程序員只會寫代碼。程序員做烘焙絕對是逆天的,因為這用到軟件學中的設計模式,我也曾研發出失敗的甜品,做餅干時把黃油錯用成了淡奶油,然后把烤得硬邦邦的餅干第二天拿給同事們吃。

  我涉及的領域還有很多,比如煮咖啡、唱K、看老電影,都是在編程技術到了一定瓶頸后學會的,每一類都有很深的學問。不要一門心思地看代碼,生活能教會我們很多,然后反過來讓我們對編程有更深刻的認識。

  心若有桃園,何處不是水雲間。

 

會當凌絕頂,一覽眾山小

  如果后續還有第二卷,我希望是講數據驅動產品。就在本書寫作期間,我的思想發生了一次升華,那是在2015年初的一個雪夜,我完成了從糾結於寫代碼的方法到放眼於數據驅動產品的轉變。這也是這本書前面代碼很多,越到后面代碼越少的原因。

  數據驅動產品是未來十年的戰略布局。之前,我們過多地關注於寫代碼的方法了,卻始終搞不清用戶是否願意為我們辛辛苦苦做出來的產品買單,技術人員不知道,產品人員更不知道。產品人員需要技術人員提供工具來幫助他們進行分析,比如說ABTest,比如說精准推送平台,比如說用戶畫像,而我們檢查自己的代碼,卻發現連PV和UV都不能確保准確。

  這也是我接下來的研究和工作方向。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM