Ruby và Golang hẳn là hai cái tên không còn mấy xa lạ với các bạn lập trình viên. Nhưng liệu bạn đã hiểu rõ hết về hai ngôn ngữ này? Hãy cùng nghe anh Phạm Bá Đạt (chuyên về Ruby) và anh Nguyễn Hà Nhân (chuyên về Golang) hiện đều là Engineering Manager tại Money Forward Vietnam chia sẻ những góc nhìn rõ hơn cũng như cơ hội nghề nghiệp của hai ngôn ngữ này nhé!

VietnamWorks inTECH xin chào anh Nhân và anh Đạt, đầu tiên thì hai anh có thể chia sẻ về việc Golang và Ruby được ứng dụng như thế nào trong các dự án và có thể nêu vài ví dụ thực tiễn tại Money Forward được không?

Anh Đạt - Ngôn ngữ Ruby và Framework Ruby on Rails đang được sử dụng để phát triển các sản phẩm ứng dụng Web hoặc các API servers. Hiện Money Forward sử dụng Ruby + Rails cho cả các dự án B2C (ứng dụng quản lý tài chính cá nhân Money Forward ME, ứng dụng review và tối ưu các chi phí cố định… ) và B2B (ứng dụng cho các doanh nghiệp nhỏ và vừa để quản lý thuế / hóa đơn / thông tin bảo hiểm xã hội …) cho thị trường Nhật Bản.

Anh Nhân - Golang được thiết kế với một trình biên dịch có khả năng quản lý bộ nhớ thông minh, giúp ứng dụng được tối ưu với hiệu năng cao. Có khả năng xử lý đa luồng, thực hiện nhiều tác vụ đồng thời. Cú pháp đơn giản, dễ hiểu, dễ viết, nhất quán, . . . giúp các lập trình viên Go làm việc với nhau dễ dàng. Hệ sinh thái cũng đang phát triển mạnh mẽ. Các thư viện và tài liệu liên tục được cập nhật và đổi mới. Vì vậy, Go đang được sử dụng rộng rãi bởi rất nhiều team tại Money Forward để phát triển nhiều dự án khác nhau, từ các ứng dụng web, ứng dụng phân tích dữ liệu, ứng dụng về AI... Golang cũng được dùng tốt cho những tác vụ về DevOps nữa.

Có một điểm đặc biệt nữa là mặc dù trong các dự án Ruby và Go thường sẽ được lựa chọn và phát triển 1 cách độc lập. Tuy nhiên chúng cũng có thể được sử dụng chung trong 1 dự án triển khai theo mô hình microservice, khi đó mỗi 1 ngôn ngữ có thể sử dụng để phát triển 1 hoặc nhiều services con. Chẳng hạn có những trường hợp sử dụng Ruby để phát triển dự án trong giai đoạn đầu (MVP) cho kịp tiến độ và phục vụ 1 lượng khách hàng ban đầu; sau đó sẽ triển khai phát triển các phần công việc, tính năng mới sử dụng Go để tăng tính mở rộng, xử lý nhanh, đồng thời nhiều yêu cầu.

Theo VietnamWorks inTECH được biết, ngôn ngữ Ruby đã khá lâu đời và cho đến nay đã có nhiều ngôn ngữ khác ví dụ như Golang, vậy theo anh Đạt đâu là những ưu điểm mà vẫn còn nhiều doanh nghiệp trọng dụng Ruby như vậy? 

Theo anh thì có nhiều yếu tố giúp cho ngôn ngữ Ruby vẫn được lựa chọn để phát triển các ứng dụng Web, API servers như:

  • Ngôn ngữ Ruby có cú pháp đơn giản, dễ đọc, dễ hiểu và gần gũi với các developer

  • Cộng đồng lớn, có nhiều thư viện hữu ích cho quá trình phát triển ứng dụng Web, từ đó giúp giảm thời gian phát triển của ứng dụng.

  • Nhà phát hành Ruby, Rails luôn cập nhật và phát triển các tính năng mới thường xuyên, giúp cải thiện tốc độ và cung cấp nhiều tiện ích cho đội phát triển hơn.

Các anh có thể chia sẻ thêm cho các bạn về cơ hội nghề nghiệp và mức lương của hai ngôn ngữ này được chứ?      

Anh Nhân - Đầu tiên là về mức lương của lập trình viên Golang thì đa phần sẽ tăng dựa theo từng cấp bậc, phụ thuộc vào nhiều yếu tố như khả năng sử dụng tiếng Anh, đóng góp vào công việc, trưởng thành trong vai trò và sẵn sàng đảm nhận các nhiệm vụ khó khăn hơn hoặc quản lý nhóm. Về cơ hội nghề nghiệp anh thấy hiện tại thị trường còn rất rộng mở. Đặc biệt ở Money Forward, rất nhiều dự án đang sử dụng Golang như là ngôn ngữ nền tảng để phát triển ứng dụng. Dù là những dự án mới, hay đang phát triển, nhu cầu tuyển dụng lập trình viên Golang luôn trong tình trạng…hối hả. Chỉ riêng ở chi nhánh Việt Nam, theo như anh biết thì Money Forward đang có kế hoạch tuyển khoảng vài chục lập trình viên Go, cho rất nhiều cấp độ khác nhau.

 Anh Nguyễn Hà Nhân - Engineering Manager tại Money Forward Vietnam

Anh Đạt - Về Ruby thì anh thấy cơ hội nghề nghiệp vẫn khá lớn, đặc biệt trong các công ty Nhật Bản như Money Forward, hoặc các công ty startup, outsource cho thị trường Nhật Bản, và một số công ty ở thị trường Châu Âu, Mỹ. Ngoài ra, RoR là ngôn ngữ có pool ứng viên khá nhỏ trên thị trường (pool nhỏ đồng nghĩa với việc số người làm RoR trên thị trường khá ít so với các ngôn ngữ khác như Java, PHP…) Vì vậy, để thu hút nhân tài, mức lương bình quân và benefit các công ty offer cho vị trí RoR thường nhỉnh hơn so với các vị trí khác. Về lộ trình thăng tiến đa số đều có thể phát triển theo hai hướng tùy theo mong muốn phát triển của bạn.

- Hướng 1: đi sâu về technical, trở thành Tech Lead/Tech Architect.

- Hướng 2: đi theo hướng phát triển về quản lý con người. 

Trong quá trình tuyển dụng lập trình viên của hai ngôn ngữ này, anh Nhân và anh Đạt có gặp phải những khó khăn nào không?

Anh Nhân - Nói về Golang thì với tư cách là một trong những thành viên đời đầu, anh rất vui khi được chứng kiến công ty ngày càng phát triển, dự án ngày càng nhiều, nhân sự ngày càng tăng. Tuy nhiên, vấn đề về tuyển dụng đôi lúc thật sự rất gian nan. Ngoài những khó khăn của bộ phận tuyển dụng như nhân sự có kinh nghiệm cấp cao (senior) khan hiếm, . . . thì đối với anh, việc khó khăn nhất chính là tìm được nhân sự phù hợp theo yêu cầu của từng dự án tại những thời điểm khác nhau; phải làm được việc mà vẫn đảm bảo chất lượng, phải có văn hoá ứng xử phù hợp với cty, khả năng giao tiếp, kỹ năng lãnh đạo đội nhóm, . . . Nan giải lắm em.

Anh Đạt - Về phía Ruby thì số lượng lập trình viên đã giảm so với vài năm trước, có thể là do các dự án Ruby đã giảm (không còn nhiều startup sử dụng Ruby, có nhiều ngôn ngữ mới ra được ưa chuộng hơn, . . .). Chất lượng của các lập trình viên cũng chưa tốt, đặc biệt các level cao (senior, principal): các bạn có nhiều kinh nghiệm làm việc, nhưng không chú trọng việc đào sâu tìm hiểu ngôn ngữ, framework; các bạn chưa chủ động tìm tòi, học hỏi các kiến thức, kỹ thuật mới và ứng dụng vào dự án, . . .

Với những bạn trẻ mới theo đuổi lập trình bằng ngôn ngữ Ruby và Golang, các anh có thể gợi ý các bạn nên bắt đầu từ đâu hay các anh có lời khuyên nào cho các bạn không?

Anh Nhân - Theo anh Go là một ngôn ngữ đơn giản, nó đơn giản đến nỗi nhàm chán. Mọi thứ đều phải được lập trình viên Go viết ra một cách cẩn thận và tỉ mỉ, từ hàm đơn giản tới hàm phức tạp nhất. Nhờ vậy mà nó khiến Go thú vị, vì mình hiểu được tường tận tại sao một chức năng lại chạy, và nó chạy như thế nào. Tuy nhiên điều đó lại có thể là cản trở với các bạn trẻ, vì các bạn không được kiên trì đến thế… Với những ngôn ngữ khác, thư viện hỗ trợ có rất nhiều, các bạn chỉ cần dùng thôi. Thư viện cho Go thì cũng đang được cộng đồng cung cấp nhiều hơn, nhưng chủ yếu vẫn phải dựa vào lập trình viên tự viết. Anh đã thật sự chứng kiến một vài bạn trẻ từ bỏ Go mà qua ngôn ngữ khác vì…lười viết code nhiều như thế. Nói tóm lại, đối với các bạn trẻ, để theo đuổi Golang, các bạn cần sự kiên trì, sự cẩn thận tỉ mỉ, sự tò mò tìm hiểu.

Anh Đạt - Đối với các bạn đang theo đuổi Ruby có thể bắt đầu học về syntax overview, sau đó học về framework Rails để hiểu cách xây dựng một ứng dụng Web/API server. Ngoài ra các bạn cũng cần học qua về HTML, CSS, JS để có thể làm được các công việc phía FrontEnd, học thêm về database, cấu trúc dữ liệu và giải thuật, lập trình hướng đối tượng. Sau khi các bạn nắm được các ý chính của Ruby, Rails, database, HTML & CSS & JS, các bạn có thể thử tự làm một dự án cá nhân nhỏ như blog cá nhân, ứng dụng quản lý sách … Khi các bạn có vài năm kinh nghiệm, các bạn có thể học thêm về server, cách setup & deploy ứng dụng Ruby, Rails lên clouds (AWS, heroku, VPS…), cách setup CI/CD, monitor ứng dụng sau khi deploy …

Anh Phạm Bá Đạt - Engineering Manager tại Money Forward Vietnam

Với những bạn mong muốn chuyển từ ngôn ngữ khác sang hai ngôn ngữ Ruby và Golang thì không biết các bạn sẽ có gặp những khó khăn nào không? 

Anh Đạt - Theo anh thì ngôn ngữ Ruby, và framework Rails khá dễ học và dễ hiểu, nên các bạn chuyển đổi từ ngôn ngữ khác qua thường không gặp nhiều vấn đề. Nhưng các bạn cần chú ý học và tìm hiểu sâu về cách thức hoạt động, các tính năng của Ruby, Rails để có thể áp dụng tốt vào công việc. Trong quá trình tìm hiểu/làm việc với Ruby, Rails nếu có gì không hiểu thì các bạn nên hỏi, thảo luận với các bạn devs khác trong team/công ty để có thể hiểu rõ vấn đề hơn.

Anh Nhân - Còn Golang thì nếu các bạn đã có nền tảng ngôn ngữ lập trình khác thì việc chuyển qua anh nghĩ không khó lắm đâu. Nếu có thì anh sẽ thành thật chỉ ra một điểm khiến các bạn khó khăn, đó là cơ hội làm việc cùng với mức lương mong muốn. Có rất nhiều bạn khi bắt đầu chuyển đổi qua Golang thì đã rất thành thạo một ngôn ngữ khác, và có thể còn đang làm một vị trí cao ở công ty hiện tại, thì khi nộp đơn vào MFV, các bạn cũng mong muốn một mức lương rất cao. Tuy nhiên ở MFV chúng mình trả lương theo sự cống hiến, nếu kỹ năng Go của ứng viên chưa có, hoặc còn yếu, nhưng vẫn mong đợi được trả lương cao như ở công ty cũ thì . . . dễ ra dắt xe đi về lắm.

Để kết thúc, hai anh có thể chia sẻ thêm để nhanh phát triển trong ngành thì các bạn nên phát triển những kiến thức hay kỹ năng mềm nào khác?

Anh Đạt - Với những có định hướng theo Backend, thì các bạn cần học thêm về infrastructure (như setup & deploy trên cloud AWS, setup CI/CD, auto scale; setup & monitor ứng dụng sau deploy…), về database (design, performance tuning…) Các bạn có thể học thêm 1 JS library (ReactJS/VueJS) và framework tương ứng để có thể làm việc trên cả Backend & Frontend như 1 full stack developer. Các kỹ năng khác như tiếng Anh, làm việc nhóm, phân tích & giải quyết vấn đề, . . . cũng cần được bổ sung và trau dồi để bạn có thể làm việc tốt trong team, dự án và công ty.

Anh Nhân - Anh nghĩ các bạn sẽ cần siêng năng, tò mò, ham học hỏi, kỹ năng giao tiếp cũng khá quan trọng và đặc biệt phải có tâm huyết với những gì mình làm, cởi mở với những điều mới. Đặc biệt MFV còn có chương trình đào tạo và phát triển (Learning & Development), đây sẽ là công cụ đắc lực để bạn được phát triển bản thân hơn thông qua các workshop kỹ năng cứng và mềm, các buổi sharing thảo luận sâu văn hoá công ty, cung cấp các khóa học online, cung cấp sách/tài liệu theo nhu cầu, . . .

Đôi nét về anh Phạm Bá Đạt và anh Nguyễn Hà Nhân:

VietnamWorks inTECH