FrontEnd, BackEnd hay Fullstack: Hướng đi nào cho anh em?


Lập trình web là một mảng nhỏ trong phát triển phần mềm. Tuy nhiên, đây lại là một hướng đi khá tiềm năng khi mà nhu cầu sử dụng các dịch vụ web của người dùng ngày càng nhiều.

nen-chon-frontend-backend-hay-fullstack (1)

Nhưng chính anh em lập trình viên web nhiều khi lại cảm thấy khó định hướng được hướng đi đúng đắn, vì bản thân lập trình web lại chia làm 3 hướng nhỏ khác nữa.

Hiện tại thì có 3 hướng đi cho anh em đó là: Front-End, Back-End và FullStack. Vậy thì cụ thể mỗi hướng đi này có đặc điểm gì, phù hợp với những ai và có tiềm năng ra sao thì mình sẽ cùng anh em tìm hiểu ngay sau đây nhé.

#1. Front-End là gì?

Một trang web (web app – phổ biến hiện nay) thường được chia thành hai phần:

  1. Phần tương tác trực tiếp với người dùng gọi là Front-End (hay còn gọi là giao diện người dùng, những gì mà bạn nhìn thấy trước mắt).
  2. Và phần Back-End phía sau giúp xử lý các logic nghiệp vụ, nó là những dòng code phức tạp.

nen-chon-frontend-backend-hay-fullstack (1)

Hai phần này của một trang web sẽ tương tác và trao đổi dữ liệu với nhau thông qua một khái niệm gọi là Web APIs (cụ thể như thế nào thì mình sẽ chia sẻ bên dưới).

Front có nghĩa là “phía trước”, tức là những gì người dùng (end user) tương tác trực tiếp (ví dụ như các nút bấm, thanh tìm kiếm, giao diện, hiệu ứng…)

Lập trình viên Front-End phải học những gì?

  1. Ngôn ngữ lập trình: JavaScript, HTML, CSS, JavaScript Framework (AngularJS, ReactJS, Bootstrap…)
  2. Kỹ năng: UI/UX, trải nghiệm người dùng, sử dụng các công cụ quản lý mã nguồn, khả năng chuyển đổi công nghệ (do công nghệ Front-End thường nhanh thay đổi theo năm tháng)

=> Nói chung thì lập trình viên Front-end chủ yếu tập trung vào việc xây dựng giao diện ứng dụng người dùng sao cho thận thiện, tương tác tốt với hệ thống Backend.


#2. Back-End là gì?

nen-chon-frontend-backend-hay-fullstack (2)

Back có nghĩa là “phía sau” và Back-End có nghĩa là hệ thống phía sau. Như mình đã chia sẻ bên trên thì hệ thống web hiện đại sẽ gồm có hai phần tách biệt là giao diện người dùng và hệ thống phía sau tương tác qua Web APIs.

Vậy một câu hỏi mà nhiều người đọc đến đây sẽ thắc mắc là “Hệ thống phía sau là gì?”

Vâng ! Hệ thống thường sẽ bao gồm nhiều thành phần khác nhau. Ở đây đơn giản nhất hệ thống back-end thường bao gồm server, database (cơ sở dữ liệu), source code (mã nguồn) và APIs.

Chính vì vậy lập trình viên back-end thường sẽ phải học khá nhiều để có thể đáp ứng được công việc.

Lập trình viên Back-End phải học những gì?

  1. Ngôn ngữ lập trình: Java, Python, C++, PHP và các Framework tương ứng như Spring, Django, Laravel…
  2. Database: MySQL, MariaDB, MongoDB…
  3. Server: Apache, Nginx, IIS servers…
  4. API: REST, SOAP…
  5. Khả năng tối ưu hệ thống, tối ưu truy vấn, bảo mật thông tin…

Nếu như trải nghiệm người dùng thấy bố cục trang web có hợp lý không, màu sắc có hài hòa không là nhiệm vụ của lập trình viên front-end và đội ngũ thiết kế thì việc người dùng sử dụng trang web có an toàn không, ổn định không và mượt mà hay không lại là trách nhiệm của các lập trình viên back-end.

#3. FullStack là gì?

nen-chon-frontend-backend-hay-fullstack (3)

Okay, đọc đến đây chắc có lẽ các bạn cũng đã hình dung được thế nào là front-end, thế nào là back-end, cũng như một lập trình viên front-end hay back-end phải học và làm những gì rồi phải không ạ.

Vậy nếu một lập trình viên có khả năng làm cả front-end và back-end thì gọi là gì?

Vâng, Fullstack chính là cái tên cho những lập trình viên “đa di năng” như vậy.

Thực ra mình thấy không nhiều lập trình viên có đủ sức để làm cả front-end lẫn back-end trong cùng một dự án (trừ khi dự án thiếu người hoặc yêu cầu nghiệp vụ không quá phức tạp).

Tại sao mình lại nói như vậy?

Xuất phát từ việc chuyên môn hóa thì ai cũng muốn tập trung vào thế mạnh của mình, ngoài ra thì còn yếu tố sức khỏe và thời gian nhiều khi không cho phép việc chúng ta làm quá nhiều việc một lúc.

Vì vậy “danh xưng” Fullstack theo mình nghĩ là dùng cho các lập trình viên có kinh nghiệm, có khả năng làm được cả front-end lẫn back-end chứ không nhất thiết là người làm cả 2 vị trí này một lúc trong một thời gian dài.

Vậy cụ thể một lập trình viên fullstack sẽ cần những kỹ năng gì?

+ Về mặt kỹ thuật: Như mình đã đề cập ở trên thì lập trình viên Fullstack sẽ làm được cả front-end lẫn back-end nên họ phải nắm được cả công nghệ front-end và back-end. Cụ thể anh em có thể xem lại ở các mục trước.

+ Khả năng phân chia và tổ chức công việc: Làm cả front-end và back-end thì rõ ràng là khối lượng công việc sẽ nhiều hơn, chính vì vậy một lập trình viên Fullstack phải biết cách phân chia và tổ chức công việc khoa học nếu không sẽ bị “ngợp”.

+ Khả năng quản lý team, làm việc nhóm: Nhiều người nghĩ làm Fullstack thì đâu cần làm việc với người khác, một mình cân hết luôn.

Nhưng không phải thế đâu anh em à, thực ra lập trình viên fullstack thường sẽ là Teamlead. Người này sẽ chịu trách nhiệm quản lý và phân công công việc cho các thành viên khác trong team. Hỗ trợ họ và khi các thành viên gặp vấn đề họ sẽ “nhảy” vào giúp đỡ.

#4. Bạn sẽ chọn hướng đi nào?

Có lẽ qua những gì mình đề cập bên trên thì anh em cũng phần nào hình dung được công việc cũng như những gì mà các lập trình viên front-end, back-end hay fullstack phải học và làm rồi đúng không?

Theo cá nhân mình (dựa trên kinh nghiệm và những người mình quen) thì lập trình viên front-end thường sẽ phù hợp với những bạn có tư duy không gian tốt, yêu thích các công việc về thiết kế, trải nghiệm giao diện người dùng.

Trong khi đó, lập trình viên back-end thường phù hợp với những bạn có tư duy logic tốt, yêu thích các công việc liên quan đến hệ thống, tối ưu hệ thống.

Còn lập trình viên fullstack mình thấy ban đầu họ thường làm back-end. Sau khi đã làm back-end có kinh nghiệm họ tìm hiểu thêm về front-end để hiểu được cách một trang web, hệ thống làm việc từ a tới z.

Thực sự thì chọn hướng đi nào không quá quan trọng, quan trọng là chuyên môn của bạn đến mức thế nào thôi?

Fullstack chưa chắc lương đã cao hơn front-end hoặc back-end nếu chuyên môn không vững, thậm chí theo thống kê lương back-end thường cao hơn front-end nhưng mình thấy nhiều lập trình viên front-end “cứng” lương có khi còn cao hơn lập trình viên back-end nữa.

#5. Lời Kết

Như vậy là các bạn đã hiểu hơn về front-end, back-end và fullstack là gì rồi đúng không?

Hi vọng là qua bài viết ngắn này sẽ giúp anh em nào đang có định hướng theo nghề lập trình web thì sẽ chọn được hướng đi phù hợp hơn.

Anh em nào mà thấy còn mông lung thì theo mình cứ chọn front-end học trước. Tại sao lại như vậy?

Đơn giản là vì làm front-end thì anh em sẽ dễ dàng tạo ra được những sản phẩm đầu tay hơn, từ đó giúp anh em có động lực học tiếp hơn so với học back-end.

Vậy thôi, chúc anh em thành công với lựa chọn của mình. Hẹn gặp lại anh em trong các bài viết tiếp theo nhé !

Đọc thêm:


CTV: Nguyễn Đức Cảnh – Blogchiasekienthuc.com

Bài viết đạt: 5/5 sao - (Có 1 lượt đánh giá)
Note: Bài viết này hữu ích với bạn chứ? Đừng quên đánh giá bài viết, like và chia sẻ cho bạn bè và người thân của bạn nhé !

Administrator: Kiên Nguyễn Blog

Có một câu nói của người Nhật mà mình rất thích đó là " Người khác làm được thì mình cũng làm được ". Chính vì thế mà hãy theo đuổi đam mê, thành công sẽ theo đuổi bạn ! Nếu như bạn đang gặp khó khăn và cần sự trợ giúp thì hãy comment phía bên dưới mỗi bài viết để nhận được sự hỗ trợ từ cộng đồng Blog Chia Sẻ Kiến Thức nhé.

Một vài lưu ý trước khi comment :

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Tất cả các comment của các bạn sẽ được giải đáp trong vòng 48h (thường vào buổi tối)!
Không được sử dụng từ khóa trong ô 'Name', bạn hãy dùng tên thật hoặc Nickname của bạn !
Không dẫn link sang trang web/blog khác. Xem quy định comment tại đây. Thank All!

Leave a Reply

Your email address will not be published. Required fields are marked *