ChatGPT ra mắt hai năm, tôi trở thành một lập trình viên iOS nghiệp dư với sự hỗ trợ của AI
ChatGPT ra mắt hai năm, tôi trở thành một lập trình viên iOS nghiệp dư với sự hỗ trợ của AI
ChatGPT ra mắt: AI kỳ diệu ở đâu
Vào tháng 11 năm 2022, ChatGPT ra mắt và thu hút sự chú ý toàn cầu. Trong hai năm qua, AI sinh ra đã phát triển nhanh chóng, từ tầng mô hình đến tầng ứng dụng, đều có những bước tiến đáng kể.
Hầu hết độc giả có lẽ đã trải nghiệm ChatGPT hoặc các sản phẩm AI sinh ra tương tự. Thậm chí, bạn có thể không chỉ giới hạn trong việc trò chuyện với AI, mà còn sử dụng công cụ hỗ trợ AI trong công việc, nâng cao hiệu suất làm việc. Tôi tin rằng đây chắc chắn là một công nghệ sẽ mang lại thay đổi lớn cho nhân loại. Hợp tác với AI có thể trở thành một kỹ năng cơ bản của thời đại này.
Trong hai năm qua, tôi luôn theo dõi sự phát triển của khả năng AI. Trong thời gian này, cảm xúc hồi hộp, bình tĩnh, thất vọng, bất ngờ, tất cả đều đan xen. Mỗi khi có một mô hình mới ra mắt, tôi lại trải qua một vòng cảm xúc, từ “Ôi, nó thực sự có thể làm điều này!” đến “Hừ, vẫn không tốt lắm.”
Cho đến vài tháng trước, khi mô hình Claude 3 Sonnet được phát hành (hiện đã được cập nhật lên 3.5 Sonnet), tôi nhận ra tiềm năng to lớn trong đó. Tôi quyết định thử thách bản thân, xem AI có thể giúp tôi hoàn thành một điều mà tôi luôn muốn làm – phát triển một ứng dụng iOS.
Lập trình viên iOS “mới vào nghề”: quyết định nhảy vào
Trong những năm qua, mặc dù tôi luôn theo dõi các ứng dụng iOS, nhưng chỉ dừng lại ở mức sử dụng. Tôi gần như không biết gì về phát triển iOS. Tôi có nghe nói về Objective-C và Swift, và biết rằng có Xcode – công cụ phát triển này.

Vài năm trước, do lý do học tập và công việc sau này, tôi đã học Python. Đến nay, khả năng của tôi vẫn chưa đạt đến trình độ kỹ sư Python chuyên nghiệp. Dĩ nhiên, tôi có thể viết một số script đơn giản, giải quyết một số vấn đề trong công việc, có một sự hiểu biết nhất định về cơ sở dữ liệu, yêu cầu mạng và các khái niệm cơ bản khác, có một mức độ tư duy lập trình nhất định.
Vậy nên, để phát triển một ứng dụng iOS, tôi cần chọn một chủ đề, tức là ứng dụng tôi muốn làm. Cuối cùng, tôi đã quyết định làm một ứng dụng có thể xem thông tin về động đất (sẽ được gọi là “Cảm giác Động đất”).
Bạn có thể cũng thấy rằng, việc chọn chủ đề này hoàn toàn là một quyết định ngẫu hứng.
Tôi thường xuyên theo dõi thông tin về động đất, là một người đã trải qua cơn động đất lớn, tôi có một độ nhạy cảm đặc biệt với động đất. Mặc dù không phải lần nào động đất cũng ảnh hưởng đến tôi, nhưng tôi vẫn có thói quen xem gần đây có nơi nào xảy ra động đất. Các ứng dụng thông tin động đất hiện có hoặc quá xấu xí, hoặc có kích thước quá lớn, tôi đã từng phàn nàn về điều này.
Trước khi viết mã: tìm mục tiêu, xác định khung
Sau khi xác định mục tiêu sơ bộ, không có nghĩa là tôi có thể bắt đầu viết mã. Chủ yếu là tôi cũng không biết viết. Tôi cần giải quyết một số vấn đề cơ bản:
- Để phát triển một ứng dụng iOS, tôi nên chọn ngôn ngữ lập trình nào?
- Tôi cần tải phần mềm gì để phát triển, và bắt đầu như thế nào?
- Thiết kế giao diện ứng dụng, tôi cần những trang nào và thiết kế ra sao?
- Thời gian dự kiến, tôi có thể chấp nhận mức độ thời gian tối đa nào?
- Để phát hành ứng dụng, tôi cần làm thế nào để nộp lên App Store?
Tất nhiên, ngoài những vấn đề rõ ràng này, còn rất nhiều vấn đề nhỏ khác mà tôi không liệt kê ra. Vì vậy, tôi đã thông qua việc hỏi AI và tìm kiếm tài liệu để đưa ra một số kết luận:
- Tôi quyết định sử dụng SwiftUI do Apple khuyến nghị để phát triển một ứng dụng iOS nguyên bản, không sử dụng các framework bên thứ ba, cố gắng giảm thiểu sự phụ thuộc. Điều này cũng giúp AI có thể tận dụng tốt tài liệu chính thức của Apple.
- Tôi cần tải Xcode, công cụ phát triển do Apple cung cấp.
- Tôi cần tham khảo Hướng dẫn Giao diện Người dùng do Apple cung cấp, cố gắng sử dụng các thành phần gốc, tiết kiệm thời gian thiết kế giao diện.
- Tôi có thể chấp nhận đầu tư tổng cộng 1 tháng thời gian vào cuối tuần để hoàn thành dự án này.
- Tôi cần trả 688 nhân dân tệ mỗi năm để mở tài khoản Apple Developer, đây là điều kiện cần thiết để nộp ứng dụng lên App Store.
Bước đầu tiên: sắp xếp ý tưởng, bắt đầu từ con số không
Tôi đã đăng ký tài khoản Apple Developer và tải Xcode. Vấn đề đầu tiên tôi phải đối mặt là, tôi nên bắt đầu từ đâu?
Tôi hoàn toàn không biết gì về cấu trúc dự án ứng dụng iOS, tổ chức mã nguồn, v.v. Vì vậy, tôi đã yêu cầu Claude giúp tôi tạo một dự án SwiftUI Hello World (dự án dành cho người mới bắt đầu trong lĩnh vực lập trình) và hướng dẫn tôi từng bước để chạy nó. Mặc dù tôi không hiểu mã SwiftUI, nhưng nó đã chạy thành công.
Tiếp theo, tôi đã yêu cầu Claude giải thích cấu trúc dự án SwiftUI. Ví dụ, biểu tượng ứng dụng iOS nên để ở đâu, các trang được tổ chức như thế nào, cần những cấu hình cơ bản nào, v.v. Sau vài lần trò chuyện, tôi đã hiểu sơ bộ về cấu trúc cơ bản của một ứng dụng iOS.
Đi sâu vào chi tiết: nắm tay AI
Hợp tác với AI để phát triển ứng dụng iOS là một việc không dễ dàng. Nếu bạn nói trực tiếp với nó: “Xin hãy giúp tôi phát triển một ứng dụng thông tin động đất.”
Chắc chắn rằng, nó sẽ đưa cho bạn một đống mã “rác” và nói rằng: “Đã hoàn thành.”
Vì vậy, bạn cần từng bước hướng dẫn nó, giúp nó giải quyết một số vấn đề cụ thể, chẳng hạn như từ việc tạo một ứng dụng chi tiết đến việc tạo một trang mới, rồi chi tiết hơn đến việc hiển thị một danh sách trên trang, và cuối cùng là kiểu dáng của danh sách đó. Quá trình thực hiện, thì ngược lại từ độ chi tiết nhỏ nhất bắt đầu.
Chỉ khi làm rõ vấn đề, AI mới có thể thật sự giúp bạn. Tất nhiên, trong quá trình làm rõ vấn đề, bạn cũng có thể cùng AI hoàn thành. Một vòng khép kín hoàn hảo.
Ví dụ, trang chính của ứng dụng Cảm giác Động đất, phần chính là bản đồ nền và danh sách sự kiện động đất.

Trước tiên, bạn cần Claude giúp bạn tạo giao diện chính và hiển thị bản đồ. Trong quá trình này, câu lệnh của bạn có thể là:
Xin hãy hiển thị bản đồ trên trang chính của ứng dụng, phải sử dụng các thành phần gốc của iOS, sử dụng cú pháp SwiftUI. Cần xuất ra đường dẫn tệp mã mới hoặc đã chỉnh sửa và nội dung mã đầy đủ.
Sau khi nhận được đầu ra từ AI, bạn cần sao chép vào Xcode, chạy dự án, xem hiệu quả. Ví dụ, bạn có thể thấy bản đồ trên giao diện, nhưng chỉ là một vùng nhỏ, lúc này bạn có thể cần tiếp tục trò chuyện:
Tôi mong muốn bản đồ chiếm toàn bộ màn hình, không có bất kỳ rìa nào. Xin hãy phân tích mã cẩn thận và xuất lại mã hoàn chỉnh đã chỉnh sửa.
Thậm chí, mã có thể không chạy được, lúc này cách tốt nhất là sao chép thông báo lỗi từ Xcode cho AI, để nó giúp bạn phân tích vấn đề.
Mã trên đã báo lỗi trong Xcode, xin hãy phân tích nguyên nhân lỗi và xuất lại mã hoàn chỉnh đã chỉnh sửa.
Tóm lại, phát triển một ứng dụng thực sự với AI, mặc dù nghe có vẻ rất ngầu, nhưng thực tế bạn cần có khả năng phân tích vấn đề phức tạp và đủ kiên nhẫn. Bởi vì AI không thể hoàn thành một nhiệm vụ rộng lớn, chỉ có thể hoàn thành từng nhiệm vụ nhỏ. Một chức năng nhỏ thường cần phải tiến hành nhiều vòng đối thoại theo tình huống thực tế mới có thể sử dụng được.
Đối mặt với khó khăn: nhờ sự trợ giúp, xây dựng backend
Vì vậy, dưới sự giúp đỡ của AI, tôi đã dần dần xây dựng được hình dáng cơ bản của ứng dụng Cảm giác Động đất. Ví dụ, có danh sách động đất bao gồm dữ liệu mẫu, trang chi tiết dữ liệu động đất, trang phân tích dữ liệu, trang cài đặt, v.v.

Nhìn lại, tôi nhận ra quyết định ngẫu hứng trước đó không phải là một lựa chọn tốt. Bởi vì ứng dụng Cảm giác Động đất không phải là một ứng dụng hoàn toàn chạy trên máy, nó cần lấy dữ liệu động đất theo thời gian thực, điều này cần một dịch vụ backend để cung cấp dữ liệu. Điều này là một thách thức lớn đối với tôi, một người mới trong phát triển iOS.
Nói đến dịch vụ backend, có lẽ bạn sẽ nghĩ đến máy chủ đám mây, cơ sở dữ liệu, API, v.v. Đây lại là một lĩnh vực rộng lớn. Vì vậy, tôi bắt đầu tìm kiếm giải pháp từ AI.
“Không máy chủ”, đây là câu trả lời mà Claude đưa ra cho tôi. Nhờ vào sự phát triển của điện toán đám mây, hiện có nhiều nhà cung cấp dịch vụ đám mây có thể giúp bạn xây dựng dịch vụ backend, lưu trữ dữ liệu, cung cấp API backend, thông báo hàng đợi, v.v. Như vậy, bạn không cần tự xây dựng và duy trì máy chủ đám mây, cũng không cần học kiến thức phát triển backend phức tạp. Quan trọng nhất là chi phí thấp, thậm chí có những lựa chọn miễn phí.
Vì vậy, tôi bắt đầu tìm hiểu về các sản phẩm không máy chủ mà Cloudflare cung cấp, chẳng hạn như Workers, KV, D1, Queue, v.v. Tôi đã thông qua việc tìm kiếm tài liệu và hỏi AI, dần dần hiểu được các khái niệm cơ bản và cách sử dụng của các sản phẩm này. Cuối cùng thiết kế được toàn bộ kiến trúc backend cho ứng dụng Cảm giác Động đất.
Giải quyết vấn đề: cùng AI sát cánh
Trong quá trình hợp tác phát triển với AI, trải nghiệm thường gặp nhất là một đoạn mã báo lỗi mãi không giải quyết được, một chức năng không thể thực hiện đúng như mong đợi, dẫn đến bạn không thể tiếp tục.
Lúc này, tôi sẽ khuyên bạn thử hai phương pháp:
Đầu tiên, hãy sử dụng công cụ tìm kiếm truyền thống để tra cứu các vấn đề liên quan, tìm kiếm tài liệu và thông tin mới hơn. Sau đó, đưa những kiến thức mới này vào AI, cập nhật cơ sở dữ liệu của nó. Hầu hết các mô hình sản xuất đều có thời gian cắt dữ liệu huấn luyện không mới lắm, vì vậy bạn cần cập nhật có mục tiêu cơ sở dữ liệu của nó, để nó có thể giúp bạn tốt hơn.
Ví dụ, Claude cung cấp chức năng Project. Bạn có thể tải tài liệu nhận được lên Project, AI sẽ tự động học từ những tài liệu này và cung cấp giải pháp chính xác

Phương pháp thứ hai mà tôi càng khuyến nghị hơn là thử thay đổi vai trò của bạn và trò chuyện với AI. Nhiều người khi viết mã cùng AI thường giữ vai trò là “quản lý sản phẩm”, trong khi AI là “kỹ sư phát triển”. Ví dụ, cuộc đối thoại của bạn có thể là:
Tôi hy vọng trang danh sách động đất của ứng dụng có thể hiển thị dữ liệu động đất mới nhất, đồng thời hỗ trợ làm mới khi kéo xuống. Xin hãy giúp tôi thực hiện chức năng này.
Nếu AI không thể thực hiện đúng chức năng này, câu hỏi tiếp theo của bạn có thể là:
Chức năng hiển thị dữ liệu và làm mới khi kéo xuống có vấn đề, không thể sử dụng bình thường. Xin hãy giúp tôi phân tích nguyên nhân và cung cấp giải pháp.
Tuy nhiên, cuộc đối thoại trên có thể không giải quyết vấn đề một cách tốt nhất.
Lúc này, bạn có thể thử thay đổi vai trò của mình thành một kỹ sư kiểm thử và cùng AI phân tích vấn đề. Ví dụ, bạn có thể nói:
Tôi nhận thấy trang danh sách động đất không thể hiển thị dữ liệu động đất mới nhất và cũng không thể làm mới khi kéo xuống. Xin hãy tìm mã tương ứng và thêm thông tin nhật ký chi tiết, tôi sẽ phản hồi bạn sau khi kiểm thử.
Tiếp theo, bạn có thể đưa thông tin nhật ký từ Xcode cho AI, và bạn sẽ thấy hiệu suất giải quyết vấn đề của AI sẽ tăng lên đáng kể. Lúc này, chúng ta lại trở về với kết luận đã được đề cập ở phần đầu bài viết, AI phù hợp để giải quyết các vấn đề cụ thể, trong khi không phù hợp để giải quyết các nhiệm vụ rộng lớn. Bạn cần coi AI như một cỗ máy, chứ không phải là con người.
Phiên bản dự án: để AI trở thành “quản lý sản phẩm”
Khi bạn hoàn thành phiên bản tối thiểu của ứng dụng với sự giúp đỡ của AI (ví dụ chỉ có một chức năng cốt lõi), bạn có thể coi toàn bộ dự án như một dự án và sử dụng AI để giúp bạn thực hiện các vòng lặp cải tiến. Trong quá trình này, chúng ta cố gắng để AI cảm nhận được toàn bộ dự án trong mỗi cuộc đối thoại, lúc này chức năng Project của Claude lại phát huy tác dụng.
Bạn có thể tải toàn bộ mã nguồn của dự án lên Project của Claude, để AI hiểu cấu trúc và chức năng của toàn bộ dự án. Như vậy, AI trong các cuộc đối thoại sau sẽ có thể giúp bạn cải tiến tốt hơn.

Ví dụ, trong cấu hình thực tế của tôi, tôi sẽ cố gắng tải tất cả các tệp dự án Xcode lên Project của Claude. Đồng thời, tôi sẽ chỉnh sửa các Hướng dẫn Tùy chỉnh, ghi lại cấu trúc thư mục và mô tả cơ bản của toàn bộ dự án. Như vậy, AI trong các cuộc trò chuyện sau sẽ hiểu thông tin cơ bản và cấu trúc đầy đủ của toàn bộ dự án.
Trong quá trình này, bạn có thể sử dụng lệnh tree trong Terminal để tạo cấu trúc thư mục của toàn bộ dự án, sau đó sao chép vào Hướng dẫn Tùy chỉnh.

Hơn nữa, tôi khuyên bạn nên học cách sử dụng Git để quản lý mã nguồn của toàn bộ dự án. Bạn có thể cam kết mã nguồn vào kho Git sau mỗi vòng lặp cải tiến, rồi tải mã mới nhất lên Project của Claude. Claude cũng đã thông báo về việc nâng cấp chức năng Project trong tương lai, sẽ hỗ trợ tích hợp trực tiếp với kho Git, vì vậy bạn có thể dễ dàng quản lý toàn bộ dự án hơn.

Ứng dụng Cảm giác Động đất đã hoàn thành phiên bản đầu tiên sau khoảng 50 giờ làm việc, thời gian đầu tư thấp hơn dự kiến của tôi.
Tôi đã nộp ứng dụng lên App Store và cuối cùng đã được phê duyệt. Sau đó, tôi đã tiếp tục dành thời gian rảnh rỗi để cải tiến ứng dụng, bao gồm hỗ trợ nguồn dữ liệu chính thức từ nhiều quốc gia và khu vực trên thế giới, bao phủ nhiều ngôn ngữ địa phương hơn, hỗ trợ macOS và iPadOS, hỗ trợ tính năng Cảnh báo quan trọng, v.v.

Ngoài AI: từ cái đầu tiên đến cái tiếp theo
Với việc ứng dụng Cảm giác Động đất được phát hành, cuối cùng tôi đã xác nhận mục tiêu ban đầu của mình: vào năm 2024, AI có thể giúp một người hoàn toàn không hiểu về phát triển iOS phát triển một ứng dụng iOS có thể được coi là “đủ tiêu chuẩn” ở mức độ ban đầu.
Tất nhiên, câu này không có nghĩa là “AI có thể biến bất kỳ ai thành lập trình viên iOS”. Lấy tôi làm ví dụ, để hoàn thành dự án này, ngoài việc AI đủ mạnh, còn có một số yếu tố khác:
- Trong những năm qua, tôi đã trải nghiệm rất nhiều ứng dụng iOS. Vì vậy, tôi có thể hình dung ra một ứng dụng cơ bản trong đầu ngay từ đầu, bao gồm những trang nào, những chức năng nào, cách tương tác ra sao.
- Tôi có một nền tảng lập trình Python nhất định và có một số nhận thức về lập trình. Mặc dù tôi không biết viết Swift, nhưng tôi biết các khái niệm cơ bản của lập trình, biết cách tìm kiếm tài liệu, và làm thế nào để giải quyết vấn đề dễ dàng hơn.
Vì vậy, tôi không muốn đưa ra những tuyên bố như “AI có thể biến bất kỳ ai thành lập trình viên iOS” hoặc “mọi người hãy nhanh chóng sử dụng AI để viết ứng dụng”. Những yếu tố vô hình khác ngoài AI cũng rất quan trọng. Tất nhiên, tôi cũng hy vọng và tin tưởng rằng, với sự phát triển của công nghệ AI, trong tương lai sẽ có thể giúp những người thực sự không biết gì về lập trình hoàn thành ý tưởng ứng dụng của mình thông qua AI.
© Thông báo bản quyền
Bản quyền bài viết thuộc về tác giả, vui lòng không sao chép khi chưa được phép.
Những bài viết liên quan:
Không có đánh giá...