Ngày mai nên đi học Ruby hay NodeJS

Nhân dịp hôm nay đi Barcamp Saigon, tôi gặp một cậu bạn vô cùng thú vị. Cậu này là người Mỹ gốc Việt, hiện giờ đang làm developer cho một startup ở Sài Gòn. Nói chuyện thì cậu ấy kể với tôi rất nhiều thứ cũng như liệt kê ra một loạt các ngôn ngữ mà cậu ấy biết từ Java, C#,  Ruby, Python, Javascript, NodeJS. Xong tôi mới hỏi rằng mày có deep learning cái nào không, thì cậu ấy trả lời một cách lưỡng lự, tao cần học mọi thứ rất nhanh vì đó là nhu cầu của dự án. Câu chuyện cứ tiếp diễn và tôi hỏi rằng trong tương lai gần nhất định hướng của mày là như thế nào. Cậu ta trả lời rằng tao thì muốn trở thành một Fullstack Developer nhưng giờ cậu ta đang lưỡng lự giữa việc chọn NodeJS hay Ruby để phát triển bản thân, rồi cậu ta hỏi mày thì nghĩ thế nào.

Đấy chính là cái ý tưởng của tôi để viết bài blog này.

Đây có lẽ là câu hỏi kinh điển nhất mọi thời đại, và làm đau đầu hầu hết developer, cũng như đó là nỗi sợ hãi của các bạn mới khi không biết chọn ai bỏ ai. Độ kinh dị của nó không chỉ dừng lại ở mức NodeJS hay Ruby mà còn xa hơn thế, là sự lựa chọn giữa các ngôn ngữ với nhau NodeJS hay Ruby, Java hay C#, hay thậm chí là giữa các Framework anh em trong cùng stack như Spring hay Play, Flask vs Django, Rails vs Sinatra, hoặc thâm chí có những cậu so sánh những thứ chả bao giờ liên quan với nhau, ví dụ như iOS vs Android.

Điều mà người ta sợ nhất có lẽ là chọn sai ngôn ngữ để rồi bỏ phí bao nhiêu thời gian theo học một thứ mà họ có thể sẽ không dùng tới hoặc thâm chí là không dùng được. Những câu hỏi này cứ lặp đi lặp lại, như một vòng luẩn quẩn. Nhưng biết hỏi ai đây? Google chăng. Google để rồi ra một mớ hỗn độn, nào là lời lẽ của các fanboy chê cái này bỏ cái kia, rồi thì là ý kiến chủ quan của một số ông nội làm một thứ lâu năm ưa cái này chuộng cái kia để rồi mãi không tìm được câu trả lời.

Vấn đề là, nếu không muốn rơi vào cái ma trận đầy mê hoặc đó thì đừng hỏi nữaTại sao?

Quyết định là của bạn, đại đa số các quyết định đưa ra là do cảm quan của con người dựa trên những sự thật mà mình biết được và ý kiến của những người xung quanh. Nhưng ý kiến của người xung quanh chỉ ảnh hưởng một phần nhỏ đến quyết định của bạn, đại đa số quyết định được đưa ra sẽ dựa trên niềm tin vào bạn có dựa trên sự thật mà bạn biết.

Những sự thật đó có thể là gì?

Đơn giản, thử nghĩ xem bạn thoải mái khi sử dụng ngôn ngữ nào nhất. Không bao giờ có trường hợp bạn cảm thấy hai thứ đều như nhau, chỉ là do bạn không thể tự làm chủ bản thân và đang đánh lừa mình thôi, lấy giấy bút ra là liệt kê những lợi ích của từng thứ và chắc chắc bạn sẽ thấy được mình muốn cái nào.

Thà giết lầm còn hơn bỏ sót. Đừng giới hạn bản thân mình! 

Sẽ chẳng có ai cấm việc bạn biết nhiều thứ, như cậu bạn tôi nói chuyện bên trên chẳng hạn. Đối với nghành này mà nói, việc bạn biết nhiều thứ sẽ chẳng bao giờ có hại, mà nó còn mang lại cho bạn vô vàn cơ hội.

Rồi bạn sẽ nghĩ, biết nhiều nhưng làm sao biết phải áp dụng cho trường hợp nào? Tất nhiên, bạn phải biết lựa chọn đúng công cụ cho từng công việc.

Khi bạn biết nhiều thứ, cố gắng hiểu sâu hết mức có thể từ đó bạn sẽ biết được ưu điểm cũng như nhược điểm của từng thứ. Nếu trả lời được câu hỏi đó chắc chắn bạn sẽ trả lời được câu hỏi khi nào dùng cái gì, và dùng như thế nào?

Ví dụ đơn giản dễ hiểu như chẳng ai dùng máy bay để đi câu cá cả, hay nếu bạn đi cắm trại ở bờ hồ và muốn câu cá, bạn có xe để đi tới hồ nhưng lại chẳng chuẩn bị thuyền để ra hồ câu, vậy không phải là bạn đang giới hạn bản thân mình chỉ được câu cá ở gần bờ hồ rồi sao, chỗ đấy ít cá bơi vào mà có thì cũng chỉ toàn cá nhỏ, tại sao không chuẩn bị thuyền để có thể ra giữa hồ câu, cá ngoài đó nhiều hơn cũng như cá to hơn.

Trong series Giới thiệu về Microservices tôi cũng có đề cập đến việc sử dụng nhiều technical stack khác nhau cho mỗi microservice, đấy nếu bạn biết rõ mọi thứ, bạn cũng có thể kết hợp hết chúng lại để tạo nên một kiến trúc hiệu quả trong từng trường hợp.

Sẽ có những bạn vào loại, tao biết thứ này rồi, tại sao lại cần phải thay đổi?

Nói chung, mọi thứ đều có giới hạn của nó, sẽ có ngày thứ bạn biết không thể giải quyết vấn đề của bạn một cách tối ưu được, vì thế thay đổi là điều tất yếu.

Nhưng nhớ rằng thay đổi quá sớm, bạn sẽ không có cơ hội để hiểu rõ được thứ mà bạn đang dùng, thay đổi quá trễ, bạn sẽ trở nên già cỗi, ngại thay đổi, sợ cái mới.

Nhưng làm sao để biết ngôn ngữ khác giải quyết được vấn đề mà chúng ta đang mắc phải?

Lại nói một lần nữa, khi bạn hiểu sâu, tức là bạn biết ưu nhược điểm của nó. Rất nhiều bài viết về việc so sánh giữa các ngôn ngữ trên mạng, đó có thể là benchmark, có thể là quan điểm cá nhân. Hãy đọc theo một cách khách quan nhất có thể, đừng bao giờ sa đà theo kiểu ba phải, gió chiều nào theo chiều ấy, nay thì tung hô, mai thì dè bỉu. Loại developer này cũng khá nhiều trên mạng, hãy cẩn thận.

Đấy, lựa chọn là ở các bạn, tất cả mọi sự so sánh đều là khập khiểng, cũng như mọi ý kiến đều là chủ quan, hãy dựa chọn cho mình cái mình tin là đúng, chỉ có niềm tin là thứ có thể duy trì đam mê cho bạn, nếu bạn mất niềm tin, bạn sẽ chết theo cả nghĩa đen và nghĩa bóng.

Một người bạn của tôi cũng đã từng có một bài blog khá châm biếm về việc lựa chọn nên học ngôn ngữ nào, cậu Tôi đi code dạo giật tít khá là bố đời C# là ngôn ngữ tuyệt vời nhất. Java, PHP, C, C++, Ruby chỉ toàn là thứ rẻ tiền, gạch đá cũng không ít mà quan điểm thì cũng khá hay. Các bạn có thể tìm xem.

Cảm ơn và chào tạm biệt. From The Coffee House with love.

keepcalmandlearnon

Advertisements

6 thoughts on “Ngày mai nên đi học Ruby hay NodeJS

Bình luận

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s