Trong bài viết này, tôi muốn hướng dẫn bạn những điều tôi nghĩ cần để trở thành một nhà phát triển iOS vào năm 2021. Tôi nhắm mục tiêu này thẳng vào hai nhóm người: những người mới bắt đầu hoàn toàn với Swift - những người chưa từng xây dựng bất kỳ thứ gì cho iOS trước đây - và những người mới bắt đầu sai, là những người có thể đã cố gắng học Swift trước đây nhưng chưa bao giờ thực sự đạt được mục tiêu kiếm được việc làm toàn thời gian.

Bất kể bạn đang ở cấp độ nào, mục tiêu ở đây đều giống nhau: đưa bạn vào đúng vị trí để ứng tuyển vào vai trò junior iOS developer tại một công ty.

Chúng tôi sẽ xem xét các kỹ năng bạn nên học, các khóa học bạn có thể tham gia, cách kết nối với cộng đồng, những sai lầm phổ biến mà mọi người thường mắc phải, v.v. và tuyệt vời nhất là mọi thứ tôi sẽ nói đến sẽ hoàn toàn miễn phí vì vậy bạn sẽ không cần một xu nào để làm theo.

Nghiêm túc mà nói, có quá nhiều người nghĩ rằng tiêu một tấn tiền là con đường nhanh chóng để đạt được công việc mơ ước của họ, trong khi điều thực sự quan trọng nhất là quyết tâm và ý chí. 

Có 7 phần trong bài viết này:

  • Những kỹ năng cốt lõi bạn nhất thiết phải biết để xin việc.
  • Các kỹ năng mở rộng rất hay có - những kỹ năng sẽ giúp bạn khác biệt, nếu bạn có thời gian để học chúng
  • Những sai lầm phổ biến mọi người mắc phải khi họ đang cố gắng học hỏi.
  • Các tài nguyên bạn có thể sử dụng để học Swift hoàn toàn miễn phí.
  • Cách bạn có thể kết nối với cộng đồng phát triển iOS.
  • Ý tưởng về việc mất bao lâu để đạt được mục tiêu của bạn.
  • Chuẩn bị nộp đơn cho công việc đầu tiên của bạn

Những kỹ năng cốt lõi bạn cần để trở thành một nhà phát triển iOS là gì?

Bộ kỹ năng tối thiểu tuyệt đối bạn cần để có được công việc trong lĩnh vực phát triển iOS là gì? Tôi nghĩ tổng cộng có năm điều:

  1. Swift
  2. SwiftUI
  3. Working with data
  4. Networking
  5. Version control

 Và danh sách đó là siêu ngắn, vì một số lý do:

  • Bạn càng học nhiều, bạn càng nhận ra rằng còn phải học, vì vậy bạn rất dễ dành quá nhiều thời gian học tập và thực hành đến mức đánh mất mục tiêu thực tế - bạn muốn kiếm một công việc với tư cách là nhà phát triển iOS chứ không phải chỉ ngồi học công cụ mới.
  • Gần như chắc chắn bạn sẽ tham gia vào một nhóm đã có sẵn ứng dụng mà họ muốn bạn giúp phát triển, vì vậy trừ khi bạn cực kỳ may mắn, họ sẽ cần phải dạy cho bạn toàn bộ nội dung - nếu bạn cố gắng và nhồi nhét cả đống về các chủ đề bổ sung trước đó, rất có thể bạn đang lãng phí thời gian của mình.
  • Hai trong số năm thứ đó thực sự lớn và thực sự phức tạp, và bạn có thể dành hàng tháng trời chỉ để cố gắng quấn lấy chúng mà không cần mạo hiểm ở bất kỳ nơi nào khác.
  • Nhưng quan trọng nhất, nếu bạn làm đúng năm điều đó, bạn có thể xây dựng một loạt các ứng dụng. Chắc chắn, mã của bạn sẽ không hoàn hảo nhưng điều đó không sao - cách duy nhất để viết mã tuyệt vời là viết một loạt mã xấu trước tiên.

Hãy để tôi chia nhỏ năm điều thành nhiều phần nhỏ hơn.

Học Swift

Đầu tiên trong danh sách là Swift. Đây là ngôn ngữ lập trình cốt lõi của Apple - nó không có khái niệm hiển thị thông tin trên màn hình iPhone hoặc tải xuống dữ liệu từ internet, nó chỉ là một ngôn ngữ như JavaScript hoặc Python. Bạn sử dụng nó để tạo biến, viết hàm, v.v.; nó chỉ là mã thuần túy. 

Swift chỉ mới được vài năm tuổi, có nghĩa là nó sử dụng hầu hết mọi tính năng ngôn ngữ tiên tiến hiện có. Một mặt, điều này có nghĩa là bạn có thể tránh tất cả các hành vi cũ kỹ thường gặp trong các ngôn ngữ cũ hơn như C ++ và Java, nhưng điều đó cũng có nghĩa là nó có một số tính năng nâng cao hơn có thể khiến bạn suy nghĩ lúc đầu. Và điều đó không sao cả: nhiều phần của Swift tương đối đơn giản và một số phần sẽ khiến bạn mất nhiều thời gian hơn để thực sự tìm ra, vì vậy chỉ cần dành thời gian và tiếp tục - bạn sẽ đạt được điều đó!

Học SwiftUI

Kỹ năng cốt lõi thứ hai mà tôi liệt kê là SwiftUI, đây là một khuôn khổ của Apple cho phép chúng tôi viết ứng dụng cho iOS, macOS, tvOS và thậm chí watchOS bằng Swift. Vì vậy, trong khi Swift là ngôn ngữ lập trình, SwiftUI cung cấp các công cụ tạo ứng dụng - cách hiển thị ảnh, văn bản, nút, hộp văn bản, bảng dữ liệu, v.v. Nói rõ ràng, SwiftUI không phải bằng cách nào đó thay thế Swift - nó là một khuôn khổ được xây dựng dựa trên Swift cho phép chúng tôi tạo ứng dụng, vì vậy bạn cần cả Swift và SwiftUI để thành công.

Nếu bạn nghĩ Swift là mới, bạn vẫn chưa thấy gì - vì tôi ghi lại SwiftUI này chưa được hai năm tuổi! Nhưng mặc dù quá mới, cộng đồng iOS đã hết lòng đón nhận nó vì nó thật tuyệt vời khi làm việc cùng.

Giờ đây, Apple có một khuôn khổ cũ hơn để xây dựng các ứng dụng iOS được gọi là UIKit và nếu bạn hỏi nhiều người rằng bạn nên học SwiftUI trước hay UIKit trước, bạn sẽ nhận được một loạt câu trả lời. 

Vì vậy, trong trường hợp bạn tò mò, đây là lý do tại sao tôi nghĩ bạn nên tập trung vào SwiftUI như một kỹ năng cốt lõi:

Nó dễ dàng hơn đáng kể so với UIKit, và ý tôi là đáng kể - có thể mất một phần tư mã để có được kết quả tương tự như bạn sẽ nhận được trong UIKit, ngoài ra bạn có ít thứ phải học hơn. Điều này có nghĩa là bạn có rất nhiều động lực vì bạn xây dựng mọi thứ nhanh hơn, xem kết quả của mình nhanh hơn và lặp lại các kết quả đó nhanh hơn, điều này cực kỳ thúc đẩy trong khi bạn đang học.

SwiftUI được xây dựng cho Swift, sử dụng các tính năng ngôn ngữ để giúp bạn tránh các vấn đề và đạt được hiệu suất tối đa. Ví dụ: nếu bạn thay đổi một số dữ liệu trên một màn hình của ứng dụng, SwiftUI sẽ tự động đảm bảo rằng dữ liệu mới được cập nhật ở bất kỳ nơi nào khác trong ứng dụng của bạn sử dụng nó - bạn không cần phải viết mã để tự đồng bộ hóa tất cả, phức tạp một cách đáng ngạc nhiên. Trong khi đó, UIKit được viết cho ngôn ngữ cũ hơn của Apple, Objective-C, và kết quả là có đủ thứ kỳ quặc và rắc rối xuất hiện do tuổi của nó.

SwiftUI hoạt động trên tất cả các nền tảng của Apple, vì vậy bạn có thể lấy những gì bạn đã học được trên iOS và sử dụng nó để tạo ứng dụng macOS hoặc watchOS với mã gần như giống hệt nhau. Chắc chắn, một số thứ như Digital Crown chỉ tồn tại trên một thiết bị, nhưng phần lớn những gì bạn học được sẽ hoạt động ở mọi nơi.
Nhưng quan trọng nhất, SwiftUI là nơi mọi thứ đang diễn ra. Nếu bạn đang nộp đơn xin việc ngay bây giờ - hôm nay - thì tốt thôi, bạn có thể sẽ cần biết UIKit, nhưng khi bạn đang đọc bài viết này, điều đó có nghĩa là bạn đã sớm hơn trong quá trình này. Vâng, UIKit hiện đã phổ biến hơn, nhưng vào thời điểm bạn học xong 6, 9 hoặc thậm chí 12 tháng kể từ bây giờ, SwiftUI sẽ là khung giao diện người dùng thống trị.

Nghiêm túc mà nói, các công ty lớn nhất thế giới đang chọn SwiftUI, bao gồm cả chính Apple và khi Apple ra mắt các widget trong iOS 14 gần đây, họ đã đưa ra yêu cầu rằng bạn phải sử dụng SwiftUI - UIKit là không thể ở đó.

Mạng và dữ liệu

Kỹ năng thứ ba và thứ tư mà tôi đã đề cập là kết nối mạng và làm việc với dữ liệu. So với Swift và SwiftUI, đây là một miếng bánh, hoặc ít nhất chúng ở cấp độ bạn cần để có được công việc của một junior iOS developer.

Kết nối mạng là hoạt động tìm nạp dữ liệu từ internet hoặc gửi dữ liệu từ thiết bị cục bộ đến máy chủ ở một nơi nào đó. Có nhiều cách để thực hiện việc này, nhưng thành thật mà nói thì điều tối thiểu tuyệt đối bạn cần biết là cách tìm nạp một số JSON từ máy chủ.

Và đó là lúc kỹ năng cốt lõi khác xuất hiện: làm việc với dữ liệu. Một lần nữa, có rất nhiều cách bạn có thể tải và lưu dữ liệu, nhưng điều tối thiểu nhất bạn cần làm là chuyển đổi dữ liệu bạn nhận được từ máy chủ bằng mã của bạn thành một số thông tin mà ứng dụng của bạn có thể hiển thị.

Vì vậy, thực sự kỹ năng cốt lõi thứ ba và thứ tư đi đôi với nhau: tìm nạp một số dữ liệu từ máy chủ, sau đó chuyển đổi nó thành thông tin mà bạn có thể hiển thị trong ứng dụng của mình. Một số nhà phát triển nói đùa rằng loại mã này chỉ là một nửa công việc của các nhà phát triển iOS và chắc chắn là chúng tôi sử dụng những kỹ năng này rất nhiều.

Và cuối cùng: kiểm soát phiên bản

Kỹ năng cuối cùng hoàn toàn không phải là mã hóa: đó là kiểm soát phiên bản, sử dụng một thứ như Git. Một lần nữa, bạn thực sự không cần nhiều ở đây, nhưng điều quan trọng là bạn có thể xuất bản mã của mình ở một nơi nào đó như GitHub để các nhà tuyển dụng có thể xem công việc của bạn một cách công khai.

Tôi không nghĩ rằng bất kỳ ai trên thế giới này thực sự hiểu tất cả cách Git hoạt động, nhưng điều đó không sao - bạn chỉ cần biết đủ kiến thức cơ bản để lưu trữ dữ liệu của mình một cách an toàn và có thể làm việc với những người khác.

Vì vậy, gộp 5 cái đó lại với nhau thì có 2 cái lớn - Swift và SwiftUI - cộng với 3 cái nhỏ nhưng quan trọng. Thành thật mà nói, nếu bạn có thể chỉ tập trung vào năm điều đó mà không bị phân tâm, bạn sẽ có những bước tiến lớn đối với công việc nhà phát triển iOS đầu tiên của mình.

Và thế là xong: đó là năm kỹ năng cốt lõi mà tôi nghĩ bạn cần để trở thành một nhà phát triển iOS. Có hàng nghìn người ngoài kia chỉ có những kỹ năng đó và có thể xây dựng và vận chuyển các ứng dụng tuyệt vời trên App Store.

Điều gì tiếp theo sau các kỹ năng cốt lõi?

Một khi bạn đã thực sự nắm chắc năm kỹ năng cốt lõi, bạn hoàn toàn có thể tự vận hành các ứng dụng của riêng mình và làm việc với tư cách là một nhà phát triển độc lập, đồng thời cũng có thể ứng tuyển vào các vị trí phát triển iOS và làm việc cho một công ty mà bạn muốn. Không có bằng cấp đặc biệt nào khác mà bạn cần - hãy học những kỹ năng cốt lõi đó và bạn sẽ ở một nơi tốt.

Nhưng nếu bạn đã làm việc theo cách của mình thông qua những kỹ năng đó và muốn tiến xa hơn, thì có năm kỹ năng mở rộng mà tôi khuyến khích bạn học. Đây là những kỹ năng sẽ đưa bạn từ vị trí tốt trở thành một nơi tuyệt vời - bạn thậm chí còn trở nên có việc làm hơn và phạm vi ứng dụng bạn có thể xây dựng sẽ còn phát triển hơn nữa.

Các kỹ năng là:

  • UIKit
  • Dữ liệu cốt lõi
  • Kiểm thử
  • Kiến trúc phần mềm
  • Đa luồng

Như trước đây, tôi muốn giải thích chi tiết hơn từng điều đó để bạn có thể hiểu tại sao tôi nghĩ chúng quan trọng - và tại sao tôi coi chúng là kỹ năng mở rộng hơn là kỹ năng cốt lõi.

Chuyển sang UIKit

Đầu tiên, UIKit. Đây là khung giao diện người dùng cũ hơn của Apple và đã được sử dụng để xây dựng ứng dụng từ năm 2008 - tôi viết cái này đã được 13 năm, theo thuật ngữ phần mềm thì đã cũ. Nhưng độ tuổi đó không có nghĩa là UIKit tệ và trên thực tế, khi bạn cảm thấy thoải mái với cách hoạt động của nó, bạn sẽ ngạc nhiên bởi vẻ đẹp của nó.

Có rất nhiều điều khiến UIKit đáng học hỏi, bao gồm:

Hàng trăm nghìn ứng dụng đã được viết trong UIKit, vì vậy nếu bạn đang gia nhập một công ty có ứng dụng lớn, được thiết lập tốt thì gần như chắc chắn bạn sẽ cần viết mã UIKit để duy trì ứng dụng đó.

UIKit mạnh hơn đáng kể so với SwiftUI - có nhiều điều bạn có thể làm trong UIKit mà SwiftUI không thể thực hiện được tại thời điểm này. Bạn có thể tạo các bố cục cực kỳ chính xác bằng cách sử dụng công nghệ có tên là Auto Layout.

Nếu bạn gặp sự cố với mã của mình, có nhiều giải pháp có sẵn trong UIKit hơn SwiftUI, đơn giản vì nó đã tồn tại lâu hơn nhiều. Có thể tất cả những điều đó làm cho UIKit trở nên tuyệt vời, vậy tại sao tôi lại biến nó thành một kỹ năng mở rộng hơn là một kỹ năng cốt lõi? Vì UIKit cũng có vấn đề:

Hầu hết mọi thứ đều khó thực hiện trong UIKit hơn SwiftUI, với một số thứ tốn nhiều mã gấp hàng trăm lần nếu không muốn nói là nhiều hơn. SwiftUI được tạo ra đặc biệt cho sự phát triển iOS hiện đại, vì vậy nó thực hiện rất nhiều công việc cho bạn.

Vì UIKit không được viết cho Swift, bạn sẽ thấy nó có nhiều tính năng mà bạn có thể quên với SwiftUI - rất nhiều tùy chọn không được bao bọc ngầm, đánh dấu mã bằng thuộc tính @objc đặc biệt để làm cho nó có sẵn cho Objective-C của UIKit, cần sử dụng protocol và delegate để hiển thị dữ liệu đơn giản.

Không có gì về Auto Layout là “tự động” - trên thực tế, nếu bạn cố gắng tạo một bố cục phức tạp, rất có thể bạn sẽ gặp ác mộng về Auto Layout. Nó cực kỳ thông minh, nhưng nó cũng cực kỳ khó khăn ở nhiều nơi.

Và đó là lý do tại sao tôi coi UIKit là một kỹ năng mở rộng: cần nhiều thời gian và nỗ lực hơn để học so với SwiftUI, điều đó có nghĩa là cần phải có quyết tâm cao hơn - bạn phải thực sự muốn học nó, nếu không thì bạn sẽ bối rối, buồn chán, tức giận, hoặc có thể là cả ba. Chắc chắn, SwiftUI không có tất cả các tính năng của UIKit, nhưng ít nhất bạn có thể đạt được tiến bộ nhanh chóng và cảm thấy có động lực cũng như thành công trước khi chuyển sang UIKit.

Xử lý dữ liệu cốt lõi (Core Data)

Kỹ năng mở rộng thứ hai mà tôi đề cập là Dữ liệu cốt lõi, là khuôn khổ của Apple để làm việc với dữ liệu ứng dụng. Trong phần kỹ năng cốt lõi, tôi đã liệt kê cả kết nối mạng và làm việc với dữ liệu và đúng là như vậy: với những kỹ năng đó, bạn có thể tìm nạp bất cứ thứ gì bạn muốn từ máy chủ và hiển thị nó trong ứng dụng của mình. Những gì Core Data thực hiện còn tiến xa hơn một bước: nó cho phép bạn thao tác dữ liệu đó khi bạn có nó, chẳng hạn như tìm kiếm các giá trị cụ thể, sắp xếp kết quả và hơn thế nữa, tất cả đều rất hiệu quả. Nó cũng có thể liên kết rất dễ dàng với iCloud, có nghĩa là dữ liệu của người dùng của bạn được đồng bộ hóa trên tất cả các thiết bị của họ.

Dữ liệu cốt lõi có rất nhiều nhược điểm, trong đó nhược điểm lớn nhất thường không được thoải mái cho lắm khi làm việc. Core Data có tuổi đời tương đương với UIKit, và mặc dù nó hoạt động tốt với Objective-C nhưng nó không cảm thấy thoải mái bằng Swift. Nó có tích hợp tốt với SwiftUI, điều này làm cho nó cảm thấy bớt lạ hơn một chút, nhưng nó vẫn là một chủ đề phức tạp đáng ngạc nhiên.

Vì vậy, tại sao tôi lại liệt kê nó như một kỹ năng mở rộng? Bởi vì giống như UIKit, Core Data cũng cực kỳ phổ biến - hàng trăm nghìn ứng dụng đã được xây dựng bằng cách sử dụng nó và nó được sử dụng ở nhiều công ty lớn và nhỏ. Cũng giống như UIKit, Core Data thực sự mạnh mẽ.

Chứng minh mã của bạn hoạt động

Kỹ năng thứ ba trong danh sách tiện ích mở rộng của tôi là thử nghiệm (kiểm thử): viết mã đặc biệt để kiểm tra mã ứng dụng chính của bạn hoạt động theo cách bạn mong đợi. Kiểm thử cho phép chúng tôi đảm bảo mã của mình hoạt động chính xác và quan trọng hơn cho phép chúng tôi tiếp tục đảm bảo mã của mình hoạt động chính xác ngay cả sau khi chúng tôi đã thực hiện các thay đổi quan trọng đối với nó - nếu bạn thay đổi 500 dòng mã để triển khai một tính năng mới và tất cả kiểm tra vượt qua, bạn có thể tiếp tục phát triển.

Xây dựng thông minh hơn

Kỹ năng mở rộng thứ tư mà tôi muốn nói đến là kiến ​​trúc phần mềm, nó thực sự là về cách chúng ta tạo mã của mình. Khi bạn mới học, bạn sẽ viết một đoạn mã khủng khiếp - mã quá tệ, nó có thể phá vỡ quy ước Geneva. Và điều đó không sao cả, bởi vì đó là cách bạn học: bạn không bắt đầu tốt - bạn trở nên tốt khi tồi tệ trong một thời gian dài, giống như LeBron James không sinh ra là một cầu thủ bóng rổ vô địch.

Điều quan trọng là bạn phải kiên trì với mã xấu của mình, cho đến khi bạn học cách làm tốt hơn. Và đó là lúc kiến ​​trúc phần mềm xuất hiện: xem xét các kỹ thuật đã được chứng minh để cấu trúc mã của bạn dễ đọc hơn, dễ sử dụng hơn, dễ sửa đổi hơn và dễ chăm sóc về lâu dài hơn. Đôi khi những kỹ thuật này dựa trên cách Swift hoạt động - các tính năng ngôn ngữ mà bạn có thể sử dụng để viết mã tốt hơn. Nhưng có nhiều kỹ thuật khác hoạt động trong bất kỳ ngôn ngữ lập trình nào, và chúng tôi thường gọi là các mẫu thiết kế (design parttern).

Một điểm chính mà bạn nên bắt đầu tìm hiểu như một phần của kỹ năng này là cách bạn chia nhỏ mã của mình. Ví dụ: nếu bạn đang tạo một màn hình trong ứng dụng của mình, bạn có thể có nút đăng nhập, thư viện hình ảnh và danh sách bạn bè trên màn hình đó. Nhưng lý tưởng nhất là bạn tạo thành từng thành phần riêng biệt - thành phần nút đăng nhập, thành phần thư viện hình ảnh và thành phần danh sách bạn bè - để bạn có thể sử dụng lại bất kỳ thành phần nào trong số các thành phần đó trong các phần khác của ứng dụng.

Kiến trúc phần mềm mang tính chủ quan hơn nhiều so với các kỹ năng khác mà tôi đã đề cập cho đến nay. Đối với những người khác - ví dụ như SwiftUI - bạn có thể tự nghĩ: “Chà, tôi biết cách thực hiện X, Y và Z, vì vậy tôi cảm thấy tự tin rằng mình là một nhà phát triển SwiftUI giỏi.” Kiến trúc phần mềm là một chủ đề rất rộng và thành thật mà nói, không có cách nào rõ ràng là “đúng” để giải quyết vấn đề, vì vậy tôi nghĩ điểm chuẩn tốt nhất cho nó là: nếu bạn nhìn lại mã của mình từ sáu tháng trước, hoặc một năm trước, hoặc ba năm trước, v.v., bạn có nghĩ rằng "wow, mã đó tệ quá!"

Một lần nữa, viết mã xấu cũng không sao miễn là nó đưa bạn đến con đường viết mã tốt hơn. Tôi chắc chắn nhìn lại đoạn mã mà tôi đã viết cách đây 5 năm và nhăn mặt ở nhiều nơi, bởi vì bây giờ tôi biết nhiều hơn những gì tôi đã làm hồi đó - và đó là một điều tốt.

Thêm một số concurency

Kỹ năng mở rộng cuối cùng mà tôi muốn nói đến là đa luồng, nói một cách đơn giản là thực hành làm cho mã của bạn làm nhiều việc cùng một lúc. Đa luồng có thể là một vấn đề thực sự đau đầu, bởi vì bộ não của chúng ta khó hiểu - khi mã của bạn thực hiện một việc tại một thời điểm, chúng ta có thể nghĩ nó một cách tuyến tính, nhưng khi hai hoặc ba điều xảy ra cùng một lúc, có khả năng chồng chéo lên nhau, nó thực sự có thể uốn cong bộ não của bạn.

Vì vậy, mặc dù đa luồng là một điều tuyệt vời để có như một kỹ năng mở rộng, bạn cần phải cẩn thận - mục tiêu của bạn phải là hiểu vừa đủ các khái niệm và mã để làm cho nó hoạt động tốt mà không cần phải đi xa hơn. Thành thật mà nói, nhiều nhà phát triển nghĩ rằng đa luồng sẽ làm cho mã của họ chạy nhanh hơn ba hoặc bốn lần ngay lập tức, và trong một số trường hợp, nó sẽ làm như vậy, nhưng nhiều trường hợp khác mã của bạn thực sự sẽ chạy chậm hơn và bây giờ bạn có tất cả các mã phức tạp bổ sung để giải quyết với.

Nếu bạn không tin tôi, hãy xem câu nói này của David Smith - anh ấy là một thành viên tron Swift team tại Apple và trước đó đã dành nhiều năm làm việc trên chính cốt lõi của các khuôn khổ của Apple:

My concrete recommendation is: you should really strongly consider not writing async/concurrent code. I know this sounds weird in 2018, but the cost in complexity and performance is high.

(Khuyến nghị cụ thể của tôi là: bạn thực sự nên cân nhắc việc không viết mã không đồng bộ / đồng thời. Tôi biết điều này nghe có vẻ kỳ lạ vào năm 2018, nhưng chi phí phức tạp và hiệu suất cao.)

Vì vậy: hãy tìm hiểu một chút về cách hoạt động của đa luồng trong Swift để bạn có thể hiểu được các khái niệm và cách triển khai, nhưng hãy cố gắng đừng đi quá đà! 

Lỗi thường gặp

Tại thời điểm này, tôi đã phác thảo tất cả các kỹ năng cốt lõi và mở rộng mà tôi nghĩ bạn cần để làm việc với tư cách là nhà phát triển iOS toàn thời gian. Nhưng tôi cũng muốn nói về một số sai lầm phổ biến nhất mà mọi người mắc phải khi học, bởi vì tôi thấy những lỗi này rất nhiều và tôi biết nó khiến mọi người phải lùi bước.

Có bảy vấn đề chính mà mọi người gặp phải, và tôi muốn trình bày chúng theo thứ tự. Họ đang:

  • Ghi nhớ mọi thứ
  • Hội chứng đồ vật sáng bóng
  • Học sói cô đơn
  • Sử dụng phần mềm beta
  • Dựa vào tài liệu của Apple
  • Bị lạc trong Objective-C
  • Chụp các ngôn ngữ khác

Chúng ta hãy đi qua từng cái riêng lẻ.

1. Ngừng cố gắng ghi nhớ mọi thứ

Vấn đề đầu tiên và cho đến nay là vấn đề phổ biến nhất mà mọi người gặp phải là cố gắng ghi nhớ mọi thứ - đọc qua một hướng dẫn và nghĩ rằng họ phải ghi nhớ mọi thứ trong đó. Làm ơn, làm ơn, xin đừng làm vậy: đó là công thức dẫn đến thảm họa và sẽ hút hết ý chí của bạn ra khỏi bạn cho đến khi bạn không bao giờ muốn lập trình nữa.

Không ai ghi nhớ tất cả mọi thứ. Không ai đến gần để ghi nhớ tất cả mọi thứ. Ngay cả khi bạn chỉ nghĩ về các API mà Apple xuất bản, đó là những đoạn mã chúng ta có thể sử dụng để xây dựng ứng dụng của mình, thì cũng phải có hơn một trăm nghìn người ở đó. Nếu bạn chỉ giới hạn điều đó ở các thành phần cốt lõi của việc xây dựng ứng dụng, thì có thể bạn vẫn đang xem xét hàng trăm - tất cả đều hoạt động theo một cách rất chính xác đòi hỏi nhiều học hỏi để sử dụng.

Thay vào đó, những gì xảy ra là bạn học cách làm một điều gì đó mới, sau đó nhanh chóng quên nó đi. Vì vậy, bạn tra cứu nó và sử dụng nó một lần nữa, sau đó nhanh chóng quên nó. Vì vậy, bạn tra cứu nó lần thứ ba và sử dụng nó, và lần này bạn hầu như chỉ quên nó - một số phần dính trong não của bạn. Điều này lặp đi lặp lại, mỗi lần bạn phải tham khảo một hướng dẫn hoặc một số hướng dẫn tham khảo khác, cho đến khi cuối cùng những điều thực sự cốt lõi đã bám vào đầu bạn đến mức bạn có thể làm được mà không cần tham khảo ở nơi khác.

Nếu bạn chưa biết, thì quên là một thành phần quan trọng của việc học. Mỗi khi bạn quên điều gì đó và học lại nó, nó sẽ đi vào não bạn sâu hơn và kỹ lưỡng hơn một chút. Mỗi khi bạn học lại, não của bạn tạo ra những kết nối mới với những thứ khác bạn đã học được, giúp bạn hiểu thêm về bối cảnh của những gì bạn đang cố gắng làm. Và mỗi khi bạn học lại, bạn sẽ nói rõ với bộ não của mình rằng chủ đề cụ thể này đáng để ghi vào bộ nhớ dài hạn của nó.

Nhưng nếu bạn cố gắng ghi nhớ mọi thứ, bạn sẽ gặp khó khăn. Thay vào đó, đừng lo lắng về việc quên mọi thứ: biết nơi để tra cứu chúng quan trọng hơn nhiều so với việc ghi nhớ mã Swift cụ thể để hoàn thành một việc gì đó. Khi bạn quên điều gì đó và phải học lại, tôi khuyến khích bạn nghĩ đó là một điều tốt - thông tin đó sẽ chìm sâu hơn vào lần thứ hai, thứ ba và thứ mười khi bạn học nó, vì vậy bạn đang giúp ích cho bộ não của mình.

2. Bỏ qua sự sáng bóng

Vấn đề thứ hai mà tôi thấy mọi người gặp phải là cái mà tôi gọi là hội chứng vật thể sáng bóng - họ tìm thấy một loạt hướng dẫn phù hợp với họ và bắt đầu đạt được một số tiến bộ, nhưng sau một hoặc hai tuần họ thấy một số loạt hướng dẫn khác mà họ muốn làm theo và thay vào đó chuyển tàu đến đó. Tôi đã có người gửi email cho tôi nói rằng họ đã thử bốn, năm hoặc thậm chí sáu loạt phim khác nhau và - vì một số lý do kỳ lạ - nhận thấy rằng họ không học được gì.

Vấn đề ở đây thường là phần lớn việc học bất cứ thứ gì không thú vị. Đó không hẳn là lỗi của giáo viên, đó chỉ là thực tế của việc học viết mã - một số thứ mang lại cho bạn kết quả tuyệt vời mà hầu như không có bất kỳ công việc nào, và những thứ khác mất nhiều thời gian hơn để hiểu, không mang lại kết quả tốt, hoặc chỉ một phần của một khái niệm lớn hơn.

Khi bạn đạt được những đường cong học tập dốc này, hội chứng vật thể sáng bóng trở nên mạnh mẽ - với rất nhiều hướng dẫn miễn phí hiện có, bạn có thể chuyển đến bất kỳ hướng dẫn nào trong số đó và bắt đầu lại, và ngay lập tức bạn sẽ quay lại phần nông của hồ bơi một lần nữa, bao gồm phần dễ hơn bạn đã học. Nhưng trừ khi khóa học ban đầu chọn một chủ đề đặc biệt kỳ lạ để đề cập, bạn có thể sẽ phải học nó cuối cùng và bạn chỉ đang trì hoãn điều không thể tránh khỏi.

Vì vậy, tôi không yêu cầu bạn luôn chống lại hội chứng vật thể sáng bóng, bởi vì tôi biết điều đó rất khó. Thay vào đó, ít nhất hãy ý thức về điều đó: khi bạn gặp vấn đề, hãy thử nhờ người khác giúp đỡ và vượt qua thay vì chuyển đổi.

3. Đừng là một con sói đơn độc

Nói về việc hỏi người khác, vấn đề thứ ba mà tôi thấy mọi người gặp phải là khi họ hoàn toàn đơn độc với việc học của mình - họ có suy nghĩ trong đầu rằng họ hoàn toàn có khả năng học cách tự xây dựng các ứng dụng iOS bằng Swift, và không cần đến sự giúp đỡ của người khác.

Cách tiếp cận này thực sự hiệu quả với một số lượng rất nhỏ người, thường là những người có nhiều kinh nghiệm với các ngôn ngữ hoặc nền tảng lập trình khác. Nhưng đối với đại đa số mọi người, cố gắng học hỏi như thế này là một trải nghiệm kinh khủng - mỗi sai lầm hoặc hiểu lầm mất thời gian gấp 5 lần để tìm ra, điều đó cực kỳ dễ mất động lực và bạn đang bỏ lỡ rất nhiều cảm hứng. từ việc nhìn thấy những người khác thành công.

Nếu bạn tự nhiên thích phong cách học “con sói đơn độc” này, hãy để tôi khuyến khích bạn thay đổi: chia sẻ những gì bạn đang học, tìm những người khác cũng đang học và tập thói quen đặt câu hỏi. Bạn không chỉ khám phá ra rằng có một cộng đồng tuyệt vời gồm những người học sẽ bao quanh bạn với sự hỗ trợ và khuyến khích, mà bạn còn được truyền cảm hứng từ công việc của họ và lần lượt truyền cảm hứng cho họ với công việc của bạn. Tin tôi đi, tôi đã thấy điều này xảy ra hàng trăm lần và nó hoàn toàn biến đổi.

4. Bắt đầu phiên bản beta

Vấn đề lớn thứ tư mà tôi thấy mọi người gặp phải là khi họ khăng khăng sử dụng phiên bản beta của các công cụ phát triển của Apple. Tôi hiểu rồi: mỗi năm Apple đều giới thiệu iOS mới, macOS mới và hơn thế nữa, luôn mang đến những điều mới thú vị để chúng ta thử. Hoàn toàn tự nhiên khi mọi người muốn tìm hiểu những gì mới nhất, tuyệt vời nhất ngoài kia, đặc biệt nếu họ biết rằng Swift có một lịch sử thay đổi lâu dài.

Tuy nhiên, mọi người gặp phải tất cả các loại vấn đề khi họ cố gắng học bằng phần mềm beta:

Các hướng dẫn chưa được cập nhật cho phiên bản beta, vì vậy, việc làm theo hướng dẫn không phải lúc nào cũng có thể thực hiện được hoặc có thể hoạt động không chính xác.

Betas thường có rất nhiều lỗi, đặc biệt là đối với những phiên bản được phát hành cho các bản cập nhật iOS lớn.

Các khuôn khổ beta của Apple cần thời gian để ổn định, có nghĩa là mã hoạt động trong phiên bản beta 1 có thể không tồn tại trong phiên bản beta 3.

Vì vậy, tôi biết thật thú vị khi tìm hiểu những thứ mới và tôi nhận ra rằng bạn có thể nghĩ rằng bạn đang dẫn đầu trò chơi với các tính năng mới, nhưng hãy tin tôi: điều đó không đáng. Luôn tuân theo các bản phát hành công khai mới nhất của các công cụ dành cho nhà phát triển của Apple, ít nhất là cho đến khi bạn cảm thấy thoải mái với chúng.

5. Dựa vào các tài liệu chính thức

Vấn đề lớn thứ năm mà mọi người gặp phải khi cố gắng tìm hiểu là dựa vào tài liệu của Apple. Nhóm xuất bản dành cho nhà phát triển của Apple làm việc chăm chỉ để ghi lại tài liệu nhiều nhất có thể từ hàng loạt khuôn khổ khổng lồ của công ty, nhưng công việc của họ phần lớn là viết tài liệu tham khảo - những thứ bạn đọc khi đang cố gắng sử dụng một phần cụ thể của công cụ , thay vì tạo một khóa học có cấu trúc để giúp bạn học cách xây dựng ứng dụng iOS.

Tôi đã không theo dõi được bao nhiêu lần mọi người hỏi "làm thế nào tôi có thể học Swift?" chỉ để được trả lời "chỉ cần đọc hướng dẫn tham khảo Swift của Apple." Cách tiếp cận này thực sự hiệu quả với một số người và tôi biết điều đó vì nó phù hợp với tôi - tôi đã đọc nó từ đầu đến cuối khi Swift được công bố lần đầu tiên. Tuy nhiên, đối với hầu hết mọi người, nó giống như cố gắng học ngôn ngữ của con người bằng cách đọc từ điển: nó được thiết kế để bao gồm tất cả mọi thứ bằng ngôn ngữ, thay vì dạy bạn những phần quan trọng nhất và cách áp dụng chúng.

Vì vậy, nếu bạn có nhiều kinh nghiệm với các ngôn ngữ khác, bạn có thể thấy việc đọc hướng dẫn tham khảo của Apple là hữu ích, nhưng nếu bạn mới bắt đầu thì có thể quay lại với chúng sau một vài tháng.

6. Bị lạc trong Objective-C

Vấn đề lớn thứ sáu mà mọi người gặp phải là cố gắng học Objective-C. Đây là ngôn ngữ phát triển chính của Apple trước khi Swift được giới thiệu và mặc dù bạn sẽ tìm thấy tàn dư trong một số cơ sở mã cũ nhưng phần lớn mã hiện có hiện tại là Swift và hầu hết tất cả mã mới cũng là Swift.

Tôi đã dành nhiều năm để viết Objective-C trước khi Swift xuất hiện và thực sự yêu thích nó, nhưng nó có quá trình học tập cực kỳ khó khăn so với Swift và bỏ lỡ hầu hết các tính năng quan trọng của Swift. Tôi nhớ lần đầu tiên tôi dùng thử SDK iPhone khi Apple công bố nó, và cảm thấy kinh hoàng với Objective-C vì nó hoàn toàn không có khả năng xảy ra bất kỳ thứ gì khác mà tôi đã thấy cho đến nay.

Đối với người học, Objective-C và Swift hầu như không có điểm chung. Đúng vậy, cả hai đều có chung khuôn khổ của Apple, nhưng trừ khi bạn thực sự định làm việc tại Apple - công ty duy nhất trên thế giới vẫn sản xuất một lượng lớn Objective-C - thì bạn nên để Objective-C một mình và tập trung hoàn toàn với Swift.

7. Chụp các ngôn ngữ khác

Và sai lầm lớn cuối cùng mà tôi thấy mọi người mắc phải khi học Swift là đổ lỗi cho các ngôn ngữ khác như thể họ kém Swift bằng cách nào đó. Mục tiêu thông thường là JavaScript, nhưng bạn cũng sẽ thấy mọi người chụp Python, Java, Ruby, Go, v.v. và để làm gì? Đó không phải là một cuộc thi, các bạn - những ngôn ngữ đó không cần phải thua thì Swift mới có thể chiến thắng.

Trên thực tế, Swift và SwiftUI thường xuyên lấy cảm hứng từ các ngôn ngữ và frameworks khác - bất cứ khi nào các tính năng ngôn ngữ mới được coi là cộng đồng xem xét các triển khai tương tự trong Rust, Python, Haskell và các ngôn ngữ khác, và bản thân SwiftUI được lấy cảm hứng từ frameworks React trong JavaScript . Vì vậy, khi tôi thấy mọi người trong cộng đồng của chúng tôi nói rằng SwiftUI là không có JavaScript hoặc tương tự, tôi chỉ co rúm người lại - không có gì có thể xa hơn sự thật.

Các khóa học và tài nguyên

Bây giờ về phần mà hầu hết mọi người sẽ quan tâm nhất: tôi nghĩ bạn nên sử dụng tài nguyên thực tế nào để học Swift, SwiftUI và hơn thế nữa - để đạt được mục tiêu trở thành nhà phát triển iOS?

Có rất nhiều thứ ngoài kia, và tôi thực sự đánh giá cao thực tế là cộng đồng Swift có rất nhiều người chia sẻ kinh nghiệm của họ. Tuy nhiên, ở đây tôi đặc biệt sẽ xem xét các tài nguyên miễn phí - những nơi bạn có thể đến và học cách xây dựng các ứng dụng tuyệt vời mà không phải trả một xu.

Có hai lý do cho việc này:

Một số người tin rằng khóa học Swift càng tốn kém thì càng phải tốt, vì vậy cuối cùng họ phải trả những cái giá quá đắt mà không nhận được đủ lợi ích từ nó. Nhiều trang web như Udemy dựa vào việc bán nhiều khóa học giá rẻ, tin chắc rằng nếu bạn không thích một khóa học, bạn sẽ mua một khóa học khác. Họ cũng có mô hình kinh doanh tương tự như Steam’s - luôn có doanh số bán hàng, khuyến khích mọi người xây dựng nhiều khóa học mà họ sẽ học “một ngày nào đó”.

Vì vậy, tôi chỉ liệt kê các tài nguyên miễn phí ở đây bởi vì tôi không để bạn rơi vào những cái bẫy đó - đừng vung ra một trăm đô la trở lên cho khóa học đầu tiên của bạn và đừng mua một tá khóa học rẻ tiền vì bạn nghĩ rằng biến bạn thành nhà phát triển.

Hướng dẫn có cấu trúc

Đầu tiên, Apple có hai nguồn lực chính có thể giúp bạn. Đầu tiên là trang Teaching Code, nơi liệt kê các tài nguyên dành cho sinh viên và giáo viên để học Swift từ những điều cơ bản tuyệt đối cho đến các chứng chỉ chuyên nghiệp. Chương trình giảng dạy của họ rất lớn, vì vậy bạn có thể mất một chút thời gian để tìm điểm đầu vào tốt nhất cho mình, tuy nhiên khi bạn đã ở đó, bạn sẽ tìm thấy rất nhiều điều để khám phá.

Và thứ hai, Apple có một loạt các hướng dẫn SwiftUI hướng dẫn bạn xây dựng các ứng dụng thực tế. Tuy nhiên, những thứ này không dạy bạn Swift, vì vậy trước tiên bạn cần phải tuân theo chương trình giảng dạy tập trung vào Swift của họ.

Đầu tiên, Apple có hai nguồn lực chính có thể giúp bạn. Đầu tiên là trang Mã giảng dạy, nơi liệt kê các tài nguyên dành cho sinh viên và giáo viên để học Swift từ những điều cơ bản tuyệt đối cho đến các chứng chỉ chuyên nghiệp. Chương trình giảng dạy của họ rất lớn, vì vậy bạn có thể mất một chút thời gian để tìm điểm đầu vào tốt nhất cho mình, tuy nhiên khi bạn đã ở đó, bạn sẽ tìm thấy rất nhiều điều để khám phá.

Và thứ hai, Apple có một loạt các hướng dẫn SwiftUI hướng dẫn bạn xây dựng các ứng dụng thực tế. Tuy nhiên, những thứ này không dạy bạn Swift, vì vậy trước tiên bạn cần phải tuân theo chương trình giảng dạy tập trung vào Swift của họ.

Giống như tôi đã nói trước đó, Apple cũng tạo ra một hướng dẫn dành riêng cho ngôn ngữ lập trình Swift, nhưng rất có thể nó sẽ không phù hợp với bạn - nó được thiết kế như một tài liệu tham khảo chứ không phải là một hướng dẫn có cấu trúc, vì vậy nó khá dày đặc.

Điều mà các hướng dẫn của Apple không làm là cố gắng cung cấp một cách có cấu trúc để học và đó là nơi xuất hiện các hướng dẫn miễn phí của riêng tôi. Tôi có hàng trăm bài viết và video về Swift, SwiftUI, UIKit, v.v., nhưng đặc biệt có hai Tôi muốn giới thiệu: 100 ngày của SwiftUI và 100 ngày của Swift.

Khóa học 100 ngày SwiftUI sẽ đưa bạn tìm hiểu các nguyên tắc cơ bản của Swift bằng cách sử dụng các bài báo, video và các bài kiểm tra tương tác, sau đó hướng dẫn bạn xây dựng hơn 20 ứng dụng trong thế giới thực bằng SwiftUI - một lần nữa, tất cả đều có các bài báo, video và bài kiểm tra tương tác để giúp thực hiện chắc chắn những gì bạn đang học đang chìm sâu vào trong. Mỗi hướng dẫn được xây dựng dựa trên những gì bạn đã học, do đó, lộ trình học tập sẽ tốt và dần dần.

Nếu bạn muốn học UIKit hơn là SwiftUI, thì đó chính là nơi xuất hiện của 100 ngày Swift ban đầu - đó là một ý tưởng tương tự, nhưng được xây dựng bằng UIKit chứ không phải SwiftUI cho những người thích con đường đó.

Điều mà các hướng dẫn của Apple không làm là cố gắng cung cấp một cách có cấu trúc để học và đó là nơi xuất hiện các hướng dẫn miễn phí của riêng tôi. Tôi có hàng trăm bài viết và video về Swift, SwiftUI, UIKit, v.v., nhưng đặc biệt có hai Tôi muốn giới thiệu: 100 ngày của SwiftUI và 100 ngày của Swift.

Khóa học 100 ngày SwiftUI sẽ đưa bạn tìm hiểu các nguyên tắc cơ bản của Swift bằng cách sử dụng các bài báo, video và các bài kiểm tra tương tác, sau đó hướng dẫn bạn xây dựng hơn 20 ứng dụng trong thế giới thực bằng SwiftUI - một lần nữa, tất cả đều có các bài báo, video và bài kiểm tra tương tác để giúp thực hiện chắc chắn những gì bạn đang học đang chìm sâu vào trong. Mỗi hướng dẫn được xây dựng dựa trên những gì bạn đã học, do đó, lộ trình học tập sẽ tốt và dần dần.

Nếu bạn muốn học UIKit hơn là SwiftUI, thì đó chính là nơi xuất hiện của 100 ngày Swift ban đầu - đó là một ý tưởng tương tự, nhưng được xây dựng bằng UIKit chứ không phải SwiftUI cho những người thích con đường đó.

Youtube và hơn thế nữa

Có một số video YouTube tuyệt vời hướng dẫn bạn về các nguyên tắc cơ bản của SwiftUI, bao gồm:

  • Một từ Chris Ching, nơi anh ấy hướng dẫn bạn xây dựng một trò chơi đánh bạc từ đầu.
  • Một từ Mark Moeykens, nơi anh ấy giải thích năm khái niệm SwiftUI mà mọi người nên học khi bắt đầu lập trình.
  • một từ tôi, nơi tôi dạy cả Swift và SwiftUI cùng một lúc, trong khi lấy câu hỏi từ khán giả.

Mặc dù chúng không có cấu trúc như vậy, nhưng vẫn có những trang web khác có hướng dẫn Swift và SwiftUI chất lượng cao, bao gồm BLCKBIRDS, Ray Wenderlich, Donny Wals, Antoine van der Lee, v.v. - Tôi thực sự khuyến khích mọi người ghé thăm nhiều tài nguyên và tìm những gì phù hợp với họ.

Học trong một ứng dụng

Nếu bạn thích học bằng cách sử dụng các ứng dụng, tôi muốn giới thiệu hai ứng dụng, cả hai đều hoàn toàn miễn phí. Đầu tiên là ứng dụng Swift Playgrounds của Apple, cho phép bạn học Swift ngay trên iPad hoặc Mac của mình. Có rất nhiều bài học tương tác dành cho trẻ em, nhưng cũng có một số bài học nâng cao hơn sẽ giúp thúc đẩy các kỹ năng của bạn hơn nữa.

Ứng dụng còn lại là do tôi tự tạo và có tên là Unwrap. Unwrap hoạt động trên tất cả iPhone và iPad, đồng thời cho phép bạn tìm hiểu, đánh giá và thực hành các nguyên tắc cơ bản của Swift bằng cách sử dụng video, bài kiểm tra và hơn thế nữa. Nó bao gồm tất cả các nguyên tắc cơ bản của Swift và hoạt động tuyệt vời cùng với chương trình giảng dạy SwiftUI 100 Ngày.

Tìm câu trả lời

Cuối cùng, bạn sẽ cần học cách tìm câu trả lời trực tuyến. Điều này có thể có nghĩa là đến Stack Overflow, nhưng thành thật mà nói, tôi hy vọng không phải vì đó không phải là một nơi quá dễ chịu.

Thay vào đó, hãy đặt câu hỏi trên diễn đàn Hacking với Swift, trên nhóm Slack yêu thích của bạn, trong các phiên Giờ hạnh phúc dành cho nhà phát triển iOS, trên Twitter, v.v. - chúng tôi thực sự là một cộng đồng rất nồng nhiệt, thân thiện với rất nhiều người sẵn sàng giúp bạn tiếp cận mục tiêu của bạn.

Kết nối với cộng đồng

Nói về cộng đồng của chúng tôi, tôi muốn chuyển sang một chủ đề thực sự quan trọng sẽ giúp gặp gỡ những người ở vị trí tương tự như bạn, giúp bạn học hiệu quả hơn và cũng giúp bạn tìm được cơ hội việc làm.

Chủ đề là thế này: kết nối với cộng đồng phát triển iOS. Điều này có nghĩa là nơi học và tìm kiếm tin tức và những ý tưởng thú vị, đi đâu khi bạn muốn gặp gỡ mọi người và chia sẻ mẹo cũng như những nơi hữu ích để bạn có thể đặt câu hỏi.

Theo dõi các bản tin

  • Đối với bản tin, bạn không thể làm sai với iOS Dev Weekly. Khi tôi viết điều này, nó đã vượt qua 500 số báo, một số mỗi tuần, vì vậy tôi nghĩ rằng điều đó cho bạn biết tất cả những gì bạn cần biết về tầm quan trọng của nó.
  • Nếu bạn muốn đăng trên một diễn đàn web, tôi tự tổ chức một diễn đàn tại https://www.hackingwithswift.com/forums - có rất nhiều danh mục để lựa chọn và mọi người đều có thể tham gia bất kể mức độ kinh nghiệm của bạn. . Tin tưởng tôi, bạn được chào đón để đăng các câu hỏi dành cho người mới bắt đầu của bạn ở đây!
  • Mỗi tháng, iOS Dev Happy Hour diễn ra trên một cuộc gọi Zoom với hơn 300 người, nhưng điều thú vị thực sự ở đây là các phòng đột phá, nơi bạn có thể trò chuyện với các nhóm từ 6 đến 8 người cùng một lúc. Thật là thú vị và bạn sẽ kết bạn với nhau.
  • Việc tham dự các hội nghị trở nên khó khăn do đại dịch coronavirus, nhưng WWDC của Apple đã gây được tiếng vang lớn vào năm ngoái và cũng có nhiều sự kiện cộng đồng diễn ra cùng với đó. Một nhóm bạn và tôi đã điều hành kho lưu trữ GitHub để giúp liệt kê tất cả các sự kiện, bài báo khác và hơn thế nữa đã xảy ra - hãy kiểm tra!
  • Và cuối cùng, nếu bạn muốn trò chuyện trên Slack nơi bạn có thể nhận được câu trả lời nhanh hơn, bạn có thể tham gia nhóm Hacking miễn phí với Swift Slack và tham gia một trong các kênh dành cho Swift, SwiftUI, chương trình giảng dạy 100 ngày của tôi, v.v.

Mất bao lâu?

Đây là một câu hỏi mà tôi được hỏi rất nhiều: mất bao lâu để từ khi không biết gì về Swift để có thể có được vị trí nhà phát triển iOS cấp độ đầu vào.

Quy tắc vàng: đừng vội vàng

Đầu tiên, điều bạn không thể làm là vội vàng học nhiều khóa học cùng một lúc. Hãy nhớ những gì tôi đã nói về hội chứng vật thể sáng bóng? Vâng, điều đó - nhiều người thực sự nghĩ rằng họ có thể tăng gấp đôi với hai khóa học cùng một lúc, sau đó gấp rút học qua bốn, năm, hoặc thậm chí nhiều giờ hơn mỗi ngày và vẫn có được sự hiểu biết chất lượng cao về các chủ đề mà họ đã đề cập.

Để rõ ràng hơn, tôi đã thấy mọi người thử điều đó rất nhiều lần và lần nào nó cũng thất bại. Mỗi lần - nó không bao giờ hoạt động, và tôi thấy mọi người nói rằng đó là do hướng dẫn không tốt, hoặc vì Swift quá khó, hoặc vì bất kỳ lý do nào khác ngoài việc họ cố gắng chạy nhanh qua một thứ gì đó phức tạp.

Theo nghĩa đen, hôm nay tôi nhận được một email có nội dung “Xin chào Paul! Nếu tôi dành bốn hoặc năm giờ mỗi ngày để học Swift, tôi có thể hoàn thành nhanh đến mức nào? ” Và đó không chỉ là cách học tập - không học Swift, không học chơi piano, không học trượt băng hay bất cứ thứ gì.

Học Swift thực sự rất khó và học xây dựng ứng dụng cần rất nhiều lần thử và sai, rất nhiều lần mắc lỗi và rất nhiều lần sai. Và điều đó không sao cả - tốt hơn là không sao, điều đó thật tuyệt! Bởi vì mỗi lần bạn thử điều gì đó, mỗi lần bạn mắc lỗi và mỗi lần bạn đi sai, bạn sẽ học được điều gì đó trên đường đi và khi cuối cùng bạn đi đến giải pháp, bạn sẽ hiểu sâu hơn về nó.

Vì vậy, TL; DR ở đây là đừng cố gắng và vội vàng - hãy dành thời gian của bạn, đừng ngại khám phá những tiếp tuyến đi kèm, đừng ngại thử nghiệm với các dự án của bạn và đừng ngại đi quay lại điều gì đó bạn đã học trước đây và học lại nếu cần.

Lai lịch của bạn là gì?

Thứ hai, bạn nên xem xét nền tảng của mình trước khi đến với Swift. Bạn thấy đấy, việc học cách xây dựng ứng dụng đòi hỏi nhiều kỹ năng khác nhau và nếu bạn đang nắm bắt được nhiều kiến ​​thức hiện có như kiểm soát phiên bản, cấu trúc dữ liệu, thuật toán, v.v. thì bạn có một khởi đầu thực sự so với những người mới làm quen với khoa học máy tính nói chung cùng với việc mới làm quen với Swift và các framework khác của Apple.

Vì vậy, chúng tôi có thể nghĩ về một vài địa điểm khác nhau mà bạn có thể đang ở ngay bây giờ:

  • Nếu bạn có bằng khoa học máy tính, bạn sẽ bao gồm nhiều nguyên tắc cơ bản về CS cần thiết để bắt đầu sử dụng Swift. Những thứ như biến, mảng, vòng lặp, mảng, tập hợp, hàm, OOP và hơn thế nữa đều sẽ hữu ích trong Swift, cũng như tất cả công việc của bạn với cấu trúc dữ liệu và thuật toán. Điều này có thể giúp bạn giảm bớt 4-6 tháng trong lộ trình học tập tùy thuộc vào môn học bạn đã học, đồng thời mang lại lợi thế cho bạn khi xin việc tại nhiều công ty.
  • Nếu bạn không có bằng CS nhưng đã tham gia khóa đào tạo về lập trình, một lần nữa, bạn sẽ có nhiều nguyên tắc cơ bản cần thiết để bắt đầu sử dụng Swift. Điều này sẽ không mang lại cho bạn lợi thế tương tự khi nộp đơn xin việc tại các công ty đó, bởi vì thường họ mong đợi một tấm bằng theo đúng nghĩa đen để họ có thể kiểm tra danh sách các yêu cầu tùy ý của họ, nhưng nó vẫn có thể khiến bạn mất ba hoặc bốn tháng. con đường học tập.
  • Nếu bạn không có bằng CS và không tham gia bootcamp, nhưng bạn vẫn viết mã trong thời gian rảnh rỗi của mình, một lần nữa điều đó sẽ khiến bạn mất một khoảng thời gian trên lộ trình học tập - có thể là hai tháng hoặc lâu hơn, tùy thuộc vào ngôn ngữ hoặc khuôn khổ nào bạn đã sử dụng

Và điều gì sẽ xảy ra nếu bạn không có bằng CS, không có bootcamp và không có kinh nghiệm viết mã trước đó? Sau đó, tôi muốn nói rằng bạn đang xem xét từ 9 đến 12 tháng để từ con số không trở thành một công việc mới bắt đầu. Vâng, đó có thể là cả năm làm việc cùng với bất kỳ công việc toàn thời gian hiện tại của bạn và đó chỉ là để bạn có được công việc đầu tiên với tư cách là nhà phát triển iOS.

Nó luôn luôn là một năm? Như tôi đã nói, bạn có thể cạo râu từ 1 đến 6 tháng nếu bạn đã có kinh nghiệm trước đó. Nếu bạn tính toán những con số tốt nhất cho cả hai bên - 9 tháng từ con số không cho đến một công việc đầu vào, cộng với 6 tháng nghỉ việc để có bằng CS - và điều đó có nghĩa là bạn có thể được tuyển dụng chỉ trong 3 tháng, điều này thật đáng chú ý.

Bây giờ, bạn có thể nghĩ rằng có được công việc đầu tiên sau ba tháng là không thể, nhưng thực tế không phải vậy. Rất tiếc, tôi đã gặp một người đang theo khóa học 100 ngày Swift của tôi, người đã kiếm được việc làm trước khi họ đạt đến ngày thứ 50 - họ đã học đủ về phát triển ứng dụng trong vòng chưa đầy hai tháng, bởi vì họ đã nỗ lực để mỗi ngày đều có giá trị.

Vì vậy, bạn không cần bằng CS và bạn không cần bootcamp, nhưng bạn cần chuẩn bị để làm việc chăm chỉ.

Chuẩn bị nộp đơn

Cuối cùng nhưng không kém phần quan trọng, nếu bạn đang tiến xa hơn một chút trong lộ trình học tập iOS của mình và bắt đầu nghĩ đến việc kiếm được công việc đầu tiên đó, tôi muốn hướng dẫn bạn đến một bộ sưu tập khổng lồ các tài nguyên mà tôi đã tập hợp để giúp bạn.

Trên trang web của tôi, bạn có thể nhấp vào Tuyển dụng> Bắt đầu tại đây hoặc chỉ cần truy cập trực tiếp vào https://www.hackingwithswift.com/career-guide. Ở đó, bạn sẽ tìm thấy một bộ sưu tập tài nguyên hoành tráng sẽ giúp bạn bất kể bạn ở đâu, tất cả đều miễn phí:

  • Đánh giá kỹ năng tương tác để kiểm tra kiến ​​thức của bạn về các chủ đề cốt lõi.
  • Các bài kiểm tra mã hóa được sử dụng trên khắp thế giới trong các cuộc phỏng vấn việc làm thực tế.
  • Hơn 200 câu hỏi phỏng vấn thường được sử dụng, cùng với các gợi ý về cách bạn có thể trả lời chúng.
  • Các bài viết về cách tìm việc làm, cách làm tốt nhất trong các cuộc phỏng vấn và hơn thế nữa.

Chỉ cần truy cập URL và bạn sẽ tìm thấy các liên kết đến tất cả những thứ đó và hơn thế nữa ở một nơi.

Tôi cũng muốn hướng bạn đến loạt video của Sean Allen về các mẹo phỏng vấn Swift - anh ấy có toàn bộ danh sách phát để bạn có thể làm việc thông qua các cuộc thảo luận riêng lẻ, chẳng hạn như class so với struct, lập trình chức năng, xử lý lỗi và hơn thế nữa. Không có video nào là quá dài, nhưng mỗi video đều nhằm cung cấp cho bạn những kỹ năng cần thiết để thực hiện tốt một kịch bản phỏng vấn.

Kết luận

Được rồi, vậy là tôi đã điểm qua các kỹ năng cốt lõi và mở rộng mà bạn cần, những sai lầm phổ biến mà mọi người thường mắc phải khi học, những khóa học nào bạn có thể theo, cách kết nối với cộng đồng iOS và cách chuẩn bị cho cuộc phỏng vấn xin việc của bạn - đó là một số lượng lớn để vượt qua và tôi hy vọng nó hữu ích.

Hơn thế nữa, tôi hy vọng tôi đã cho bạn thấy có bao nhiêu là hoàn toàn miễn phí. Vâng, tôi biết sự cám dỗ rất mạnh mẽ khi vung ra một trăm đô la trở lên cho một khóa học, nhưng hãy thư giãn - trước tiên hãy di chuyển, tìm động lực và cũng có thể tìm một người dạy Swift theo cách phù hợp với bạn. Và sau đó, khi bạn đang ở một nơi tốt và cảm thấy sẵn sàng, tốt thôi: hãy tiếp tục và chi tiêu một số tiền nếu bạn muốn.

Chúc bạn may mắn với cuộc hành trình của mình!

Nguồn Hacking With Swift!

Và nếu bạn muốn bắt đầu với lập trình iOS Swift, khi chưa tìm được lộ trình cụ thể, chưa tìm được bạn học, bạn có thể tìm đến trung tâm Techmaster tại Hà Nội, một lộ trình sẵn sàng cho bạn với cam kết việc làm:

Lộ trình đi động iOS Swift 38 buổi