Rails đã và đang đứng trong hàng ngũ các ngôn ngữ hàng đầu trong hơn 12 năm qua. Và 12 năm trong giới công nghệ cũng gần bằng với bất tử, vì những cái tên công nghệ cũng sống ngần ấy năm là vô cùng ít ỏi.
Như mọi người đã biết, nền công nghiệp phần mềm thay đổi với tốc độ ánh sáng, đặc biệt trong lĩnh vực web, vậy vì lý do nào mà Rails có thể trụ vững lâu như vậy? Có cách nào ta vẫn dùng Rails làm web framework được không? Ý tôi là, với Concurrent này rồi Functional kia luôn luôn thống trị headlines, một thứ framework dựa trên ngôn ngữ hướng đối tượng thì có gì mà đáng học?
Đó là câu hỏi hôm nay ta sẽ trả lời. Rails vẫn còn rất đáng học.
Doctrine và Vision
Rails có một doctrine. Thật sự có đấy. Ở ngay đây này. Tôi không biết các bạn thế nào, nhưng mỗi khi tôi thấy Doctrine such và such, tôi lại nghĩ ngay đến mấy con chuột lang bị ép làm nô lệ bởi một tên độc tài hoang tưởng nào đó. Chắc là do tôi đọc mấy truyện viễn tưởng giật gân hâu khải huyền nhiều quá rồi. Rails Doctrine, tuy vậy vẫn chạy tốt chán. Sau đây là một vài nguyên tắc:
- Tối ưu cho lập trình hạnh phúc – Optimize for programmer happiness
- Quy ước vượt trên cấu hình – Convention over Configuration
- Menu là omakase (tất cả phụ thuộc vào ‘đầu bếp’) – The menu is omakase
- Không có một kiểu mẫu – No one paradigm
- Đề cao code ‘đẹp’ – Exalt beautiful code
- Cung cấp ‘dao kéo’ sắc bén – Provide sharp knives
- Hệ thống tích hợp giá trị – Value integrated systems
- Tiến độ cao hơn độ ổn định – Progress over stability
- Đẩy ‘lều’ – Push up a big tent
Hiện tôi sẽ không đi qua tất cả những nguyên tắc này, nhưng tôi nghĩ là bạn nên tìm đọc. Bạn biết họ không thực sự nói những gì không? “Make a website”. Danh sách chứa đầy những từ như “hạnh phúc”, “đẹp”, “tiến độ”, “giá trị”. Cái này là cho web framework.
Đây chính là những nguyên tắc hay và đáng tuân theo cho bất cứ công việc phát triển nào. Chúng định hình hướng đi của framework và cộng đồng xung quanh đó. Tuy có thể bạn sẽ không đồng ý với tất cả những nguyên tắc trên, nhưng ít nhất bạn biết chúng là gì.
Bất cứ framework nào đầu tư nhiều công sức như vậy vào các nguyên tắc chi phối mình, thì ắt phải thật trưởng thành và thông minh. Tôi rất thích những nguyên tắc này và tôi hiểu được, những nguyên tắc này tồn tại nhằm giúp nhiều người như tôi có thể sử dụng công cụ này thoải mái và dễ dàng hơn.
Thành công nhanh chóng
Có một sự thật từ lâu mà ai cũng biết là, Rails cho phép developer ‘tăng tốc’ ngay từ những giây phút đầu tiên. Nếu bạn muốn phát triển thứ gì đó nhanh, như khi muốn “thử nghiệm lý thuyết” chẳng hạn, bạn sẽ khó lòng tìm được công cụ nào phù hợp như Rails đâu. Bởi lẽ đó, Rails đã trở thành lựa chọn số một cho vô vàn startup.
Nhưng mà, đây không chỉ là công cụ cho startup. Khi bạn muốn học thứ công nghệ gì mới, thường sẽ mất rất lâu để bạn học được thứ gì đó ra hồn. Bạn phải vượt qua một trình độ nào đó, như newbie
chẳng hạn, để dùng được. Rất khó thực hiện một cam kết như thế này khi bạn phải thường xuyên chuyển nghề hoặc có nhiều trách nhiệm khác trên vai. Nếu bạn còn khá mới với giới lập trình, Rails sẽ cho bạn những thành công từ sớm. Từ rất rất sớm là đằng khác. Bạn không phải học cả một ngôn ngữ lập trình, mà chỉ vừa đủ để nhảy ra thị trường mà thôi. Thực ra, có rất nhiều người đến với Ruby thông qua Rails, đến mức Rail bị tưởng nhầm là Ruby luôn.
Hãy học Rails vì bạn sẽ có thể thấy được tiền bộ ngay. Và sự tiến bộ đó sẽ thôi thúc bạn học tiếp.
Học luôn cách làm web
Một khía cạnh nữa của Rails là kiểu cách ‘thần chú, nhịp nhàng’, do người tạo và người dùng đều “Convention Over Configuration”. Có nghĩa là, về cơ bản, Rails đã tiếp nhận giao thức (cách thức làm việc) giả định một số cấu hình nhất định. Ví dụ, bạn không cần phải lựa chọn một database khi bắt đầu với Rails. Rails sẽ sử dụng SQLite theo quy ước nếu bạn không cấu hình một database khác. Bên cạnh minh chứng cho ‘thành công chớp nhoáng’ ta đã nói ở trên, ta còn thấy được web làm việc như thế nào.
Khoan đã, tôi nói thế nghĩa là sao ấy nhỉ? À thì, ý tôi là đa số website cần phải lưu trữ dữ liệu, nên Rails cũng có quy ước cho việc đó luôn. Đại đa số ứng dụng web ngoài kia sử dụng chuẩn xác minh theo session, vậy nên Rails cũng có quy ước cho việc này. Khi bạn đã biết được những quy ước này, bạn cũng biết được luôn ứng dụng web cần có những gì. Sau đây là ví dụ minh họa:
- RESTful endpoints
- Asset compression and building
- Database migrations
- Package and dependency management
- Testing
Còn nhiều nữa, nhưng bạn cũng nắm được ý tưởng rồi đấy. Bạn có thể lấy lại y nguyên danh sách trên và chỉ cần chỉnh nhẹ lại một số cấu hình nếu cần thiết. Bạn cũng có thể bỏ luôn, hoặc thay thế những quy ước này với gems hoặc code của chính mình. Khi đã sẵn sàng, bạn có thể đào sâu hơn vào mỗi quy ước và tìm hiểu tại sao chúng lại tồn tại. Qua nhiều lần ngụp lặn sâu hơn như thế này, bạn sẽ học được nhiều điều nền tảng về quá trình phát triển và triển khai ứng dụng web. Hơn thế nữa, bạn có thể dùng quy ước cho đến khi đã sẵn sàng, học tập theo tốc độ phù hợp mà vẫn cho ra ứng dụng web dùng tốt.
Đứng trên vai người khổng lồ
Rails đã cho ra nhiều gã khỗng lồ trong ngành phát triển web. Rails ra đời là framework để xây dựng Basecamp, một dịch vụ rất thành công với traffic cực cao thời đó. Như vậy đồng nghĩa với việc những vấn đề xuất hiện với những trang web gốc data, traffic cao như Basecamp đã được giải quyết, và ta chỉ việc gặt hái những thành quả đã đạt được thôi.
Trong 12 năm, Rails đã được áp dụng vào nhiều trang rất thành công. Nhiều người tham gia xây dựng những trang này đã cho ra nhiều gem nguồn tuyệt vời để giải quyết các vấn đề họ gặp phải. Một trong những ví dụ điển hình nhất là Devise, gem de facto để xác minh trong Rails. Khi sử dụng Devise (và các gem khác), bạn có thể cho phép người dùng xác minh theo rất nhiều cách khác nhau. Email/password, Twitter, Facebook, Github, JWT,… Devise chỉ là một trong hàng nghìn ví dụ ngoài kia mà thôi.
Rails được xây dựng bởi người khổng lồ và cũng do nhiều người khổng lồ khác phát triển.
Anh và đội quân nào cơ?
Khi bạn bắt đầu lặn ngụp vào Rails cộng đồng này cũng sẽ trở thành cộng đồng của bạn, Nếu bạn truy cập vào Rubygems và tìm kiếm “rails”. Bạn sẽ thấy kết quả cỡ khoảng… 160 trang gem. 160 trang cơ đấy!! và luôn có gem mới xuất hiện mỗi tuần.
Hơn nữa, nguồn tài liệu Rails trên internet nhiều vô số. Với nhiều forum như Sitepoint hay Stackoverflow để hỏi han đủ thứ. Rồi còn Slack group. Nói tóm lại, luôn có một “đại đội 500 anh em” túc trực giúp đỡ bạn mọi vấn đề về Rails.
Ruby tuyệt đẹp
Theo tôi, một trong những lý do thuyết phục nhất nên học Rails là vì chính Ruby, đây là một thứ ngôn ngữ tuyệt đẹp.
Trong một bài viết hồi những ngày tuổi đầu của Ruby, Yukihiro Matsumoto (cha để của Ruby) từng viết “…Ruby được thiết kế để mang lại hạnh phúc cho lập trình viên”. Và ông đã làm rất tốt, giữ cho Ruby đi theo sứ mệnh này.
Techtalk via Sitepoint