[iOS 開發] iOS 開發從菜鳥到高手?聽聽他們怎麼說

来源:https://www.cnblogs.com/IOSkf/archive/2020/04/30/12809022.html
-Advertisement-
Play Games

不知不覺,做 iOS 開發也有一年多時間了,算是經歷了從入門到初級的過程,最近也感到些許迷茫,不知道以後的路怎麼走。下周馬上就要加入一家新公司去獨立開發一個項目了,希望接下來這一年能有不錯的收穫,交得出一份拿得出手的成績單。趁這兩天有空,找了些業內前輩們的經驗分享,看看他們怎麼說的,希望自己能靜下心 ...


不知不覺,做 iOS 開發也有一年多時間了,算是經歷了從入門到初級的過程,最近也感到些許迷茫,不知道以後的路怎麼走。下周馬上就要加入一家新公司去獨立開發一個項目了,希望接下來這一年能有不錯的收穫,交得出一份拿得出手的成績單。趁這兩天有空,找了些業內前輩們的經驗分享,看看他們怎麼說的,希望自己能靜下心來,一步一個腳印走下去吧!

1. iOS開發如何快速成長?(葉孤城)

  • 勇於接受挑戰,實現有難度的需求

“不管完成度如何,我在兩個月後東拼西湊都給他弄出來了。”

  • 可以接觸到新知識
  • 鍛煉自學能力
  • 借鑒一些優秀的作品
  • 學習優秀的實現方案/第三方庫
  • 自己摸索,獨立解決問題,學會觸類旁通,舉一反三

  • 多讀源碼

    • 既要“走心”,又要“不求甚解”
    • 要看就看經典的
    • 最好是看和最近的工作相關的
  • **多看國外的 iOS 開髮網站和 blog **

“第一手的開發資料永遠都是英文的,而且以英語為母語的開發者學起新技術來有天然的優勢。”

  • 學無止境

有句話叫技多不壓身,編程本來就是一個更新換代非常快的工作.每年都有新的技術出現,我認為要成為一個出色的程式員只掌握一門語言肯定是不行的。

  • 打好基礎
  • 研究一個自己感興趣的領域
  • 學習一門自己感興趣的語言

學習的圈子特別重要!!

作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼‘博客’,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裡面試題、面試經驗,討論技術, 大家一起交流學習成長!

2. 成長為 iOS 大 V 的秘密(唐巧)

  • 巧哥的成就:
  • 從開始學習 iOS 開發半年後,就開始獨立負責 iOS 端的開發工作。
  • 從 2013 年 1 月創建「iOS 開發」微信公眾帳號,然後每周堅持更新,現在有超過 3 萬 5 千的訂閱量。

  • 從 2013 年底開始撰寫《iOS 開發進階》,2014 年底完成。另外我還寫了一年多 「iOS 開發周報」。

  • 將公司的網路庫,Key-Value 存儲庫開源,GitHub 上 Star 數上千。

  • 堅持寫 iOS 技術博客,現在完成了超過 100 篇原創文章,很多發表在 InfoQ 和 《程式員》雜誌上。

  • 入門:斯坦福的 iOS 開發視頻課程

  • 尋找志同道合的朋友,一起交流、討論、分享

  • 提高

  • 看 WWDC 視頻

  • 做筆記

  • 讀優秀 iOS 博客

  • 寫作

  • 心得

  • 利用好碎片時間

“在我看來,當你做不好某一件事情時,時間通常是最大的藉口。”

  • 提高工作的效率,使用番茄工作法,讓自己能夠在短時間內集中精力做一件事情
  • 寫代碼之前,先在紙上把邏輯寫清楚
  • 平衡好時間和代碼質量
  • 培養習慣

“不止是個人,組織的協作也應該培養習慣。”

  • 設立目標

“把大目標拆分成小的階段性目標這一點很重要,它使得整體的時間安排是適當的,不會剛開始過緊或過松。另一方面,很一次完成小任務的滿足感,可以適當讓我們的大腦產生喜悅,最終使得任務更容易被搞定。”

  • 尋找成就感
  • 適度堅持

“總會有一些事情,你不那麼容易找到目標和成就感。”

3. iOS開發如何提高(唐巧)

  • 閱讀高質量的博客
  • 讀經典書籍
  • 看 WWDC 視頻
  • 看蘋果的官方文檔
  • 看優秀開源項目的代碼
  • 多寫代碼,多思考
  • 多和同行交流
  • 樂於分享

4. 軟體開發中的上帝模式與農民模式(唐巧)

  • 上帝模式的技巧: 寫代碼前,構思好整個應用的架構設計,如何進行類之間的組織和信息的傳遞。

“在軟體開發書籍中,涉及上帝模式的圖書也有很多,例如《設計模式》和《重構》,但是好的架構都是無法脫離實際業務的,所以大多數程式員都無法通過簡單地看書就提高自己的上帝模式的能力,更多的提高方式是工作一段時間,有一些實際體會之後再看書,就能夠理解書中的道理。”

  • 農民模式的技巧

    • 效率第一,保證自己的專註力,番茄工作法
    • 應該儘量採用「寬度優先搜索」的方式來完成任務,而不是「深度優先搜索」的方式
    • 儘量提升自己的代碼輸入效率
  • 提升上帝模式能力

    • 多分析一些優秀的開源軟體的架構
    • 閱讀一些相關的書籍,如《設計模式》,《重構》,《代碼大全》等
    • 重構,結合自身的業務特點,多思考多討論,培養出自己對於架構的一些心得
  • 提升農民模式效率

  • 番茄工作法

  • 時間記錄

  • 平時多學習一些最新的 iOS 開發知識,減少知識盲區

  • 專註於自己的精力是否集中,如果覺得太累,就活動一下或者適當休息,不應該強迫自己 Coding

  • 警惕混搭模式

5. 王巍訪談:關於Swift學習和AppleWatch開發的一些建議(CocoaChina)

  • 先學習 Objective-C 還是 Swift?

“其實不論是 Objective-C 還是 Swift,現在的目的都是寫 iOS 和 OSX 的 app,那麼其實對於絕大多是情況來說,語言本身並不是非常重要,使用語言去和 Cocoa 以及 CocoaTouch 交互才是我們日常開發中最常用到的技能。Cocoa 的編程思想並沒有隨著語言的變化發生什麼大改變,所以還是應該把對於框架的學習放在首位。”

  • 現在用 Objective-C 寫,怎麼為以後學 Swift 做鋪墊呢?

“現在可能在工作中使用 Objective-C 的開發者還是占大多數,我的建議是在使用 Objective-C 的時候,也順便可以“想象”一下如何用 Swift 更好地實現同樣的事情。如果不是特別趕進度的話,甚至可以再用 Swift 真實地實現一遍。因為兩種語言最大的區別就是 Swift 擁有更強的類型檢查和安全性,所以如果能夠特別關註這點的話,之後快速切換到新的語言去就不會有什麼問題。”

  • 對於學習Swift的開發者,入門以後應該如何進一步提高?

可以儘快開始動手實踐開發一些 app。給自己定一個目標,比如花上幾天時間或者一周的時間用 Swift 做一個能上架的簡單 app 之類的。這個 app 不需要有特別複雜的功能,可能就是一個簡單的天氣查詢提醒,或者是展示附近好吃又便宜的餐飲店面。與簡單地寫個 demo 相比,實際做一個真正的 app 對能力的提升所在的層次是完全不同的,後者需要更多的全局考慮和綜合能力。不少問題只有在實踐中才會遇到,才會被解決,而對應的能力也才能被提升。所以入門之後進一步提升的最好的路子就是實踐,然後在實踐中再去學習沒有掌握的剩下的東西。
另外要註意的是,因為現在 Swift 還很新,很多東西並沒有現成的方案或者所謂的最佳實踐。在遇到這樣的情況時,最好詢問下你身邊的資深 iOS 或者 Objective-C 的開發者。因為 Swift 和 Objective-C 其實是共通的,很多經驗是可以參照借鑒的。”

6. 曾憲華訪談:公司與個人參與iOS開源的心得(CocoaChina)

  • 參與開源的感受

“從我自己的體驗來看,參與開源項目對於程式員來講是一種高效、快速學習成長的方法,不僅如此,如果你是一個技術愛好者,參與開源項目你有可能找到自己的興趣、自己的優勢等等,進而從事自己喜歡的工作,那種感覺真的太爽了。”

  • 參與開源提升團隊協作能力

“另外參與開源在提升團隊協作能力上有著比較明顯的作用,一個有用的Issue反饋、有效的交流以及熱情的幫助都會讓我們成長,從而運用到團隊協作中去,那這個收穫可見而知,不但讓你在團隊中突出,還能讓你認識很多大神。”

  • 參與開源可以開闊視野,提升自身能力

“另外對於一些工作繁忙的程式員,平時忙於公司的項目,空餘時間通過側面的形式(參與開源),也是提升自己整體能力一個很不錯的方式。”

  • 參與開源的樂趣

“參與開源的樂趣就是能把自己的優勢或缺陷分享出去,並且會有人欣賞你、糾正你、譴責你。”

  • 行動起來

“一個成功的開源項目,僅有自己一個人往往是不夠的,通過多人合作的模式,把各自優點發揮出來,共同去維護一個有價值的、可持續發展的開源項目,最後得到收穫將遠遠大於付出。”

7.Limboy:自學 iOS 開發的一些經驗(蘑菇街Limboy)

成長之路:基礎->入門->進階->高級

  • 每個階段都要有相應的目標和學習方式、內容
  • 英語
  • 書籍
  • 視頻
  • 練習
  • 博客,網站
  • 優秀源碼
  • 官方文檔,WWDC
  • 工具

“我覺得無論學習什麼,「速成」的心態是最要不得的,這隻會讓自己變得浮躁,一知半解,整個過程也很難讓自己的元學習能力得到提升。慢慢來,攻占一個城後,再去打下一個,這時心態也會平和許多。”

8.Zenny Chen訪談: iOS開發者應該關註Metal(CocoaChina)

  • iOS開發者應該如何規劃自己的職業發展路線?除了iOS之外,是否需要學習其他方面的技術?

“這個問題問得很好。我工作快有10年了。而iOS職業開發也就剛做滿3年,呵呵。其實我覺得如果大家想往技術方向發展,那麼首先要做的還是把基礎打好。把基礎打好之後,能應付各種新的編程語言,各種處理器、各種操作系統平臺。所以我建議大家在業餘時間里把傳統的大學里所學的科目再鞏固好,比如操作系統、數據結構、數理邏輯、電腦體繫結構、彙編語言、C語言、網路通信、資料庫。此外,大家也可以再熟悉一下HTML5相關技術,畢竟iOS所涉及的大多數都是移動互聯網領域,所以有點HTML5知識的話會更好些。如果自己感覺C語言學得還不咋樣可以再鞏固它。C語言就是電腦編程領域里的數學,是所有類C編程語言的鼻祖語言,而且從TIOBE排名上大家也能看到,它目前一直處於第一位。另外,Objective-C完美無縫地相容C語言,就從這點上來說,C語言仍然是十分重要的。

C、Objective-C與Swift的關係是:Swift是對Objective-C的封裝,儘管這封裝得改動很大,以至於你確實看不出它仍然是類C 語言;而Objective-C則是對C語言的封裝,在C語言的基礎上又添加了面向對象以及反射動態特性。所以,學好了C對於iOS開發來說非常有幫助。

上述主要是講iOS職業技術開發者如何能進一步提升技術能力。其實歸根結底,就是把基礎打好,然後可以嘗試去專某一更專業的領域,比如通信領域、3D圖形領域、圖像識別領域等。因為大凡做iOS的基本都是在應用層上搗鼓,應用層老實說做個一年兩年能基本掌握,再繼續下去對技術提升不大。

有些iOS開發者想要提升自己在公司的地位,我覺得很大程度上取決於自己對所在公司的核心業務的瞭解情況。對於中小企業,產品設計人員以及策劃不可能把產品描述得很細,有不少地方需要開發者對設計意圖做思維擴展。如果你對自己公司的企業文化、工作流程、核心業務邏輯都能很好把握的話,就能夠做出超出期望的產品,再加上好好處理人際關係,要提升地位也不會是很困難的事情。

當然,我碰到比較多的還是很多年輕的開發者對未來感到迷茫,不知道今後的路該怎麼走。所以,我認為對於那些開發者自己先把心沉靜下來,然後把基礎打好,然後思考自己今後的技術走向。畢竟,iOS開發在很長一段時間以內都將是熱門的技術崗位。

要想向更高的職位發展,除了技術之外,我認為還要有對產品的把控、甚至市場新動向的嗅覺。既然已經在這個行業了就必須學會如何不斷學習,快速應變市場的新熱 點。目前app開發處於快速發展變化的移動互聯網的中心,開發者有機會做出引領潮流甚至改變世界的作品,這些經歷本身就是寶貴的財富,只要打好基礎,做足 準備,抓住機遇,未來的前途一定是光明的。”

9.我的iOS成長之路-3-iOS開發個人提升(破船之家)

  • 飽覽群書:高質量,英文書籍,博文,WWDC,斯坦福公開課,github,stackoverflow
  • 跟著項目一起成長
  • 與同行交流
  • 做一些分享

10.iOS 高級工程師是怎麼進階的?(知乎)

11.學習的圈子特別重要!!

作為一個開發者,有一個學習的氛圍跟一個交流圈子特別重要,這是一個我的iOS交流群:761407670 進群密碼‘博客’,不管你是小白還是大牛歡迎入駐 ,分享BAT,阿裡面試題、面試經驗,討論技術, 大家一起交流學習成長!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MySQL 2020.4.30-- ...
  • 【目錄】 SQL SQL語句,以 ;號結束單個指令 cmd 賦值代碼指令後,在cmd 里,只需在輸入位置右擊滑鼠即可粘貼代碼 ...
  • 實現步驟如下 點擊文件頂部導航條文件 > 新建虛擬機 > 選擇典型,當然你也可以選擇自定義,個人覺得典型好點 選擇銷後安裝鏡像 解這選擇Linux 下麵選擇CentOS64 位 自定義虛擬機名稱 和選擇安裝路徑 然後選擇預設 完成就好了 選擇鏡像 選擇鏡像路徑點擊確認即可 接著開啟虛擬機,記得回車 ...
  • 什麼時候用SQLite? SQLiteDatabase資料庫管理類。 SQLiteOpenHelper資料庫幫助器。 資料庫操作的工具類:在這個類中,封裝保證資料庫安全的必要方法,包括獲取單例對象、打開資料庫連接、關閉資料庫連接,並且封裝對錶記錄進行增加、刪除、修改、查詢的操作方法。 ...
  • 最近看了洋佬的公眾號,談到深色模式,於是自己在kotlin上面實現了一下,下麵是效果圖 安卓10叫這個為Dark theme,切換為深色的時候可以減少手機功耗,在暗的環境里更容易使用 1.繼承DayNight主題 2.在res下麵新建values-night文件,然後把深色的資源放到裡面 drawa ...
  • 解決方法就是在AppDelegate.h中按照以前的方法添加一個UIWindow *window的屬性即可,因為iOS13以下根本沒有UIScene這一層 在AppDelegate.h中少了@property (strong, nonatomic) UIWindow * window; ...
  • 前言 本文是給想進入“BAT”等企業的開發朋友們提供思路的,內容全部來自於真實經歷。 關於我(化名) 大家好,我是小白(化名),一名 iOS 開發工程師。 有些人在畢業的時候就能順利進入“BAT”、“TMD”、“FLAG”,但是更多的人並沒有這個機會,比如,最典型的——我。 努力就能改變命運。這是真 ...
  • 微信逆向時,想要使用runtime的方法交換去HOOK微信的登陸方法onNext,發現由於找不到方法而崩潰 解決方法如下: 1.添加方法 2.方法替換(class_replaceMethod) 使用方法替換的方式去解決的話有一個問題,就是如果想要HOOK的原來的類裡面沒有這個onNext方法的話,r ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...