官术网_书友最值得收藏!

技術總監Sycx的故事

其實我在各種演講里,線下吹牛里面無數次提及過他,講過他的故事,但是沒有任何一次認認真真地詳細講過,所以,今天就講講他的故事吧。

入職

2010年,我剛開始這一次創業的時候,投資剛剛拿到,辦公室還沒租,一切都在草創階段,我收到了一封郵件。大意是,我叫Sycx,我從福建來,是Tiny4Cocoa論壇的用戶(我的論壇OurCoders.com的前身),想在上海找一份iOS的工作,想聽聽我的意見。

這樣的郵件當時我一年怎么也要收到幾百封,我也見過很多年輕人,于是我就答應他了,約在世紀大道附近的一個星巴克。

第一眼見Sycx,我感覺他是一個很靦腆的年輕人,個子不高,穿一件宅T。

我問他為什么要來上海找工作。

他說,他是福建的,本來想找家附近的工作。但是整個福建好像都沒有啥IT公司,找到的唯一有iOS工作機會的公司,還是一家做盜版的,所以,就想找外地的。想了幾個大城市,北京感覺太冷,廣州上海覺得都可以,不過查了下發現上海的漫展比較多,于是想來上海。

我心想這孩子要不要這么中二啊?

我就問他為啥學iOS開發。

他說,他本來買了一個挺貴的Nokia(諾基亞)手機想學塞班開發。然后,逛街的時候被小偷偷走了。

這時候,我已經快笑出聲了,心想這什么笨孩子啊。我問,然后呢。

他說,之前買了一個iPod touch聽歌用的,于是他就想干脆學iOS開發吧,把家里的電腦裝成黑蘋果,就開始自己學。

那你學了多久?

學了半年的樣子。

我其實對用黑蘋果學iOS開發的人有點兒成見,因為我在網上見得太多了,很多人費盡心力想省錢,安裝一個黑蘋果來學iOS開發,學來學去,學成了黑蘋果專家,但是iOS開發呢?根本沒有動手。

然后,我問他什么學歷。

他說,他畢業于××職業技術學院,學的是網絡游戲建模。

我問他為什么學這個專業,他說他的專業有兩個專業方向,另外一個方向是網絡游戲編程,但是老師說,其實學校沒有老師可以教這個方向,所以,才學的建模。

我心說,這上的是什么垃圾學校啊。

然后,我問,大學畢業了你在做啥?

我留校當了半年的機房管理員。

我汗,然后呢?

然后,我去電腦城做技術員做了7天被解雇了。

汗,為啥?

本來是我同學介紹另外一個同學去,然后被他放了鴿子,就問我去不去。我想閑著也是閑著,就去了。

然后呢。

然后待了7天,老板說,你怎么連跟客戶說話都不會,一臺電腦也沒賣出去。我才知道,原來是需要我賣電腦的。我還以為我是負責修電腦的。

然后他無辜一笑。

我快昏倒了,這是什么白癡孩子啊。然后呢?

然后,我在家里窩了半年,覺得要出去找工作,買了一個Nokia想學塞班開發,還丟了。

嗯,我基本上明白了這個孩子的故事了。

簡單點兒說,這就是一個爛大專畢業的孩子,找了兩個不怎么正經的工作,都沒做好,運氣和腦子還不好,生活做事情都吊兒郎當,自學塞班開發都能以丟手機告終。我估計這孩子iOS開發也學得不怎么樣。

我開始在考慮該怎么安慰這個孩子,再勸勉一下,如果不努力一輩子就這樣庸庸碌碌下去了。

然后,我問他,他自學了半年的iOS,有沒有做過自己的App。

這時候他拿出他的iPod touch給我看一個聽歌軟件,界面居然很清爽。現在想想倒也沒有什么特別出奇的部分,但是,清爽、干凈、邏輯清晰,一點兒基礎加自學半年可以到這個水平,確實有點兒驚到我。

但是,一個聽歌軟件在互聯網時代沒有自動下載歌詞總是有點兒遺憾,我就問他為什么沒有做。

他說,這是發布到App Store的版本,他最早做的版本是可以自動下載歌詞的。但是提交到App Store的時候被拒絕,因為提供歌詞會侵犯歌詞作者的版權。所以,最后做了一個“閹割版”上了App Store。

這時候,我突然開始有點兒小激動。就問他,你英語好嗎?怎么提交到App Store上去的呢?

如果你不是做這個專業的,你可能理解不了。那時候iOS開發剛剛興起,大多數人能學會開發已經不錯了,很多人學會了怎么做iOS開發以后,就是學不會怎么提交App Sotre。原因很簡單,提交一個App,需要在蘋果的純英文網站上,做很多步的操作,還要填寫英文的說明等等。像他這樣提交以后被拒絕一次,又重新上傳成功,則更復雜,往往需要用英文跟App Store的審核員對話。

他說,我英語不好,學iOS開發的時候文檔看不懂就查字典,現在文檔看得都差不多了,不需要查字典也可以看了。提交的時候,看到英文單詞不會也是一個一個查字典搞定的。

到了這個時候,我已經基本上確定這個孩子我要定了。

從他的學歷、他之前的經歷來看,我相信大多數靠譜的公司不會要這么一個聽起來這么不靠譜的孩子。但是,從他自學iOS半年的成果來看,我覺得他是一個很有潛力的孩子。

我認為可以自我學習、自我成長的人都是前途不可限量的。

于是,我就跟他說,我覺得按照你的簡歷和你剛才描述的你的從業經歷來看,在上海你可能很難找到不錯的工作。我的公司剛剛開始創業,急需用人,我從你的自學經歷來看,覺得你是一個可造之才。如果你愿意來我的公司工作,我可以給你開稅后××,雖然不多,但是應該是一個不錯的開始。如果你能一直努力,我相信你可以有一個很好的前途。

他擺出一副“好在你要了我,否則我也不知道該怎么去忽悠別人”的表情,爽快地答應了。

于是,我的公司就有了第一個員工,Sycx老師。

成長

公司開張后,我開始給他安排工作,公司當時就我們兩個iOS程序員。一開始,主力是我,我讓他做一些輔助性的工作。做著做著,我發現他做得又快又好,我就開始給他分配更多的工作。然后,我發現他仍舊可以又快又好地做好的時候,我就開始慢慢調整,讓他做項目的主力,我來做輔助性的工作。

又過了一段時間,我發現我連輔助性的工作都不需要做了,他完全變成了公司的主力,我把更多的時間和精力花在了服務器端的工作上。

我覺得他超越了我把他招進來時候的預期。其實我一直覺得自己是一個自學能力很強的人,我也有一些朋友是這樣的人。但是,我不知道我自己開公司的時候能不能招到這樣的人。發現他是這樣的人以后,我就覺得我終于找到了我可以去管理的員工了。

我開始給他一些壓力,一些他當下可能不能很好解決的問題,一點一點地加壓,他一次次都在沒有求助我的前提下把問題解決了。

LBS地圖

有一段時間,我很看好LBS,很想做一個LBS的社交應用。我想把一個人的全部通訊錄里面的地址信息,用Google map(谷歌地圖)反查出經緯度,然后都顯示在地圖上。這個不是很靠譜的需求最早來自我的一個朋友的創意。我確實也有類似的想法,于是就讓他去做。

他做了一天后,就給我做好一個Demo(演示)版本,基本上跟我預期的很像,但是,我的通訊錄里面在上海的人很多,大家在地圖上的圖標都重合在一起,想點任何一個具體的人都點不到。

我說,你去找一個地圖點聚合的算法,把這些具體特別近的人,聚合在一起顯示成一個數字吧。

半天后,他給了我一個新的Demo,很漂亮,顯示效果很好,在他的手機上也很流暢,但是在我的手機上卡得不行。因為我的通訊錄里面大概有五六百人。我就跟他說,你要把這個算法優化下,我要的是同屏顯示5000個人都不卡。你要理解,屏幕不顯示的部分都不應該參與計算,等等。

過了一個晚上以后,他給了我一個新版本,做到了我的要求,同屏顯示5000個人都不卡。

然后,這件事情,我就忘掉了。直到半年后,有一個技術會議,我是出品人,在尋找演講者,實在湊不夠數了,我也希望他鍛煉鍛煉表達能力。我就問他,我們最近做的項目,有沒有技術上比較復雜、比較有意思可以講講的。

他摸了摸頭說,都沒啥可講的。這孩子啥都好,就是表達能力很差,也沒有同理心,在他看來我們做的項目都不是很難。實際上,這個地圖同屏5000個點的聚合算法還是挺有技術含量的。但是他說不出來個所以然,于是我只好在黑板上列了個題目,然后一步一步地問他,之前的速度和后來的速度差了1000倍,是怎么一步一步優化的。他找來了代碼,在我的追問下,一點點回憶。

原來包含了數字計算的精度降低,屏外剪枝,從排序選擇最佳代表點改為隨機選取代表點,動畫提交合并,等等,大概七八項大的優化,這一切都是他一個晚上邊分析邊搞定的。

LBS口袋妖怪

有一段時間,我曾經想嘗試做游戲,當然后來發現由于團隊基因的問題,我們可以寫一個游戲出來,但是美術、策劃、運營方面的事情我們搞不定,所以就放棄了。

我當時設計的游戲是在手機上玩基于地理位置的口袋妖怪。因為我們缺乏設計方面的人才,我讓他去把口袋妖怪的圖片資源和數值扒過來,在開發階段直接用,等到我們有了自己的設計、策劃力量以后再替換過來。

他研究了半天告訴我,網上有口袋妖怪的wiki站點,里面幾乎包括了我們需要的全部數據,我說那太好了,直接用吧。

大概一個星期不到,在iPhone上的口袋妖怪戰斗場面,他就實現出來了。

這個項目最終還是放棄了。不過我還經常在飯局里面把我們做的半成品給朋友看。有一次,我和Sycx還有我的好朋友莫老師吃飯,莫老師問起我們在做什么。我想讓Sycx同學鍛煉下,讓他來介紹,他又開始扭扭捏捏半天,啥也沒說出來。

我就開始講,我們做了一個游戲,準備用口袋妖怪的數據,幸虧網上有個口袋妖怪wiki,有全部口袋妖怪的數據的數據庫,我們把這個數據庫……

這時候,他打斷了我,說沒有數據庫。

我說,沒有數據庫,你怎么導入的?

他說,只有一個wiki,我自己寫了一個爬蟲,把wiki的頁面全部爬了下來,然后生成了一個數據庫。

莫老師說不錯啊,做iOS的小伙子還會做爬蟲。

他說,為了這個項目現學的,很好玩。

我在旁邊倒了一杯冰啤酒,抿了一口,心說,我手下的人靠譜吧,連我都不知道他還做了這么多額外的事情,悄無聲息的。

排版項目

公司后期其實有點兒混亂,因為我一開始瞄準要做的App推薦網站,我們沒有做好。而我們做的其他App大多數也都不賣座,偶爾有幾個反響還不錯的,下載量購買量都微不足道。有一段時間,我很沉淪,不知道該怎么突破。

后來,我在想不管公司如何,我們做點兒純技術的東西,說不定可以拯救公司。那時候,我很看好蘋果做的iBooks author,用它可以輕松做出來在iPad上可以使用的圖文并茂、有多媒體的交互電子書。但是,這個軟件生成的問題是和蘋果的iBooks store綁在一起的,但是因為政策和法律的原因,蘋果的iBooks store根本沒有進入中國。

于是我想了一個辦法,我們能不能自己做一個兼容iBooks author格式的閱讀器,這樣蘋果的iBooks author就等于成了我們的編輯器。

我花了一天的時間去分析iBooks author的文件格式,弄明白了以后,我把Sycx找來,跟他說了我的想法。

嗯,他也不是萬能的。他覺得我犯病了,他說,這東西蘋果不知道用了多少工程師做,咱們肯定做不出來,你最近是不是沒吃藥啊?

我當時沒有理他,第二天我去深圳做關于盜版的演講,在深圳的日子里,我不停地在寫代碼,回到上海我也在寫。三天后,我給他看了我做的一個Demo,把一個iBooks author做的文件解析出來,把一個章節的標題和正文都顯示出來,當然版式格式都是錯的。但是怎么獲得版式、格式的信息我都獲取到了。

給他看了Demo,他受到了某種震撼,然后我給他講了一遍格式和我的思路。我問他懂了嗎,他說懂了。我說,你需要多久看代碼?他說半天吧。

第二天,我問他看懂與否,他說看懂了。我說這個項目你來領導吧,需要我做哪個模塊,你來安排。他說,算了,你代碼太爛了,我自己來寫吧。

從那以后,我們公司的主力代碼里面,我就幾乎沒有參與過了。他確實對得起這句狂話,后來沒讓我麻煩過。

這個項目,我們做得很酷,包括他在內,還有三個程序員一起在做,他領導。我制訂的計劃是完全敏捷和迭代的。項目伊始,這個App就可以執行,一個迭代周期一個迭代周期地增加新的功能。項目開始一個月后,我就用它掙了10多萬。而這個項目真正做完第一期是一年后,可見我們的迭代做得多好。

他做了這個項目的主力和負責人后,徹底解放了我,我在一年多的時間里,就是用這個半成品去掙錢,去融資,去跟全上海的出版社推銷我們的產品。

裁員

然而,雖然我很賣力氣地去談投資,找客戶,公司最終還是遭遇了很大的危機,錢花得差不多了。投資沒有找到,手頭的幾個客戶也不足以支撐公司繼續運營。我可以選擇再強撐兩個月關門,不過我的投資人建議我裁員到最小規模強撐一下。于是我仔細算了算成本,選擇了一個最小的團隊,就是我加上Sycx老師和我們的行政,當時剩下的錢還可以繼續撐不到一年的樣子。

于是公司就在我們三個人的情況下,繼續支撐下去,繼續做產品,直到幾個月后,找到一個新的客戶,找到了新的收入來源,才免于倒閉。到現在我們又開始慢速擴展,又招了些人回來。

iOS轉Android(安卓)項目

去年的時候,客戶需要我們提供一個Android版本。怎么做呢?我們現有產品非常復雜,重新寫一個Android版本出來可能耗時太長。而且,我們的產品非常復雜,仍舊在不斷地迭代和改進之中,真的寫了一個Android版以后,我們就需要同時維護兩個不斷迭代和改進的代碼了,我覺得項目管理難度非常大。

于是我大概自己想了一兩個星期,有一天我就跟他商量。我說,重新做一個Android版本不難,以我們團隊的學習能力,幾天就可以學會Android開發,開發一個Android版本。因為我們之前的經驗積累,也不會太慢,也許3~4個月就可以搞定。但是,問題是我們要同時維護兩個不斷迭代和改進的代碼,我覺得太難了。

他覺得也是。

我說,所以我想到的方案是我們把蘋果的開發環境,Xcode、LLVM、CocoTouch全部都移植到Android上去。這樣的話,我們實際上在業務邏輯上還是一份代碼。雖然也是兩個項目,但是這兩個項目完全垂直,互相不干擾,管理起來就簡單多了。

目前客戶只需要Android版本,可是如果有了這么一套把蘋果開發環境移植到Android的經驗,假設客戶未來需要WP平臺,我們也可以迅速搭建出來一套系統。

他表示認同。

我說我們現在最重要的就是弄清楚大概的邏輯和時間計劃,我初步估計你可以在三個月內,完成底層的移植,這些部分很困難,但是工作量不會很大,大量的事情是反復地調試和解決部署問題。但是這個部分是Block(障礙)型的任務,這部分完成不了,后面的部分根本談不上怎么解決。

如果這個階段搞定了,后面有大量的庫需要我們自己去實現,但是是在Objective-C的基礎上去實現,技術上難度并不高,我們可以很輕松地搞定。

他也表示認同。

然后,我大概介紹了下我的前期調研,有哪些開源庫跟我們要做的事情比較接近。給了他三天的時間,讓他去調查分析,了解下我們需要做的這么一個大工程里面,哪些東西是已經有開源庫可以實現的,哪些東西是我們自己必須實現的。

三天后,他給我講解了最流行的三個類似的開源庫。我們仔細討論了下,然后項目就正式開始了。

他開始了三個月的、移植一個沒有UI的iOS程序到Android的歷程。

在此之前,他沒有玩過Android開發,對Linux底層開發也不是很了解,甚至不了解Makefile這些東西。但是這三個月過后,他已經是跨平臺編譯專家了,對LLVM、GDB等等都爛熟于胸。大概就在三個月整的時候,我們內部做了一個演示,他已經可以做到在Xcode下打開一個完全沒有UI的iOS代碼,用Xcode把它編譯到Android上去,并且用Android內建的GDB看到這個程序的輸出信息。

然后我們就開始移植Cocoa touch庫,大概就在整一年的時候,我們基本完成了設計目標。

結論

Sycx進入我的公司的時候,我就知道他可以成長為一個非常優秀的程序員。但是幾年下來,他達到的高度還是讓我很驚訝。

我很喜歡這個孩子,因為我從他身上可以看到我年輕時候的影子。唯一的區別是,我年輕的時候,沒有遇到像我自己這么厲害的領導。我愿意全力去指導和教育他的樣子,也是從我自身的經歷出發,我知道一個有想法肯努力的年輕人,在合適的教導下,可以釋放出什么樣的能力。

Sycx和我的前妻還有我自己,都是我寫這本書的主要原因,我前妻初中沒畢業,我的技術總監來自一個爛大學,我自己做的第一份工作的主要內容,是在辦公室里,趴在地上幫同事把踢掉的網線接上。

我們三個人的共同點都是我們做自己喜歡的事情、有激情的事情的時候,不需要別人監督,不需要別人指導,樂于自我學習,自我成長。我們雖然不是傳統成功學意義上的成功,但是都做出了一些自己和外人不敢想象的偉業。這就是我認為的成功。

我覺得大多數人的條件跟我們其實差異不大,都有機會獲得自己的成功,問題是能不能走上一條自我學習和成長的路。

主站蜘蛛池模板: 台州市| 绵竹市| 黑水县| 平远县| 方城县| 石狮市| 万宁市| 桂阳县| 昌江| 哈巴河县| 比如县| 凤凰县| 延安市| 兴山县| 高安市| 东丰县| 弥渡县| 辽宁省| 天峨县| 杭锦后旗| 镇巴县| 宁阳县| 浮山县| 兰西县| 龙州县| 寻甸| 西峡县| 凤山县| 稷山县| 宣化县| 林口县| 彭州市| 黄骅市| 舒兰市| 金山区| 桐城市| 水城县| 涟水县| 任丘市| 邯郸市| 琼中|