1. Mở đầu

Tôi bắt đầu tiếp xúc với lập trình khi đang là sinh viên năm 2 đại học, lúc bấy giờ hệ sinh thái di động chưa bùng nổ như hiện nay. Tôi và các bạn đại học rủ nhau đi học lập trình mobile, với tôi học lập trình mobile khá lạ lẫm, bạn bè thì chọn học lập trình Android vì dễ cài môi trường hơn, còn tôi thích đi ngược lại số đông chọn học lập trình iOS bởi trong tư duy của tôi cái gì ít người theo thì ít cạnh tranh.

Hành trình học lập trình iOS của tôi khởi nguồn từ trung tâm Techmaster, nơi có thầy giáo có trình độ cao và tâm huyết với nghề. Những bài học đầu tiên của bắt đầu từ học Objective-C, ngôn ngữ chính để phát triển iOS. Thực sự, hành trình ban đầu không hề dễ dàng: rào cản ngôn ngữ Tiếng Anh, tài liệu không nhiều, chưa kể về việc cài đặt môi trường lập trình đã rất khó đối với một đứa sinh viên như tôi.

Vẫn còn nhớ ngày đầu đi học được Techmaster hỗ trợ cài hệ điều hành Hackintosh trên con laptop Dell mà tôi có thể bắt đầu hành trình học lập trình iOS từ dây. Dù khó, nhưng chính khao khát “muốn làm ra một sản phẩm thực tế mà người khác có thể cầm nắm và sử dụng” đã khiến tôi kiên trì.

Bài viết tôi chia sẻ những thứ có thể không mới những hi vọng sẽ giúp được các bạn mới học lập trình iOS sẽ đi nhanh hơn.

2. Chặng đường đầu tiên: Từ những ứng dụng “mini”

Thử nghiệm đầu tiên: Ứng dụng tính toán đơn giản với vài giao diện “cứng”, hầu như chưa biết auto layout là gì, hay làm sao để xử lý vòng đời của ViewController.

Khám phá iOS SDK: Tôi nhận ra ngoài code, tôi phải hiểu Xcode, phải nắm cơ bản về cấu trúc file và các frameworks cốt lõi, cách quản lý memory (ARC),…
Cách tiếp cận:

  • Chắn hẳn mọi người mới học iOS thì đều gặp phải những khó khăn ban đầu về xây dựng giao diện hay autolayout, sau một thời gian làm việc thì tôi tiếp cận được với SnapKit SDK với những cú pháp đơn giản giúp bạn xây dựng giao diện nhanh và dễ tùy chỉnh hơn thay vì sử dụng Xib hay Storyboard.
  • Làm việc với RestFul API thì thường dùng Alamofire. Thư viện này được phát triển từ Objective-C cho đến hỗ trợ Swift.

Bước ngoặt: Lần đầu tiên chạy được ứng dụng trên iPhone thật, thay vì chỉ simulator, giúp tôi cảm nhận được “thành quả” rõ ràng. Cảm giác lúc đó, dù ứng dụng chỉ là một công cụ ghi chú đơn giản, nhưng đã cho tôi niềm tin: Tôi có thể xây dựng được nhiều thứ lớn hơn.

3. Thay đổi khi Swift ra đời

Sau khi Swift xuất bản những phiên bản hoàn thiện và ổn định hơn tôi nhanh chóng chuyển từ Objective-C sang Swift. Ban đầu, sự “mới mẻ” của Swift khá thử thách: cú pháp gọn gàng nhưng còn nhiều giới hạn, cộng đồng chưa lớn. Tuy nhiên, tôi nhận thấy Swift rất tiềm năng, tốc độ phát triển nhanh và hỗ trợ tốt cho tương lai.

Học thông qua dự án: Thay vì đọc quá nhiều lý thuyết, tôi bắt tay vào refactor các dự án cũ sang Swift. Mỗi lần va chạm, tôi ghi chú lại các khác biệt giữa Objective-C và Swift.
Cách tiếp cận: Với một ngôn ngữ mới ra đời sẽ kèm theo cú pháp mới, việc thực hành và học lý thuyết tôi nghĩ cần phải song hành chúng sẽ bổ trợ lẫn nhau để bạn có thể học tốt hơn. Bạn có thể tham khảo Swift Tour của Apple. Trong Swift Tour, Apple giới thiệu toàn bộ cú pháp của Swift, cá nhân tôi thấy phần này khá quan trọng vì nó giúp bạn nắm vững kiến thức cơ bản của Swift.

Học công nghệ mới: Những năm gần đây Apple đã phát triển thêm Combine và SwiftUI, đây là những thư viện mới được phát triển để phục vụ cho việc lập trình giao diện bằng mô hình khái báo. Với cá nhân tôi thì năm vững Swift cơ bản vẫn là ưu tiên hàng đầu vì khi nắm được cơ bản rồi thì các bạn tiếp cận với những thư viện mới sẽ thấy dễ dàng hơn.

4. Những bài học “đắt giá”

Không chỉ coding: Khi tham gia vào dự án lớn, tôi nhận ra kỹ năng mềm (giao tiếp, làm việc nhóm, quản lý thời gian) cũng quan trọng không kém.

Clean code & maintainable: Dự án đầu tiên tôi viết “một đống code” khó bảo trì. Qua thời gian, tôi dần coi trọng việc đặt tên biến, phân chia module, viết comment rõ ràng, tuân thủ coding convention, áp dụng các mô hình kiến trúc (MVC, MVVM, VIPER) để dễ mở rộng về sau. Phần này các bạn nên trau dồi kiến thức lý thuyết lẫn thức hành nắm vững từng thành phần của các kiến trúc, sẽ rất hữu ích cho việc phỏng vấn tìm công việc.

Design pattern là kiến thức sẽ giúp bạn nâng cao bản thân, viết code sạch sẽ và đồng nhất, có nhiều bài báo viết về chủ đề này còn riêng tôi thì học qua một repo trên github. Trong repo này tác giả nói chi tiết về khái niệm và có sẵn mẫu code bằng Swift cho từng pattern, sẽ giúp ích khá nhiều cho người mới tiếp cận.

Các design patterns
Các design patterns

5. Reactive programing - hành trang mới

Reactive Programming (lập trình phản ứng) trong iOS là một phương pháp lập trình dựa trên luồng dữ liệu (data streams) và sự lan truyền của các thay đổi (propagation of change). Thay vì viết các đoạn code để “chủ động” lắng nghe hay gọi lại (callback) khi dữ liệu thay đổi, trong Reactive Programming, bạn sẽ mô hình hóa dữ liệu dưới dạng các Observable (hay Publisher) và mô tả cách ứng dụng “phản ứng” (react) khi dữ liệu phát ra giá trị mới hoặc xảy ra sự kiện. Có thể nói Reactive programing là xu thế phát triển ứng dụng hiện nay. Đối với iOS có bộ SDK phát triển là RxSwift, bạn có thể theo dõi những cập nhật mới ở đây nhé.

Khi bạn đã quen với việc code giao diện, logic, syntax swift và tổ chức code theo mô hình MVVM, VIPER, tôi nghĩ bạn nên tiếp cận với RxSwift càng sớm càng tốt đây có thể nói là một công cụ giúp bạn phát triển hơn trong việc coding. Hiện nay RxSwift khá phổ biến được áp dụng ở nhiều công ty tôi từng làm việc.

Một mô hình phổ biến mọi người hay sử dụng hiện nay đi kèm với RxSwift là MVVM. Một repo khá nổi tiếng và có nhiều người theo dõi trên github là khoren93/SwiftHub. Bạn có thể vào đọc tham khảo để cải thiện việc coding của mình ngày càng tốt hơn.

6. Trí tuệ nhân tạo cho lập trình

Sử dụng trí tuệ nhân tạo như ChatGPT, Code Copilot hay Gemini sẽ trợ giúp cho các bạn rất nhiều trong việc học.

Ví dụ dưới dây có thể nhờ ChatGPT viết cho tôi Class Observable đơn giản trong RxSwift.

Yêu cầu ChatGPT viết class Observable
Yêu cầu ChatGPT viết class Observable
Cách sử dụng Observable
Cách sử dụng Observable
Giải thích chức năng
Giải thích chức năng

7. Tương lai và động lực

Sau nhiều năm, tôi vẫn cảm thấy iOS còn vô vàn điều mới. Dù bây giờ có nhiều sự lựa chọn (Android, web, cross-platform), tôi vẫn trung thành với iOS vì thấy giá trị cốt lõi: tính ổn định, sự tinh gọn và hệ sinh thái đồng bộ của Apple.

Chúc các bạn thành công.