Article:
Ruby vs. Java - Chuyện hoang đường #1: Kích thước Project
1209
nguoitapdich.myopenid.com 35Updated over 3 years ago |
Tuần này, tôi bất ngờ chuyển từ Ruby sang làm Java. Gặp lại Java cho tôi dịp viết ra suy nghĩ của công ty Relevance chúng tôi về sự lựa chọn platform. Tuần này tôi sẽ post loạt bài về 5 chuyện hoang đường thường dẫn đến sai lầm khi chọn platform cho project mới.
Chuyện hoang đường #1: Ruby thích hợp cho project nhỏ, và Java tốt hơn cho project lớn, phức tạp.
Đúng ra phải ngược lại. Thực ra, Java thích hợp hơn cho project nhỏ, được xác định rõ ràng, trong khi Ruby tốt hơn cho project lớn, phức tạp, có "kết thúc mở". Java có vài lí do để thắng ở project nhỏ:
- Ở project nhỏ, nếu tìm được thư viện mã nguồn mở thích hợp nghĩa là chẳng phải làm gì nữa. Java có nhiều thư viện hơn cả. Lợi thế: Java.
- Tiền cho project nhỏ có thể bị thổi bay vì phải đầu tư phát triên những thứ không thể đoán trước. Những vấn đề thường gặp với Java đều đã được phổ biến và Java có nhiều tài liệu hơn Ruby. Lợi thế: Java.
- Ở project nhỏ, nhóm phát triển không có thời gian và tiền bạc đầu tư cho kĩ năng mới. Hầu hết lập trình viên đều đã biết Java. Lợi thế: Java.
Ở project lớn, những yếu tố trên bị đảo ngược:
- Có nhiều thứ mới phải tự viết, không thể dùng nguyên xi thư viện có sẵn, nên năng suất của ngôn ngữ rất quan trọng. Lợi thế: Ruby.
- Project lớn chắc chắn có nhiều chướng ngại, nên bạn cần thật linh động để đối phó với thay đổi. Lợi thế: Ruby.
- Ở project lớn, lợi ích training mang lại bù đắp được chi phí bỏ ra, mỡ nó rán nó. Rất nhiều công ty không đánh giá đúng việc này. Nếu năng suất tăng 10% sau 5 tuần(!) training, thì lợi ích mang lại trong khoảng 1 năm sẽ bù đắp được (12 tháng x 10% = 5 tuần). Lợi thế: Ruby.
Vậy sao ai cũng tin chuyện hoang đường này? Hiện Ruby cực tốt cho một loại project nhỏ: ứng dụng web có dùng DB. Ruby on Rails xóa bỏ được mọi nhược điểm của Ruby cho project nhỏ:
- Rails là thư viện hoàn hảo.
- Rails xóa bỏ được mọi thứ rắc rối (cho project nhỏ!)
- Rails cung cấp sẵn nhiều công cụ, nên chỉ cần đào tạo lại lập trình viên web chút ít (cho project nhỏ!).
Đối với ứng dụng web, lợi thế: Rails.
Mọi người nhìn thấy thành công của Rails rồi rút ra kết luận sai hoàn toàn. Có quá nhiều project Ruby on Rails nhỏ thành công rõ ràng. Có quá nhiều project Java lớn thành công rõ ràng. Nếu không xét những yếu tố này trong bối cảnh rộng hơn, bạn sẽ thu được Chuyện hoang đường #1.
35