對于 iOS 開發基于經驗的一些總結與規劃

ozh5486 6年前發布 | 22K 次閱讀 iOS開發 移動開發

又一年接近了尾聲,一年下來感覺自己還是很菜,突然想起之前和朋友聊天,朋友本身技術實力極強,業界認可度也較高。但是還是認為自己很菜。我認為這很大一部分是對于知識的敬畏心,作為程序員就需要不斷的涉獵新知識,學習。而每次涉獵都發現自己的渺小… 其實完全不必畏懼知識的多,我一直認為菜可以接受,但每過一段時間回頭反思,發現自己原地踏步完全不能接受…

關于成長

回首發現自己步入程序員的行業也有幾年的光陰,記得一開始的時候,我也和很多初學者一樣,四處詢問怎么才能實現高速的成長,想窺探大牛們的成長秘籍…雖然現在的自己依然有著超級多的不足,但是比起當初可笑的自己,也可以無愧的說沒有辜負這幾年的光陰。

曾經我一直認為我要是能進一個足夠大的團隊,和一群牛人一起工作,不會了就去問,肯定成長的超級快。年初的時候,自己足夠幸運,到了一個還不錯的團隊,團隊里的小伙伴也很給力。這一年我發現自己也確實得到了長足的進步,學會了 Python ,能用來做一些有趣的事,開始嘗試寫一寫前端。逐步涉獵更多的知識…

但是我發現整個過程卻和我當初的設想相去甚遠…當初以為進了大的團隊,就有人教你帶你,但是事實上并非如此,在大公司業務需求可能會變得很復雜,每個人的工作量變得極大.面對 KPI 等壓力,沒有人可以很輕松的怡然面對… 也沒有人有時間去在很小的點上錙銖必較的對你一點一點的提攜…所以,那些覺得進了大廠,就一定能成長的小伙伴,真的大廠極大的壓力并不一定是成長最好的土壤,但是不可否認的一點是高壓力和高負荷的工作,能提升工作效率,能從事更多深入的工作,深入才是成長的原動力。當然感覺自己這一年來成長較快的另一個原因是從身邊的隊友身上學到的改變了一些解決問題的思路和方式,以及提升效率的方式。

而這一切進大廠并不是必然條件,對于個人的高要求和好奇心一樣可以達到一樣的效果。

說了上邊一堆的廢話可能對于許多人而言,并沒有什么很大的用處,其實細化到日常,不過是不要忽視很多細節,保持技術上的好奇心,多實踐也許就是技術人最好的成長方式。比如我想每個 iOSer 肯定都知道 Runloop 的概念,網上講解一大堆,每個人面試的時候都要為此好好準備一番,但是很少有人去真的思考這個很多操作系統上都有的機制到底是用來作什么的,原理到底是什么…其實基于原理的思考,再看技術上實現細節,也許真的會事倍功半…當然下邊還會說這件事…

還有很多人說,我在研究什么什么高深的技術,但是一問到技術上的細節,就會說那一部分基于 SDK 的并不了解… 對于這樣的問題,記得以前做直播接入的騰訊云SDK,那個時候就敢說自己做過直播,現在想來自己真的蠻好笑的…

此外,現在網上鋪天蓋地的一萬小時理論.但是我認為這樣的理論會讓很多的人走向一個誤區.以為我一直努力一直付出就一定可以成長,我不否認這樣成長的事實,但是如果一萬個小時的努力只是去做完全相似的事,成長真的有限…我認為同等時間的基礎上生長速度卻取決于涉及的深度,反思總結的能力以及眼界,知識的廣度等多方面的因素綜合的結果.遙想高中時代,同樣的付出結果大為不同,其實道理大致相同。

當然我上邊的話,同樣會給一些人造成誤區。因為只要努力的去學習一些難的知識,往深了看就行,其實我過往的經驗是,我深入看一個知識的時候,經常過一段時間沒有技術場景的情況下,就基本上忘記了,記下的都是皮毛,但是我發現經常再看一些基礎知識的時候能夠聯想到一起去,再回頭去看那些技術,反而有一種豁然開朗的感覺,所以在深入的時候基礎的重要性不言而喻。但是單看基礎一樣有此問題,所以孰輕孰重,完全在于個人實踐。其實我認為最好的方式是對于一個技術方向從淺到深的持續研究。這也就是很多優秀的技術博客,我們看了沒多久就忘記的原因。因為我們總是看到一個技術面,缺少整體和深入的理解。

這里也可以拿自己作為例子,因為各種各樣的原因,最近有換工作的嘗試,找身邊的朋友內推了滴滴。面試的過程中我的簡歷中寫了最近自己做的一些包大小優化相關的工作,我們做的程度大概到 Mach-O 的級別,其實還有很多不足,滴滴技術上的的老大就問我有沒有從編譯原理上做一些考慮。其實知道 clang 的詞法解析,語法解析,語義解析生成語法樹的過程,但是真的不知道技術上的細節…其實這里就涉及到了編譯原理的基礎和編譯原理上的深入…其實就是想借此說一下基礎和深入的區別到底是什么以及基礎對于深入的重要性。雖然有幸耗時兩個小時過了據說最難的 iOS 老大的技術面,但是還來不及興奮,就因為手寫不出 DFS 等比較基礎算法被淘汰…說實話對于這樣的失敗方式心底十分的不甘心也很難接受,可終究是因為自己菜,怨不得任何人,至此更明白基礎的重要性。

可能有人會問,對于客戶端開發,算法真的有那么重要么。我想說對于部分人而言重要,算法可以是優化函數執行時間的思路和方向。而對于部分人而言,確實可有可無。其實深入的時候,很多優化相關的工作其實和算法真的息息相關。可對于實現需求本身,可能有人會覺得意義不大…所以看法完全因人而異,算法之于我,我認為就是自己不足的短板,最近可能會用很長的一段時間,花時間去補相關的知識。再多余的說句可能會讓人覺得裝逼的話,不過我覺得無所謂別人怎么看。成長絕不是出于功利目的,所有只是功利目的的成長一定伴隨很多潛在的問題。

關于未來的思考

面完滴滴之后,我完全放棄了換工作的想法。其實不是找不到,自大的認為找到一家比起當前薪資有一點漲薪幅度的公司應該不難,但是從成長的角度考慮,這樣的選擇無疑是一種失敗。

因為就換工作這件事而言,本身就是一件成本極高的事情。程序員要在離職前完成很多交接的工作,下一家公司還要熟悉新的開發風格規范等等…這一段時間其實我認為做的工作就相對低效。而且沒想清楚自己為什么要換工作,盲目的找到了下一份工作,最后的結果大部分都是步入持續換工作的死循環。所以換工作一定要去想,這份工作為什么想換,下一份一定不會出現相同的問題么?怎么在下一份工作中解決相似的問題。如果有解決方案,那就在當下去實踐沒有什么大不了。

此外,頻繁的換工作其實會對自己的職業生涯產生很大的影響。前段時間練車,同車的人閑聊中得知是 360 的前端,技術上聊天中感覺很強(當然我前端很菜,但是我認為很多知識有共通性)從其口中得知,因為回老家了兩年,兩年間兩份工作,回到北京面阿里的時候,過了所有的技術面,但是因為頻繁的換工作,被 HR 拒之門外…我認為這樣真的太可惜…可是不穩定,對于一個企業而言從成本角度考慮也完全能夠理解。現在京東對于穩定性的要求,了解的人自然都懂,當然對于職業生涯沒有這樣量級要求的小伙伴也完全當我沒說….所以,如果對于下一份工作沒做好多年穩定下來的準備,希望最好不要換。

當然我說到阿里這些公司,并不代表我的意思一定要去頂級的互聯網公司,此外做大廠的螺絲釘也不一定是最好的選擇。其實大廠之外,依然有很多好的公司可以給我們比大廠更好的成長,但是這就需要我們發現的眼光了。

其實這里可能就會涉及到最近看書中寫道的一些預見性。有幸去一個有足夠成長空間的公司,公司業務量級的不斷擴大,陪伴一個企業成長,不斷地去承擔更大的壓力和責任,我想這樣的成長速度和成就感才一定是很多人最想要的。

說到預見性,舉個小例子。就說我為什么選擇滴滴面試,想進滴滴吧,因為我看好出行領域的未來,看好的原因是新能源汽車現在已經成為了未來的大勢所趨,而無人駕駛汽車的量產我想也并不會太遠了。此外隨著技術上的深入,我覺得最多十年的時間,街頭上可能會出現很多無人駕駛的新能源汽車而且成本不會很高。可能有人就說我說的是偽命題,成本低了那么買的人多了,對于共享出行并沒有什么優勢。其實不然,因為不會變的是城市空間。所以將來城市出行可能會因為汽車太多而變得更加擁堵。而滴滴基于多年的大數據和現在的自研地圖一定有能力去優化出行路徑的預判和選擇,這就是很多人忽略的壁壘。而且在省去了其中人力難于管理,更容易提供統一化的服務之后,成本可能會更被大眾所接受。那時共享出行可能會真的改變人們的出行方式,那個時代也許出租車真的會被淘汰。對于將來這樣的預見,是我想去滴滴的原因。

其實上邊不過是預見的太多的例子中的一個,移動時代移動支付的興起,回到幾年前再往后看,其實這其中的道理也就沒那么難懂了…當然,對于預見性,也有很多偽命題,比如多年前的共享,其實不是想法不好只是當時沒有移動互聯網的土壤供其成長,所以太早的預見性也可能失敗。所以對于預見性,更多的是仁者見仁,智者見智。但是只要是基于足夠思考的踐行我想都不會太差。

如果只是為了換工作而換工作,最后可能會走入死循環,我想這是每一從業者都不想看到發生在自己身上的。

此外對于換工作而言,一定要有對于行業和市場的有足夠清晰的判斷,比如當下一份 double 薪資的初創企業請你去,會如何選擇呢? 前段時間有朋友真的面對這樣的抉擇,當然薪資可能不至于那么夸張,當時我們吃飯說到此事,我就很直的勸他不要去…

因為現在的大市場環境就是不景氣,現在的投資環境并不好,再加上美國近幾年可能會不斷地加息,國內市場雖然沒有直接的加息,但是貸款等變向加息很多人都能感覺得到。這就意味著資金的流動性在將來一段時間一定會變得較差,所以投資人會變得相對謹慎,再加上美國不久將來會降低企業稅,國外的資本在硅谷也就有了更多的選擇。所以這一切對國內的創業環境而言都是打擊,所以我認為明年可能是創業更寒冷的寒冬。會有更多的小企業面對資金不足的問題,這個時候選擇去初創企業那所謂的高薪。確實有很大的風險。一旦失業,再重新起航,這來回之間時間成本因素考量之下,也并不一定值得。在此還想說我沒有任何對于創業者的否定,在這樣的環境下堅定初心的創業者,我相信一定是內心強大的勇士,我心底也充滿了敬畏。也相信在這樣環境下成長起來的企業,一定有很好的前景。只是希望可以讓很多人在換工作的時候有足夠的考量,如果沒有面對這些問題的勇氣的人,也一定不是創業者想找的人。彼此不耽誤,我認為這樣也許再好不過。

其實說了那么多,才發現好像偏離對于未來思考的主題。那么就言歸正傳。既然決定了穩定下來,那就在工作之余,一定要給自己定下成長的方向。除了對于自己影響較大的算法之外,我認為將來的客戶端工程的發展方向都是向著巨型項目的方向進行發展。所以這一過程中,我想有經驗的開發者一定知道效率在這個過程中的重要性,接下來一年我可能會看更專注的去做相關的東西。其實面試滴滴給了我一個很好的出發點,所以第一步就從編譯原理入手吧。

此外,最近在看一本 debug 相關的書,發現 debug 完全可以變得更加高效。但是其中可能會用到 Python 腳本來完成部分工作。這半年越來越發現,對于客戶端開發掌握一門腳本語言的重要性,真的會有很多很多的使用場景的。所以會嘗試使用 Xcode 的實現更高效 lldb 。 總之我認為效率化的方向,都值得深入的去研究。

前段時間有幸的看到了 bestswifter 分享的機器學習在客戶端的使用場景的 ppt ,其實這完全是可以進行嘗試的方向,隨著手機計算和存儲能力的提升。完全有理由相信客戶端能夠完成更多相關的任務,這個方向深入的研究,說不定會是一種趨勢。

此外也給小伙伴提個醒,作為 iOS 開發者,對于蘋果官方的消息,一定要有足夠的預判。比如對于 Hybrid 的開發模式,是不是可以適度的減少相關鉆研的時間。滴滴在做 HTN 我想可能就有對于這方面的考慮吧。再比如蘋果可能會大范圍的下架模板化的項目,對于外包而言將是極重的打擊.所以在外包行業的小伙伴,真的提前要有一定的準備…

總之接下來即將到來的 18 年一定不忘保持初心,在好好工作之余,看足夠的書,完成自己想要做的事,哪怕明年這個時候發現自己更菜了,但是回首此文,能讀到自己的成長,就足夠了。

 

來自:http://www.cocoachina.com/ios/20171226/21656.html

 

 本文由用戶 ozh5486 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!