Những kỹ năng cần thiết cho một lập trình viên Ruby on Rails

Lời mở đầu

Các ứng dụng Web hiện tại đã trở thành một phần không thể thiếu trong thời đại công nghệ, ở cái thời mà mọi thông tin đều có thể dễ dàng đưa hết lên Web. Hầu hết mọi dịch vụ, mọi lĩnh vực trong đời sống đều hiện hữu trên mạng, hệ thống Internet đã giúp phổ cập nó tới tất cả mọi người trên toàn thế giới. Sử dụng các ứng dụng Web thì rất dễ dàng, tuy nhiên khi tạo ra nó lại có những khó khăn nhất định, như là việc bảo vệ những mã nguồn Web, hay việc làm sao cho ứng dụng của mình trở nên đặc biệt mà vẫn đảm bảo có thể nhanh chóng tạo ra nó. Hiện nay trên mạng cũng có hàng trăm mã và hàng triệu thử nghiệm đằng sau một ứng dụng Web đã và đang chạy thành công.

Khi mà Ruby on Rails ra đời, nó giúp cho nhà phát triển có thể nhanh chóng phát triển một ứng dụng Web trong một thời gian ngắn về việc tận dụng triệt để việc tái sử dụng mã. Đồng thời Ruby on Rails cũng cung cấp sẵn vô cùng nhiều thư viện cho các tính năng cần thiết do cộng đồng cùng phát triển. Tất cả đều góp phần giúp việc phát triển ứng dụng được dễ dàng hơn, thuận tiện hơn và có thể nhanh chóng đưa sản phẩm đến người dùng hơn.

Mình cũng đang là một nhà phát triển ứng dụng Web bằng Ruby on Rails. Sau một thời gian sử dụng và trải nghiệm nó, mình cũng nhận ra được và muốn chia sẻ về một số kỹ năng cần thiết cho một lập trình viên Ruby on Rails.

1. Kỹ năng mềm

Kỹ năng sử dụng Tiếng Anh

Đây là kỹ năng cần thiết cho mọi lập trình viên và gần như không thể thiếu. Lý do đơn giản nhất để giải thích cho việc này là hầu hết các tài liệu lập trình đều bằng tiếng Anh. Và lập trình viên khi làm việc không chỉ cần mỗi kỹ năng viết mã là đủ, mà họ còn cần cả kỹ năng đọc tài liệu nữa. Bên cạnh đó, khi làm lập trình viên, có những lúc bạn sẽ cần làm việc với một nhóm gồm những người đến từ các quốc gia khác nhau, và khi đó thì tiếng Anh thường sẽ là ngôn ngữ chung mà hầu hết mọi người đều biết.

Cách tiếp cận vấn đề

Trong nhiều trường hợp, khi mà bạn không biết một vấn đề gì đó, bạn hãy thừa nhận nó với đồng nghiệp của mình. Luôn luôn sẽ có người sẵn lòng giúp bạn nếu bạn hỏi, hoặc là họ có thể trả lời bạn sau nếu bạn đang bận. Khi chờ đợi, bạn có thể tìm kiếm thêm vài thông tin về vấn đề của bạn, có thể bạn và đồng nghiệp sẽ có thêm một cuộc trao đổi thú vị về vấn đề đó.

Khả năng học hỏi

Học, tất nhiên rồi. Cho dù bạn là con nhà nòi, thì bạn cũng không thể biết hết mọi phương pháp lập trình từ lúc mới sinh ra. Bạn cần thời gian để trau dồi kiến thức của mình. Hãy thử đọc một vài bài viết, hoặc bài báo về một kỹ thuật nào đó bạn quan tâm, và có thể thử nghiệm với các Pet Project. Biết đâu sau này bạn sẽ cần đến nó, ít nhất khi đã làm qua rồi bạn sẽ nhanh chóng áp dụng được nó hơn ^^

Khả năng thích ứng

Tôi đang nói tới một vấn đề khá là quan trọng khi làm việc. Cho dù bạn làm ở công ty hay tổ chức nào, hay cho dù là freelancer, ít nhất bạn cũng cần nhận thức rõ môi trường mà bạn làm việc, đồng thời làm quen với nó. Nếu như nơi bạn làm là công sở với rất nhiều đồng nghiệp, bạn sẽ cần làm quen với một vài người. Tin tôi đi, ai cũng được, không cần người đó phải giỏi giang để có thể giúp đỡ bạn khi làm việc, nhưng ít nhất hãy có cho mình 1 vài đồng nghiệp đáng tin cậy để bạn có thể chia sẻ các vấn đề trong công việc lẫn cuộc sống. Cho dù bạn vẫn phải tự làm mọi thứ, nhưng ít nhất bạn sẽ cảm thấy công việc của bạn không nhàm chán khi có ai đó để trao đổi.

Khả năng tìm kiếm thông tin

Một lập trình viên có lẽ sẽ cần chú trọng vào khả năng đọc hơn là khả năng viết. Thực ra, khi mà bạn viết mã, dù ít hay nhiều cũng sẽ bị ảnh hưởng từ phong cách lập trình của nhiều người đi trước. Nhưng cái quan trọng là bạn cần biết cách để tìm ra những thứ mình cần ở đâu. Tìm ra những thứ bạn cần cho công việc của mình có thể khiến bạn tốn không ít thời gian. Tuy nhiên, khi mà bạn đã biết cách đặt câu hỏi, thì bạn có thể dễ dàng tìm ra chúng. Thông tin nó vẫn ở đó, quan trọng là ai tìm ra trước. Khi bạn hiểu đúng vấn đề, bạn sẽ luôn biết cách để tìm ra được những thứ quan trọng trước những người khác.

2. Kỹ năng lập trình Ruby

Cú pháp ngôn ngữ

Để nắm vững được cái này sẽ không tốn của bạn quá nhiều thời gian. Thật ra tôi rất ưa thích một cách tiếp cận khi lập trình. Quan trọng là bạn hiểu vấn đề thế nào. Chứ khi bạn đã quá rõ ràng về nó rồi thì dùng ngôn ngữ gì không quan trọng. Tất cả chỉ là cú pháp, và bạn chỉ đơn giản là học cách sử dụng nó mà thôi. Giống như khi bạn muốn chơi một trò chơi, bạn cần biết luật chơi trước đã. Tối thiểu bạn cần biết cách viết một vòng lặp, hay câu lệnh điều kiện, các kiểu dữ liệu, cách tạo ra một class hay module .....

Lập trình hướng đối tượng

Ruby là ngôn ngữ gần như tuyệt đối là đối tượng, có lẽ chỉ trừ một khái niệm về Block mà thôi. Nên khi lập trình Ruby thì bạn cũng sẽ cần phải biết về lập trình hướng đối tượng. Bạn cần nắm vững các khái niệm và cách để áp dụng vào dự án Ruby của bạn. Các khái niệm về tính kế thừa, đóng gói, đa hình hay trừu tượng là cơ bản của lập trình hướng đối tượng. Ngoài ra bạn cũng cần biết thêm một số vấn đề khác của Ruby như so sánh Proc, Block, Lambda, hay include và extend Module.

3. Kỹ năng sử dụng Ruby on Rails

Mô hình MVC

Ruby on Rails là framework được phát triển dựa trên mô hình MVC. Bạn cần biết mỗi thành phần chịu trách nhiệm cho việc gì và làm thế nào để cấu trúc ứng dụng Web để làm sao khi nhìn vào đó bạn biết được đâu là nơi để controller, model hay view.

Template view ERB/HAML/SLIM

Mặc dù mặc định Ruby on Rails đã có sẵn template ERB để có thể dễ dàng tạo ra các file view cần thiết cho ứng dụng, bạn có thể nhúng mã Ruby vào đó. Tuy nhiên, hiện tay cũng có sẵn các template khác như HAML hoặc Slim để bạn có thể nhanh chóng viết các file view cho ứng dụng hơn.

ActiveRecord

Một thư viện giúp bạn có thể tương tác với dữ liệu tốt hơn. Thông thường dữ liệu khi lưu trữ trên cơ sở dữ liệu thì sẽ ở dạng các bảng dữ liệu rời rạc. Để có thể lấy được dữ liệu mình cần, bạn có thể mất khá nhiều công sức để truy vấn. Đôi khi bạn cũng không chắc chắn được dữ liệu bạn đưa vào có hợp lệ không. Hoặc là bạn muốn biết được tương quan giữa các bảng dữ liệu một cách trực quan nhất. Khi bạn lập trình với Ruby on Rails, tất cả các thứ bạn cần là ActiveRecord

Kiểm tra đơn vị với thư viện RSpec

Khi lập trình, bạn không thể không biết đến việc viết mã kiểm tra đơn vị. Nó đảm bảo cho mã nguồn của bạn luôn được kiểm tra ở tất cả các mức nhỏ nhất trước khi được đem vào kiểm thử thực sự hay sử dụng chính thức. Có rất nhiều loại thư viện hỗ trợ cho việc kiểm thử đơn vị, tuy nhiên RSpec là một trong những thư viện nổi bật nhất với rất nhiều tùy chọn và các phần hỗ trợ khác.

Khởi tạo ứng dụng mới

Không chỉ là chạy câu lệnh rails new, bạn sẽ cần làm nhiều thứ hơn. Chẳng hạn bạn cần biết cách lựa chọn các thư viện cần thiết cho dự án, bổ sung các cấu hình mà bạn mong muốn. Hoặc là tạo ra một số khuôn mẫu chung để sau mỗi khi cần tạo ứng dụng mới thì bạn đã có sẵn để sử dụng.

Cơ bản về REST và các phương thức HTTP

Hầu hết các ứng dụng Web hiện nay đều sử dụng REST như một phương pháp quản lý tài nguyên phổ biến, với các thao tác chính là Create(tạo tài nguyên), Read(đọc thông tin tài nguyên), Update(cập nhật thông tin), Delete(xóa tài nguyên). Bên cạnh đó, vì ứng dụng bạn làm với Ruby on Rails là trên nền Web nên bạn cũng cần nắm được cơ bản về các phương thức HTTP như POST, GET, ....

4. Kỹ năng lập trình Front-end

Tạo khung giao diện với HTML/HTML5

Bạn sẽ cần biết cách viết mã HTML và phiên bản mới nhất của nó là HTML5 để có thể tạo ra khung giao diện của ứng dụng Web. Nó bao gồm các thành phần chính có thể hiển thị lên ứng dụng của bạn.

Tùy chỉnh giao diện với CSS/CSS3

Nếu bạn chỉ dùng HTML/HTML5 thì ứng dụng của bạn chỉ là những thành phần cơ bản, thêm một chút CSS/CSS3 sẽ giúp cho ứng dụng của bạn được đẹp và bắt mắt hơn. Ít ra nó sẽ giúp người dùng cảm thấy thích thú hơn với ứng dụng của bạn.

Nâng cao chức năng với JavaScript

Một thành phần khác không thể thiếu để giúp ứng dụng của bạn có thể hoạt động trôi chảy được. Những hành động diễn ra dưới nền, hoặc những thay đổi giúp trang Web không cần tốn thời gian tải lại bằng công nghệ AJAX, hoặc việc áp dụng các thư viện như jQuery, các cú pháp mới trong ES6 đều giúp bạn có lợi thế cạnh tranh khi tìm việc.

5. Kỹ năng thao tác cơ sở dữ liệu

Thao tác cơ bản với SQL

Cho dù công việc của bạn hầu như chỉ gắn liền với ActiveRecord, thì bạn cũng sẽ có lúc cần kiểm tra lại truy vấn thực tế như thế nào để biết câu truy vấn của bạn có ổn không. Đôi khi bạn có thể áp dụng để tránh được lỗi truy vấn mà ai cũng từng ít nhất gặp 1 lần là N+1 Query

Nắm vững một trong các hệ quản trị cơ sở dữ liệu: PostgreSQL, MySQL

Việc của bạn là cần biết cài đặt môi trường để tương tác với cơ sở dữ liệu trên máy cá nhân để kiểm tra các truy vấn.

Nắm được khái niệm NoSQL

Mặc dù hầu hết ứng dụng ngày nay đều sử dụng cơ sở dữ liệu dạng quan hệ (SQL), tuy nhiên đôi khi có thể bạn sẽ cần biết cách vận dụng loại cơ sở dữ liệu không quan hệ (NoSQL). Chẳng hạn như khi bạn cần làm việc với Background Job. Thường khi các thư viện resque hoặc sidekiq sẽ hay được sử dụng, và các thư viện này đều hoạt động dựa trên Redis là một dạng cơ sở dữ liệu NoSQL.

6. Kỹ năng sử dụng công cụ hỗ trợ

Nắm cơ bản cách sử dụng Git

Một lập trình viên cần biết cách để quản lý mã nguồn của mình. Hiện nay GIT là công cụ phổ biến nhất để làm điều này. Không chỉ giúp bạn quản lý các phiên bản mã nguồn, nó còn giúp bạn dễ dàng làm việc cùng nhiều người khác trong nhóm hơn.

Biết sử dụng một số công cụ, thư viện dùng để triển khai ứng dụng

Khi bạn hầu như đã xong hết các bước phát triển ứng dụng rồi, bạn sẽ cần làm một việc. Đó là triển khai ứng dụng của bạn lên Internet. Bạn sẽ cần biết cách để sử dụng thư viện triển khai của Rubycapistrano. Ngoài ra bạn cần biết sử dụng cơ bản các công cụ như nginx, heroku ...

Biết sử dụng một số công cụ quản lý công việc

Bạn sẽ cần một công cụ nào đó để quản lý các công việc mình làm khi lập trình. Có thể là một tính năng, hoặc một bug cần sửa. Hiện nay bạn có thể dùng Trello, Asana, Backlog hoặc một thư viện quản lý dạng mã nguồn mở là Redmine.

Kết luận

Trên đây chỉ là một số kỹ năng cần thiết mà tôi nghĩ sẽ cần cho một lập trình viên Ruby on Rails. Cảm ơn các bạn đã đọc bài viết ^^

Tài liệu tham khảo


All Rights Reserved