Có rất nhiều yếu tố cần cân nhắc mỗi khi bắt đầu 1 dự án mới nên việc lựa chọn Objecitve-C hay Swift không phải là quyết định rõ ràng. Vì đây là 1 trong những câu hỏi phổ biến nhất trong giới lập trình iOS nên chúng ta đã quyết định đưa ra nhiều khía cạnh đa dạng để bàn thảo chủ đề này lần cuối.

Nên nhớ rằng, không có luận điểm nào đóng vai trò chính trong quyết định của bạn. Quyết định của bạn chỉ đến ngay sau khi đã cân đo đong đếm các yếu tố sau:

  • Kinh nghiệm với Objective-C vs Swift

objective-c hay swift

Điểm đầu tiên chính là kinh nghiệm hiện tại của bạn. Nếu bạn có kinh nghiệm tương đương với cả hai ngôn ngữ thì lựa chọn ngôn ngữ sẽ phụ thuộc vào các yếu tố khác sẽ được liệt kê bên dưới như: khả năng tương thích thư viên với bên thứ 3, hỗ trợ API, các thành viên trong team…

Ngược lại, nếu chỉ biết 1 trong 2 ngôn ngữ và các yêu cầu của dự án hoặc của team không phản đối, hãy chọn ngôn ngữ mà bạn đã quen thuộc nếu . Tất nhiên, nếu lựa chọn ngôn ngữ không quen thuộc để làm app thì bạn sẽ có cơ hội để tìm hiểu về ngôn ngữ đó, nhưng khả năng cao là bạn sẽ gánh technical debt – món nợ kỹ thuật (trong lập trình, đôi khi ta chọn cách giải quyết “mì ăn liền”, giải quyết được vấn đề ngay, nhưng sẽ gây khó khăn cho quá trình phát triển và bảo trì về sau. Techinical Debt tích lũy sẽ gây ra nhiều hậu quả nguy hiểm khôn lường) hoặc làm chậm trễ tiến độ dự án.

Đôi khi bạn gặp tình huống như đang xây ngôi nhà trên cát mà không khả năng tái cấu trúc nào có thể cứu vãn nổi. Nói cách khác, “món nợ kỹ thuật” ban đầu này sẽ khiến bạn không còn sự lựa chọn nào khác ngoài việc viết lại ứng dụng từ đầu.

Mặt khác, nếu bạn quyết định tạo 1 prototype – thử nghiệm cho production app của mình, bạn có thể lập trình với ngôn ngữ mà bản thân ít quen thuộc nhất. Cách này giúp bạn làm quen với ngôn ngữ mới, hỗ trợ production app vì bạn sẽ tiếp cận ứng dụng, tiếp cận các tính năng và giải quyết các vấn đề của nó từ 2 góc độ insight.

  • Khung thời gian, phạm vi và scale của dự án

thời gian

Trước tiên hãy xem các yêu cầu và ràng buộc đặc biệt trong dự án. Kinh nghiệm của bạn, các thành viên trong nhóm, quy mô dự án sẽ giúp bạn nghiêng về 1 trong 2 ngôn ngữ.

► Khung thời gian

Lập trình production apps trong 1 ngôn ngữ bạn chưa quen thuộc sẽ dẫn đến các món nợ kỹ thuật lớn. Món nợ này phải được nỗ lực trả đúng hạn. Nếu timeline gấp gáp, bạn sẽ phải chọn ngôn ngữ mình có nhiều kinh nghiệm hơn. Trong trường hợp bạn chưa có kinh nghiệm gì nhiều, hãy chọn Swift.

Nếu bạn có lịch trình nhẹ nhàng, bạn có thể cân nhắc lập trình ngôn ngữ mà bạn chưa biết gì hết (để học hỏi thêm). Và nếu bạn vô tình rơi vào dự án “bí ẩn” không có timeline cố định, bạn chắc chắn nên chọn ngôn ngữ mà mình hoàn toàn không biết. Đây là cơ hội vàng, không thường xuyên có được trong sự nghiệp của bạn để tối ưu hóa khả năng mở rộng ngôn ngữ và nâng cấp cuộc chơi.

► Đội ngũ làm app

So với các vấn đề về kĩ thuật, đây là 1 topic thường bị bỏ qua nhưng đáng lẽ ra không nên như vậy. Bạn cần nói chuyện với đội ngũ của mình trước khi đưa ra các quyết định lựa chọn ngôn ngữ – dù cho bạn đang làm việc trong vùng codebase độc lập.

Ví dụ, nếu bạn đang làm trong 1 công ty với đội ngũ dev Objective-C có nhiều năm kinh nghiệm? Nếu bạn bắt đầu với Swift mà cả đội ngũ vẫn chưa hoàn toàn làm quen với nó thì cũng không phải là ý kiến tốt. Dù cho bạn có đủ lý do, khả năng tranh luận và dự báo mọi thứ đi nữa thì bạn cũng không nên đi 1 mình với ngôn ngữ riêng. Xung đột đội ngũ có thể dẫn đến các hậu quả tệ hai và cuối cùng, chẳng ai chiến thắng cả. Miễn là bạn chịu lắng nghe các thành viên và làm theo 1 kế hoạch dân chủ thì tất cả sẽ ổn.

Hết phần 1

Gramy via IDEAcademy

SHARE

LEAVE A REPLY