Nghề lập trình 05
1. NGHỀ LẬP TRÌNH
Lập trình viên Full-stack
Lập trình viên web Full-stack là lập trình viên có khả năng làm việc với cả web Front-end và
web Back-end.
Tại sao lại cần có những lập trình viên web Full-stack? Bởi vì, mặc dù chúng ta có thể phân chia
việc lập trình web thành 2 mảng là Front-end và Back-end, nhưng 2 mảng này đều liên quan
rất chặt chẽ với nhau và có ảnh hưởng đến nhau. Đặc biệt, theo xu hướng phát triển hiện nay
của mảng web Front-end thì càng ngày các lập trình viên Front-end càng cần có những kỹ
năng gần giống với kỹ năng của lập trình viên Back-end. Có nghĩa là, lập trình viên web
Front-end cũng cần thành thạo thiết kế kiến trúc, thành thạo các giao thức web, thành thạo
bảo mật… và thậm chí là biết các kiến thức phía Back-end.
Ngoài ra, một lập trình viên web Full-stack có rất nhiều thuận lợi khi phát triển các các ứng
dụng web, so với các lập trình viên chỉ chuyên biệt một mảng là Front-end hoặc Back-end. Lập
trình viên web Full-stack hiểu rõ hơn về tổng quan của hệ thống, biết các thành phần được
liên kết với nhau như thế nào, biết cách để các bên giao tiếp với nhau tốt nhất, biết cách để tối
ưu toàn bộ hệ thống… và nhất là hiểu được công việc của các bên còn lại.
Trong thực tế, vẫn có nhiều tranh cãi xung quanh thuật ngữ “Lập trình viên Full-stack”. Lí do
chính là bởi vì có nhiều định nghĩa khác nhau và cách hiểu khác nhau về “Full-stack”. Trong
khuôn khổ của bài viết này, chúng ta cũng không đặt tham vọng thống nhất được các định
nghĩa và cách hiểu. Ngược lại, chúng ta sẽ phân tích ngữ nghĩa để hiểu hơn về một loại công
việc mới, thay vì tập trung vào các tranh cãi.
Stack – có nghĩa là một tập hợp các công nghệ khác nhau được sử dụng để phát triển và vận
hành một sản phẩm. Chẳng hạn, MySQL – PHP – Linux – Apache – Laravel – Docker – Angular
có thể được xem là một stack, tất nhiên là có thể thêm nhiều công nghệ khác vào trong stack
này, tuỳ thuộc vào nhu cầu của từng sản phẩm. MongoDB – Java – Spring MVC – Tomcat –
Linux – ReactJS – Docker – AWS cũng có thể là một stack, và cũng có thể thêm nhiều công
nghệ khác vào nữa. Các công nghệ này còn được gọi là các tầng (layer) trong một stack. Như
vậy, một lập trình viên Full-stack là một lập trình viên có thể làm việc với tất cả các layer của
một stack cụ thể. Không có một lập trình viên Full-stack chung chung, mà cần phải chỉ rõ là
“stack” nào (stack đó bao gồm những layer nào).
Vậy còn mức độ thuần thục của các công nghệ này thì như thế nào? Tất nhiên, nếu một lập
trình viên thành thạo được tất cả các công nghệ trong một stack là điều quá tốt, nhưng điều
này thường chỉ đạt được với những lập trình viên khá nhiều năm kinh nghiệm làm việc trong
cùng một stack. Đối với các lập trình viên ít kinh nghiệm hơn, thông thường họ sẽ có thế
mạnh hơn ở một số công nghệ nào đó, còn các công nghệ còn lại thì họ đủ để dùng để tạo
ra sản phẩm. Khi gắn bó với một stack đủ lâu thì mức độ thành thạo của các công nghệ cũng
tăng dần lên theo thời gian và thậm chí là lập trình viên đó có thể mở rộng thêm các công
nghệ của một stack hoặc bắt đầu làm việc trên các stack khác.