摘要:大前天下午快下班那會兒,跟念茜聊了一下各自的工 作現(xiàn)狀,發(fā)現(xiàn)她現(xiàn)在碰到的一些職業(yè)規(guī)劃上的困惑,跟我在一年多前的情況非常相似。而我經(jīng)過一年多來的不斷思考和調(diào)整,已經(jīng)基本明確了自己的職業(yè)規(guī)劃,發(fā)展 的方向變得越來越清晰,配合我個人較強的執(zhí)行力,困惑越來越少,事情也正在朝著越來越好的方向發(fā)展。念茜和我是iOS開發(fā)行業(yè)中的普通年輕從業(yè)人員,因此 我們的困惑具有一定的代表性。今天,我就跟大家說說這兩年來我的職業(yè)規(guī)劃心路歷程,供大家參考。
大前天下午快下班那會兒,跟念茜聊了一下各自的工 作現(xiàn)狀,發(fā)現(xiàn)她現(xiàn)在碰到的一些職業(yè)規(guī)劃上的困惑,跟我在一年多前的情況非常相似。而我經(jīng)過一年多來的不斷思考和調(diào)整,已經(jīng)基本明確了自己的職業(yè)規(guī)劃,發(fā)展 的方向變得越來越清晰,配合我個人較強的執(zhí)行力,困惑越來越少,事情也正在朝著越來越好的方向發(fā)展。念茜和我是iOS開發(fā)行業(yè)中的普通年輕從業(yè)人員,因此 我們的困惑具有一定的代表性。今天,我就跟大家說說這兩年來我的職業(yè)規(guī)劃心路歷程,供大家參考。
看過書上自序部分的朋友都知道,我從讀碩士開始, 就已經(jīng)進入iOS領(lǐng)域了。學(xué)生階段的任務(wù)不涉及太多商業(yè)運作,幾乎是純技術(shù)研究。但畢業(yè)后要進入社會,參與市場競爭,不懂一點商業(yè)又會比較被動。也就是 說,如果我完全按照學(xué)校的安排來,可能會跟社會有一定脫節(jié);為了盡早適應(yīng)社會,就要自己給自己找點跟商業(yè)相關(guān)的事做。因此我在研二下學(xué)期快研三的時候發(fā)布 了一款iOS短信電話防火墻軟件SMSNinja,希望能夠通過這個軟件搭起一座我與用戶交流的橋梁,在服務(wù)大眾的同時在市場上摸爬滾打,了解一款軟件從 創(chuàng)意到構(gòu)思到設(shè)計到編碼到發(fā)布的整個流程,提前接觸市場。
在開發(fā)SMSNinja的整個過程中,我通過跟大量用戶的溝通,無數(shù)的郵件、留言交流中,對移動互聯(lián)網(wǎng)時代的軟件開發(fā)特點有了初步認(rèn)識,那就是我要不斷地根據(jù)用戶反饋去調(diào)整軟件,讓它更好用。后來我知道,這個特點有一個更唬人的說法,叫“迭代”。
畢業(yè)之后,我的技術(shù)進入了一個瓶頸期。搞越獄開 發(fā),class-dump出Objective-C頭文件,然后測測私有函數(shù)的功能,就可以搞出一兩個tweak,被小白喊兩聲大神了。但搞過越獄開發(fā)的 朋友一定都有這種體會:當(dāng)我掌握了class-dump后,這種Objective-C級別的工具只是在墻上開了一扇窗——我能看見更廣闊的世界,但窗戶 太小,我身子出不去,用一句土話說,就是“撐死眼睛餓死屌”,還不如“兩耳不聞窗外事,一心只上AppStore”呢。當(dāng)時那種眼高手低,不上不下的狀態(tài) 非常難受,偶爾被人叫上兩句“大神”,聽得我如芒在背。當(dāng)我向DHowett或者rpetrich提問時的答案越來越多地變成“reverse it yourself”時,我下定決心,計劃通過半年苦行僧式的修煉,把自己的技術(shù)層次提高到匯編級別,在墻上開一扇門,徹底看看外面的世界。
看到這里,有些朋友可能會覺得,修煉是該修煉,但 “苦行僧式”,是不是有點過了?如果你對西方文化有所了解,就會知道,歐洲真正的貴族從小吃過的苦比普通人家老百姓小孩吃過的苦還要多,人家是正兒八經(jīng)的 “吃得苦中苦,方為人上人”,既發(fā)達又接地氣,牛了比了。咱們模仿不了貴族現(xiàn)在的生活,就模仿模仿人家成為貴族前的生活吧 :)
一頓猛整,我的IDA和GDB就算入門了。配合匯 編手冊,吭哧吭哧地分析上一兩個文件,馬上就鳥槍換炮,云開霧散了。跟DHowett和rpetrich的溝通也從單純的發(fā)問變成了討論,有了一種平起平 坐的趕腳。這個階段我發(fā)布了自己售價最貴(1.99刀)的一款軟件DimInCall,這款軟件的特點是,其工作原理和邏輯如果僅用class-dump 是不可能分析清楚的,必須讀匯編。
到目前為止我已靠DimInCall賺到購買一臺 新款MacBook Pro所需的錢,完成了“跪求大爺用我的軟件”到“別人花錢買我的軟件”的華麗轉(zhuǎn)身。這一點在現(xiàn)在看來很重要——雖然我對技術(shù)的追求非常純粹,但我沒有忘 記在埋頭趕路的時候抬頭看路,嘗試著把自己的技術(shù)同市場需求結(jié)合起來,不是為了技術(shù)而技術(shù)。這一點是我觀察到的很多資深技術(shù)人員步入的誤區(qū),等會我們會重 點提一提。
接下 來,就是航哥邀請我參與《iOS應(yīng)用逆向工程:分析與實戰(zhàn)》的編寫了。寫書的過程本身就是對我苦行僧修煉成果的一個總結(jié)和歸納,書本的完成,于我個人來說 有2個重大收獲:1. 預(yù)期之中,技術(shù)升級后得到鞏固,與class-dumper之間的差距開始出現(xiàn)質(zhì)變;2. 意料之外,我對互聯(lián)網(wǎng)“產(chǎn)品”的概念有了切身認(rèn)識,影響了我的職業(yè)規(guī)劃。
當(dāng)我經(jīng)過近一年的高強度訓(xùn)練后,技術(shù)步入最細(xì)粒度的匯編級別,被DHowett冠以“越獄開發(fā)界中國首席代表”殊榮,得到越來越多國際同行的認(rèn)可。而這一點,也為我接下來的行動埋下了伏筆,我先賣個關(guān)子,等下再說。
回到我的2個收獲。出書,跟互聯(lián)網(wǎng)“產(chǎn)品”,有啥 關(guān)系?在一般人看來,出書是純傳統(tǒng)行業(yè)。傳統(tǒng)商品跟互聯(lián)網(wǎng)“產(chǎn)品”,有毛關(guān)系!我曾經(jīng)也這么認(rèn)為,但是書出來后,我的觀念發(fā)生了變化。傳統(tǒng)商品與互聯(lián)網(wǎng)產(chǎn) 品的最大不同,在于傳統(tǒng)商品在出售之前,賣方要想方設(shè)法向買方推銷;出售之后,賣方迅速對買方愛答不理——5年前,我們買臺電視交完錢,賣方就把該賺的錢 都賺了,之后提供的所有售后服務(wù)都是賠錢,買方不會享受到太好的售后服務(wù)。去下個館子,點完菜就在那坐著干等上菜,服務(wù)員只在上菜時出現(xiàn),其他時間一個人 管5桌,忙得要死,顧客只有以“再不上菜就退掉這個菜”為威脅才能成功召喚服務(wù)員,讓人家?guī)椭叽卟恕S媒裉煲苿踊ヂ?lián)網(wǎng)的話說,這叫“用戶體驗不好”。
《iOS應(yīng)用逆向工程:分析與實戰(zhàn)》雖然是一本紙 質(zhì)書,看似是傳統(tǒng)商品,其實不然。這本書是講技術(shù)的,我4年的總結(jié)揉吧揉吧形成薄薄一本書,如果你光花上一周時間看上200多頁書就能把我4年的精華給學(xué) 走,那我也太失敗了。讀者在閱讀完本書,并親身實踐的過程中,一定會碰到大量的問題,嚴(yán)格來講,這些問題都是因這本書而起的,作為作者,我該不該負(fù)責(zé)解決 這些問題呢?按照傳統(tǒng)思維,我是可以撒手不管的,反正書已經(jīng)賣出去了,讓讀者自個兒糾結(jié)去吧。但是大家還記得我在初學(xué)階段經(jīng)歷的“撐死眼睛餓死屌”狀態(tài) 嗎?我是脫離這個狀態(tài)了,卻把一大批對這個方向感興趣的朋友給帶入這個狀態(tài),我一個人開溜了,這是大丈夫該做的事兒嗎?
所以就有了QQ群、微博和論壇,三種不同交流形式 共享一個目標(biāo),就是讓大家有一個溝通的地方。我每天都在這三種平臺上投入大量精力,基本上是有求必應(yīng),有問必答,看著它們仨從零開始,逐漸成為了iOS逆 向工程方向的領(lǐng)頭羊。這種模式,與傳統(tǒng)商品已經(jīng)不同了——與其說是我在賣書,不如說我是在搭建一個以iOS逆向工程為話題的交流平臺,書、QQ群、論壇和 微博都是這個平臺的一部分,我提供的就是從入門到精通這整個學(xué)習(xí)過程的技術(shù)支持。這種性質(zhì)的服務(wù),就是互聯(lián)網(wǎng)行業(yè)常說的“產(chǎn)品”,而不再是傳統(tǒng)的“商 品”。
有意思的是,我一開始并不是沖著做產(chǎn)品出書的,而 是出書倒逼著我把它打造成了一個產(chǎn)品,這種親身經(jīng)歷在我腦海里塑造的產(chǎn)品觀,絕不是刷微博看兩篇所謂的產(chǎn)品文,玩幾個概念就能心領(lǐng)神會的。要真有這么簡 單,“產(chǎn)品經(jīng)理”這個名詞的含義就跟“仁波切”和“平面模特”差不多了 :)
既然是產(chǎn)品,就要迭代和運營;迭代和運營,說白了 就是不斷改進框架和內(nèi)容嘛,整得那么玄乎干嘛。有了QQ群、微博和論壇的三管齊下,讀者和作者的溝通變得前所未有地順暢。大家的問題,需求有了傳播渠道, 在每天與大家的交流中,我也能潛移默化地了解到《iOS應(yīng)用逆向工程:分析與實戰(zhàn)》存在的問題,比如術(shù)多道少,不支持iOS 8等等,給產(chǎn)品的改進提供了明確的方向。一方面,我會吸收教訓(xùn),改進書的內(nèi)容,讓它的邏輯性更強,內(nèi)容更豐富更易讀。海納百川之后的包容不是一般的小江小 湖能夠比擬的,改進之后的書中內(nèi)容對關(guān)鍵問題的重點解釋如此切中要害,直擊問題本質(zhì),連國外頂級高手看到后都贊不絕口,大呼過癮。另一方面,我會在親手搭 建的平臺上盡量解決各種問題,在這個過程中,QQ群因為留不住內(nèi)容,所以變成了大家工作生活之余插科打諢的場所,在這里你能跟大家聊聊天,扯扯淡;微博因 為字?jǐn)?shù)有限,變成了論壇的公告牌,推薦一些有價值的好帖;論壇變成了一個相對純粹的技術(shù)交流場合,我們獨有的“干貨分享區(qū)”已經(jīng)匯集了眾多原創(chuàng)獨家精華 帖,為iOS從業(yè)人員提供了寶貴的參考資料。
從這些平臺收到的正面反饋來看,對這個產(chǎn)品的改進 大方向是正確的,這個產(chǎn)品正變得越來越好——因為前面提到技術(shù)提升而得到國際同行的認(rèn)可,所以《iOS 8應(yīng)用逆向工程》英文版將由美國CRC Press在全球出版發(fā)行,論壇也即將支持雙語,讓中國人能在自己的主場跟國際同行切磋交流,我的產(chǎn)品從此走出國門,邁向國際。在互聯(lián)網(wǎng)行業(yè),把國外的東 西引進中國的人挺多的,但把中國文化輸出到國外的人太少了,作為其中之一,我很欣慰。我正在親手創(chuàng)造一件能夠載入iOS發(fā)展史冊的事,讓“越獄開發(fā)界中國 首席代表”的玩笑實至名歸,作為中國人的自豪感不禁油然而生。雖然這些服務(wù)都是免費的(書也不貴),但誰也不能否認(rèn)我打造了一個優(yōu)秀的互聯(lián)網(wǎng)產(chǎn)品。
如果這能稱之為一個小小的里程碑,那么它與我開發(fā) SMSNinja,寫書,跟大家密切的溝通交流是分不開的,而這些都是技術(shù)以外的——至此,雖然我仍癡迷于技術(shù),但心里有個感覺越來越明顯:沒有技術(shù)是萬 萬不能的,但技術(shù)不是萬能的。這個感覺看似把技術(shù)拉下了神壇,大逆不道,實則不然。良好的產(chǎn)品需要精良的技術(shù)做支撐,同時配合各方面因素共同努力,才能完 美亮相,技術(shù)的價值才能體現(xiàn)。別看這就是簡單一句話,但在我的觀察中,絕大多數(shù)技術(shù)人員對此無感,“萬般皆下品,唯有技術(shù)高”,結(jié)果把自己限制在了技術(shù)的 單行道上,進退兩難,非常被動。接下來,我就進一步談?wù)劙V迷于技術(shù)的我是如何“破”掉身上的技術(shù)枷鎖,輕裝進入全新領(lǐng)域的。
書也出了,平臺也搞了,在這個階段,我的技術(shù)層次 可以這么描述:userland級別的逆向工程,基本不存在因為難,而搞不定的東西,一般來說只是時間問題。App開發(fā)我不是太熟練,但以我對iOS的理 解,花上兩個月的時間了解熟悉一下,應(yīng)該也沒問題。kernel級別的逆向工程,到頂也就是越獄了,曾經(jīng)是我的終極目標(biāo),如果App開發(fā)是 level1,userland逆向工程是level2,kernel逆向工程是level3,我就是處在2,奔3的路上,同我的年齡一樣。
把越獄作為終極目標(biāo),是一個IT技術(shù)男/女的再正 常不過的想法,這也是許多有追求的IT技術(shù)男/女的共同目標(biāo),就是把技術(shù)搞得登峰造極。但是我這個觀念在今年打造產(chǎn)品之后,產(chǎn)生了微妙的變化。搞IT技術(shù) 的,一大特點是宅,因為只有跟電腦打交道多了,技術(shù)才上的去,所以宅是沒法避免的。但產(chǎn)品逼著我把注意力從技術(shù)上移開:我的時間是有限的,要維護論壇,微 博,QQ群,還要準(zhǔn)備書的升級版,勢必花在技術(shù)上的時間就少了,這誤打誤撞地逼我自己在埋頭趕路的同時頻繁地抬頭看路,改變就一點點發(fā)生了。
因為我從剛研究iOS開始,就在跟老外打交道,所 以在從lv2往lv3過渡的過程中,會經(jīng)常性地請教國外大牛關(guān)于kernel層的一些知識,但iOSkernel的資料少之又少,研究起來非常吃力。直到 有一天,有一個大牛,叫Sam Marshall,這哥們正在跟別人一起重寫《Mac OS X Internals: A Systems Approach》,實力非常強。他問我,你干嘛要研究越獄?
這個問題其實我早就想過,但為了給出一個確切的答 案,當(dāng)時我又好好想了一下,我為啥要研究越獄呢?得出一個結(jié)論,就是我對越獄感興趣,想具備挖漏洞和exploit的能力,靠這個能力,應(yīng)該可以取得不錯 的經(jīng)濟收入,和行業(yè)地位,就像紅雪、綠毒、evad3rs(那時盤古、太極還沒出來)一樣。也就是在做感興趣事情的同時,獲得一些物質(zhì)和精神上的回報,這 就是我研究越獄的原動力。然后他就說了,別看現(xiàn)在參與越獄的只有什么雪,什么毒的,實際上,安全圈子里具備越獄能力的人很多,這些已經(jīng)具備越獄能力的人為 什么不去越獄呢,主要是因為1. 不感興趣;2. 找漏洞和exploit比較耗時間;3. 找漏洞和exploit要靠運氣。尤其是第2點,從我現(xiàn)在所處的lv2到lv3,這個學(xué)習(xí)階段,起碼要3~5年時間,學(xué)成后,還不一定能找到 exploitable的漏洞,這又要投入大量精力,還要看運氣。如果我的目標(biāo)僅僅是“在做感興趣事情的同時,獲得一些物質(zhì)和精神上的回報”,越獄并不一 定是我現(xiàn)階段的最優(yōu)選擇。
也就是說,仔細(xì)思考一下,其實我的目標(biāo)并不僅僅是 越獄本身,還包括越獄帶來的那些東西。但在長期的技術(shù)鉆研中,我有一點迷失了,鉆了牛角尖,把途徑和目標(biāo)搞混了,我以為越獄是我的目標(biāo),其實不是,越獄只 是我實現(xiàn)目標(biāo)的途徑之一。注意,這個概念上的混淆,是很多很多技術(shù)人員正在犯的錯,就好比在大航海中為了加快船速,在桅桿上負(fù)責(zé)調(diào)整方向的哥們下來跟大伙 一起劃槳,結(jié)果船偏離了正常航道,最后撞了個稀巴爛還找不到原因,加速自己的滅亡,讓人十分痛心。
因為這個哥們的實力遠(yuǎn)在我之上,所以他說的東西不 是空穴來風(fēng),應(yīng)該有很大一部分是來自于自己的經(jīng)驗,有參考價值。然后我就想,360起步時,國內(nèi)的江民、瑞星、金山,技術(shù)儲備應(yīng)該都比360強,但為什么 現(xiàn)在做安全,幾乎都做不過360了呢?這說明技術(shù)或許沒有我想象的那么重要。這時,我曾經(jīng)的唯技術(shù)論觀點徹底破產(chǎn),我開始重新審視自己的職業(yè)規(guī)劃:我的目 標(biāo)是“在做感興趣事情的同時,獲得一些物質(zhì)和精神上的回報”。因為我感興趣的東西并不僅僅是越獄,而且我的技術(shù)已經(jīng)比絕大多數(shù)iOS從業(yè)者強了,足夠用 了,那么我是不是可以稍微調(diào)轉(zhuǎn)一點方向,把現(xiàn)在自己的技術(shù)充分利用上,結(jié)合一些其他的東西,來達到我的目標(biāo)呢?
如果不越獄,還有什么能幫助我實現(xiàn)目標(biāo)呢?我是程 序員,天天寫程序;同時我也在做著不賺錢,但我認(rèn)為夠牛比的互聯(lián)網(wǎng)產(chǎn)品,因此我感覺自己能從技術(shù)和產(chǎn)品兩個角度出發(fā)去多維地考慮問題,具備了一些跨界的思 想。我今年28,雖然現(xiàn)在沒什么錢,但從不覺得自己是屌絲,我的時間和精力就是珍貴的財富。越獄要求我的技術(shù)產(chǎn)生質(zhì)變,而這個階段,把大量的時間投入在技 術(shù)的質(zhì)變上,性價比有點低。對于我來說,什么是性價比相對高的事情呢?我對技術(shù)感興趣,本質(zhì)上是對技術(shù)所呈現(xiàn)出來的東西感興趣,用技術(shù)做出來的東西得到大 家的認(rèn)可,我就高興。這里的“東西”,本質(zhì)就是“產(chǎn)品”,只要這個產(chǎn)品能給大家的生活學(xué)習(xí)工作帶來一定程度的便利,體現(xiàn)出了價值,技術(shù)就有了用武之地,無 形的東西化為有形,就有了意義,而這也是我對技術(shù)感興趣的根本原因。
想到這一點之后,我就開始重點考慮“產(chǎn)品”這個概 念。出書以來,我認(rèn)識了一些以App為產(chǎn)品,做移動互聯(lián)網(wǎng)創(chuàng)業(yè)的朋友,他們有的是純粹的為錢,去投機做一個產(chǎn)品,忽悠了投資人的錢,撈一把就撤,無所謂對 錯,我不愿效仿;而有些人,雖然本身不是從事IT行業(yè)的,但抱有“只要這個產(chǎn)品能給大家的生活學(xué)習(xí)工作帶來一定程度的便利,體現(xiàn)出了價值,技術(shù)就有了用武 之地,無形的東西化為有形,就有了意義”的想法。他們本身不懂技術(shù),可能只有抽象的概念;技術(shù)人員不一定都有好的靈感,但具備制作能力。如果兩者結(jié)合,就 可能做出好的產(chǎn)品,這個產(chǎn)品不一定是App,可以是網(wǎng)站,可以是硬件,甚至可以是一個PC上的exe,只要確實體現(xiàn)出了價值,它就是一個好的產(chǎn)品。我認(rèn)識 2個比較成功的ceo(一個來自nice一個來自米哈游),他們都是做好一個App產(chǎn)品,現(xiàn)在公司估值都好幾十億,我覺得他們的共同點就是抓住了“產(chǎn)品” 的本質(zhì),與我的產(chǎn)品在本質(zhì)上是一樣的,只是現(xiàn)在的資本市場更加認(rèn)同他們的產(chǎn)品,所以他們賺到了錢,在市場上占得一席之地。
到這里,思路就很清晰了。既然我具備了制作優(yōu)秀產(chǎn) 品的能力,何不調(diào)整自己的行進方向,做一個資本市場認(rèn)可的產(chǎn)品,達到我的目標(biāo)呢?既然我對iOS這么熟悉,做個App不是正中下懷?因此2015年,我要 在繼續(xù)做好自己不賺錢產(chǎn)品的同時,尋求跨界,與不懂技術(shù)但有理想的人合作,爭取做出一個賺錢的產(chǎn)品。
“在做感興趣事情的同時,獲得一些物質(zhì)和精神上的回報”。感興趣的事情和精神上的回報,我已經(jīng)在iOS逆向工程這個平臺上實現(xiàn)了,現(xiàn)在要在新的產(chǎn)品中進一 步考慮物質(zhì)上的回報,難嗎?很難!但因為我的眼光高,所以對合作伙伴的要求高;同時我的手不低,那么做出來的東西就是精品。考慮到我已擁有深厚的技術(shù)積累 和接地氣的產(chǎn)品觀,我認(rèn)為這個目標(biāo)并非遙不可及,而且我已經(jīng)在考察接觸一些非常靠譜的項目和人了,我希望自己能在新的一年里擁有新的收獲,告訴自己這是真 的,這不是夢~
以上就是我這個奔三iOS開發(fā)工程師的職業(yè)規(guī)劃從 模糊到清晰的過程,僅供參考。我覺得像我這種奉行技術(shù)至上的朋友會很多,但能像我這樣在技術(shù)積累到一定程度后把技術(shù)枷鎖去掉,換個角度看問題的朋友就很少 了。改革是疼痛的,前景是光明的,祝福每一位工程師都能在不斷求索中清楚地找到自己的目標(biāo),然后努力實現(xiàn)它。
原文鏈接:http://www.open-open.com/news/view/253dc9