Trang chủ » Kho tài liệu » Lập Trình với Zend Framework


Cập nhật ngày: 6/21/2017 4:09:19 PM

Giải mã về 3 loại lập trình web: Front-End vs Back-End vs Full Stack



Bài viết được dịch từ trang web Udacity

Bạn mở một tab trình duyệt mới, gõ vào một địa chỉ URL, và nhấn enter. Trang web được tải ngay lập tức. Nó gần như làm bạn nín thở bởi layout gọn gàng, các trang được xây dựng tốt, và hình ảnh rất ấn tượng.

Người chịu trách nhiệm cho mọi phần của trải nghiệm đó là ai? Đó chính là các nhà phát triển web.


Tính đến tháng 11 năm 2014, thế giới Internet chứa hơn 680 triệu trang web. Và đang ngày càng tăng lên. Hôm nay chúng ta sẽ nói về một số công việc đối với các lập trình viên web, những người chịu trách nhiệm cho việc lập trình, xây dựng, phân tích, và duy trì tất cả những trang web đó.

Các trang web giờ đây là một thành phần quan trọng cho bất kỳ doanh nghiệp nào để có thể cạnh tranh trên thị trường. Các xu hướng phát triển web và những hiệu ứng tốt nhất thay đổi hầu như theo mùa, vì vậy các lập trình viên không bao giờ lo thiếu việc.

Làm thế nào để phân biệt Front-End, Back-End và Full-Stack trong phát triển web?
Làm thế nào để phân biệt Front-End, Back-End và Full-Stack trong phát triển web?

Nhưng làm thế nào để biết chính xác có những loại công việc phát triển web nào để tìm kiếm và đào tạo? Nếu bạn dạo quanh các trang web việc làm hoặc duyệt qua các khóa học trực tuyến, bạn có thể biết rằng phát triển web được chia nhỏ thành 3 mối quan tâm chính: front-end, back-end, và full stack. 

Nếu bạn đã biết qua HTML, JavaScript, hoặc có thể một chút Python, nhưng bạn không chắc chắn lắm về con đường để đi tiếp, thì bài viết này là dành cho bạn.

Các khóa học lập trình tại TechMaster sẽ cung cấp cho bạn những kỹ năng thực tế nhất để có thể xin được việc làm. Với nhiều mô hình đào tạo như online, offline, và FlipLearning...

Lập trình viên Front-End

Phần front-end của một trang web là phần tương tác với người dùng. Tất cả mọi thứ bạn nhìn thấy khi điều hướng trên Internet, từ các font chữ, màu sắc cho tới các menu xổ xuống và các thanh trượt, là một sự kết hợp của HTML, CSS, và JavaScript được điều khiển bởi trình duyệt máy tính của bạn.

Các kỹ năng và công cụ

Các lập trình viên front-end chịu trách nhiệm cho giao diện của một trang web và kiến trúc những trải nghiệm của người dùng. Để thực hiện được những mục tiêu đó, các lập trình viên front-end phải tinh thông 3 ngôn ngữ chính: HTML, CSS, và ngôn ngữ lập trình JavaScript. Ngoài việc thông thạo các ngôn ngữ đó, các lập trình viên front-end cần phải làm quen với các framework như Bootstrap, Foundation, Backbone, AngularJS, và EmberJS, để đảm bảo nội dung luôn hiển thị tốt trên mọi thiết bị khác nhau, và các thư viện như jQuery và LESS, đóng gói code vào trong một hình thức giúp tiết kiệm thời gian và hữu dụng hơn. Rất nhiều công việc dành cho lập trình viên front-end cũng yêu cầu kinh nghiệm với Ajax, một kỹ thuật được sử dụng rộng rãi bằng cách dùng JavaScript để cho phép các trang load một cách tự động bằng cách tải dữ liệu máy chủ ở phần background.

Một lập trình viên front-end là người chịu trách nhiệm thiết kế nội thất của ngôi nhà đã được xây dựng bởi một lập trình viên back-end.

Sử dụng những công cụ này, các lập trình viên front-end làm việc chặt chẽ với các designer hoặc nhà phân tích trải nghiệm người dùng để biến những mockup, hoặc wireframe, từ phát triển tới sản phẩm thực tế. Các lập trình viên front-end giỏi cũng có thể xác định chính xác các vấn đề cụ thể trong trải nghiệm của người dùng, cung cấp các khuyến nghị và giải pháp hệ thống hóa để ảnh hưởng đến thiết kế đó. Một điều quan trọng là họ có khả năng hợp tác với những nhóm khác trong công ty để hiểu rõ mục đích cụ thể, nhu cầu và cơ hội, và sau đó thực hiện theo những chỉ dẫn đó.

Công việc này bao gồm rất nhiều trách nhiệm, nhưng nó là việc rất đáng để làm. "Tôi là một người làm kỹ thuật, nhưng vẫn là một người có thị giác, và có thể thao tác với những gì chúng ta thấy và tương tác với các nền tảng kỹ thuật số thông qua việc đánh dấu và viết mã một cách tự nhiên," Mikey Ilagan là một lập trình viên front-end với 8 năm kinh nghiệm cho biết. "Vì điều đó, tôi rất thích có khả năng tạo ra một ảnh hưởng lên giao diện người dùng, các khía cạnh của một ứng dụng hoặc trang web mà người dùng tương tác và nhìn thấy."

Nói chung, một lập trình viên front-end chịu trách nhiệm cho thiết kế nội thất của một ngôi nhà đã được xây dựng bởi một lập trình viên back-end. Các hương vị và phong cách trang trí được quyết định bởi chủ nhà. Theo Greg Matranga, Giám đốc tiếp thị sản phẩm tại Apptix, nói về cả hai nhóm lập trình viên front-end và back-end mà ông giám sát, "Các lập trình viên làm việc trên front-end đôi khi hào hứng nhiều hơn về những gì họ làm bởi vì họ thực sự có thể tận dụng khả năng sáng tạo của mình."

Ví dụ

Tất cả mọi thứ bạn đang nhìn thấy trên trang web này ngay bây giờ đều có thể được thực hiện bởi một lập trình viên front-end. Một designer tạo ra logo và đồ họa, một photographer cung cấp hình ảnh, một copywriter viết nội dung. Nhưng một lập trình viên front-end kết hợp tất cả những mảnh ghép đó lại và chuyển nó thành ngôn ngữ web, và tạo ra trải nghiệm mà bạn có khi duyệt qua mỗi trang. Để lấy một ví dụ cụ thể, khi bạn cuộn con chuột lên xuống ở trang chủ của website Udacity. Bạn có để ý thấy rằng chữ "U" biến mất rồi xuất hiện trở lại không? Đó là tác phẩm của một lập trình viên front-end.

Lập trình viên Back-End

Thế nhưng điều gì giúp phần front-end của một trang web có thể hoạt động được? Tất cả dữ liệu sẽ được lưu trữ ở đâu? Đó là phần việc của back end. Phần back end của một trang web bao gồm một máy chủ, một ứng dụng, và một cơ sở dữ liệu. Một lập trình viên back-end xây dựng và duy trì công nghệ mà sức mạnh của những thành phần đó, cho phép phần giao diện người dùng của trang web có thể tồn tại được.

Các kỹ năng và công cụ

Để khiến cho máy chủ, ứng dụng, và cơ sở dữ liệu có thể giao tiếp được với nhau, các lập trình viên back-end sử dụng các ngôn ngữ server-side như PHP, Ruby, Python, Java, và .Net để xây dựng một ứng dụng, và các công cụ như MySQL, Oracle, và SQL Server để tìm kiếm, lưu trữ, hoặc thay đổi dữ liệu và phục vụ trở lại tới người dùng trong phần front-end. Các công việc tuyển dụng lập trình viên back-end cũng thường yêu cầu kinh nghiệm về các framework PHP như Zend, Symfony, và CakePHP; có kinh nghiệm với các phần mềm quản lý phiên bản như SVN, CVS, hoặc Git; và kinh nghiệm với Linux trong việc phát triển và triển khai hệ thống.

Các lập trình viên back-end sử dụng những công cụ này để tạo ra hoặc đóng góp vào các ứng dụng web với code sạch, portable, và được viết tài liệu chu đáo. Nhưng trước khi viết code, họ cần phối hợp với bên liên quan về nghiệp vụ để hiểu những nhu cầu cụ thể, sau đó chuyển thành những yêu cầu kỹ thuật và đưa ra các giải pháp hiệu quả nhất cho việc kiến trúc công nghệ.

"Tôi luôn ưa thích việc phát triển back-end bởi vì tôi yêu công việc thao tác với dữ liệu," JP Toto là một lập trình viên back-end lâu năm, hiện đang làm việc tại công ty Wildbit cho biết. "Thời gian gần đây, các thư viện API public và private đã trở thành một phần thiết yếu của việc trao đổi dữ liệu giữa các thiết bị di động, các trang web, và các hệ thống được kết nối khác. Việc làm ra các API khiến cộng đồng cảm thấy hữu ích là một phần tạo ra sự thỏa mãn trong công việc của tôi."

Ví dụ

Khi bạn điều hướng tới trang web này, các máy chủ của Udacity gửi thông tin tới máy tính hoặc thiết bị di động của bạn, rồi chúng được chuyển thành trang web mà bạn đang nhìn thấy ngay bây giờ. Quá trình đó là kết quả công việc của một lập trình viên back-end. Ngoài ra, nếu bạn ghi danh vào một khóa học của Udacity hoặc một khóa nanodegree, việc lưu trữ các thông tin cá nhân của bạn - và thực tế là mỗi lần bạn quay trở lại trang web và đăng nhập, thì dữ liệu của bạn sẽ được gọi trở lại - đó là một phần công việc của lập trình viên back-end.

Lập trình viên Full Stack

Thường thì không có một sự phân biệt rõ ràng trắng đen giữa phát triển front-end và back-end. "Các lập trình viên front-end thường cần phải tìm hiểu thêm những kỹ năng back-end, và ngược lại, đặc biệt là trong giai đoạn kinh tế hiện nay," Matranga nói. "Các lập trình viên cần phải có nhiều kỹ năng khác nhau và có kiến thức tổng hợp."

Lập trình viên full stack là những người đa năng.

Khái niệm lập trình viên full stack là vai trò đã được phổ biến cách đây 4 năm bởi bộ phận kỹ thuật của Facebook. Ý tưởng là một lập trình viên full stack có thể làm việc liên chức năng trên "stack" công nghệ, tức là cả front end lẫn back end. 

"Làm việc chuyên nghiệp trên cả server side và client side mở ra nhiều cơ hội," Federico Ulfo, một lập trình viên full stack tại công ty Grovo nói. Nhưng, dĩ nhiên, phát triển full stack không phải là không có những thách thức của nó. "Để làm ra một món ăn ngon, bạn có thể giỏi nấu hoặc giỏi nướng, nhưng để làm chủ cả hai kỹ năng này thì cần có thời gian và kinh nghiệm. Và tôi không nói về việc cứ làm theo một công thức nào đó, vì bất kỳ ai cũng có thể làm như vậy. Tôi đang nói về việc có các thành phần nguyên liệu để chuẩn bị cho một cái gì đó thực sự tốt."

Các kỹ năng và công cụ

Các lập trình viên full stack làm việc giống như các lập trình viên back-end ở phía máy chủ của lập trình web, nhưng họ có thể cũng thành thạo các ngôn ngữ front-end để điều khiển nội dung trông như thế nào ở phía giao diện của trang web. Họ là những người đa năng.

Để minh họa sự phức tạp ngày càng tăng của phát triển full stack, sau đây là một ví dụ về những yêu cầu mà một full stack phải có trong vài năm về trước, và so sánh với yêu cầu hiện nay:

Yêu cầu kỹ năng cho một lập trình viên full stack vài năm trước đây.
Yêu cầu kỹ năng cho một lập trình viên full stack vài năm trước đây.
Yêu cầu kỹ năng cho một lập trình viên full stack hiện nay.
Yêu cầu kỹ năng cho một lập trình viên full stack hiện nay.

Bất kể là sử dụng công cụ xác định nào, tùy thuộc vào dự án và khách hàng, các lập trình viên full stack nên có kiến thức ở mọi cấp độ về cách web hoạt động: cài đặt và cấu hình các máy chủ Linux, viết các API server-side, nhảy vào phần JavaScript client-side của một ứng dụng, và cũng cần có "con mắt thẩm mỹ" với CSS.

Sử dụng những công cụ này, các lập trình viên full stack cần có khả năng ngay lập tức xác định trách nhiệm của client-side hay server-side, và trình bày rõ ràng về mặt ưu nhược điểm của các giải pháp khác nhau.

Ví dụ

Một lập trình viên full stack sẽ chịu trách nhiệm cho toàn bộ luồng trải nghiệm của bạn với bài viết blog này, từ thời gian tải và bố cục cho tới tính tương tác và cấu trúc của nó.

Điểm mấu chốt

Phát triển web có rất nhiều mặt khác nhau. Nhưng không quan trọng về kiểu phát triển nào mà bạn đang theo đuổi, các kỹ năng mềm như chú ý đến chi tiết, khả năng học hỏi nhanh chóng, khả năng giải quyết vấn đề một cách hiệu quả, và khả năng giao tiếp sẽ luôn giúp bổ trợ rất nhiều cho những kỹ năng cứng nêu trên.

Thật hạnh phúc khi chưa bao giờ có thời điểm nào tốt hơn để theo đuổi nghề phát triển web như lúc này. Số lượng việc làm của các lập trình viên web được dự đoán sẽ tăng 20% trong giai đoạn 10 năm từ 2012-2022, nhanh hơn tỉ lệ trung bình của tất cả các ngành nghề khác.

PHP vs Node.js - Cuộc chiến giữa hai công nghệ lập trình webPHP vs Node.js - Cuộc chiến giữa hai công nghệ lập trình web Hồ Sỹ HùngBLOG HOMEMột lập trình viên nên biết 6 công nghệ cần học trong 2013Một lập trình viên nên biết 6 công nghệ cần học trong 2013 Techmaster team
Hồ Sỹ Hùng

Hùng là lập trình viên có nhiều năm kinh nghiệm trong lĩnh vực: C#, VB.NET, ASP.NET, SQL Server, MVC, Entity Framework… và đồng thời cũng là admin của blog http://vinacode.net/. Bạn có thể liên hệ với anh qua email hungpm2000[at]gmail.com