Font End, Back End và Full Stack là những công việc cần được thực hiện để phát triển website. Bất kể ai muốn tìm hiểu về lập trình web, trước tiên phải hiểu rõ các khái niệm này. Một khi đã nắm được rõ, người muốn trở thành lập trình viên sẽ biết bắt đầu học từ đâu, người phụ trách xây dựng web cho doanh nghiệp sẽ hiểu các trình tự để phối hợp và giám sát với đơn vị được thuê làm web,…
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ả những gì người dùng thấy khi điều hướng trên Internet, từ font chữ, màu sắc cho tới menu xổ xuống và các thanh trượt, đều là sự kết hợp của HTML, CSS, JavaScript và được điều khiển bởi trình duyệt máy tính.
Các lập trình viên front-end chịu trách nhiệm cho giao diện của trang web và kiến trúc trải nghiệm của người dùng. Để đạt được các mục tiêu trên, các lập trình viên front-end cần phải thông thạo và làm quen với:
- 3 ngôn ngữ lập trình chính: HTML, CSS và JavaScript
- Các framework: Bootstrap, Foundation, Backbone, AngularJS và EmberJS, nhằm đảm bảo nội dung luôn hiển thị tốt trên mọi thiết bị khác nhau.
- Các thư viện: jQuery và LESS, nhằm đó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.
- Ngoài ra, rất nhiều công việc dành cho lập trình viên front-end còn 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.
Các lập trình viên front-end sẽ 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, wireframe thành 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 được 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 đến các thiết kế UI (giao diện – User Interface) và UX (trải nghiệm – User Experience). Một điều quan trọng là họ có khả năng hợp tác với các team khác trong công ty để hiểu rõ mục đích cụ thể, nhu cầu và cơ hội, từ đó thực hiện theo các chỉ dẫn.
“Tôi là một kỹ thuật viên, nhưng cũng là một người có mắt thẩm mỹ, có thể điều khiển 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. một lập trình viên front-end với 8 năm kinh nghiệm cho biết. “Tôi rất thích tạo nên một ảnh hưởng tới giao diện người dùng, các khía cạnh của một app hoặc trang web mà người dùng tương tác và nhìn thấy.”
Nhìn chung, một lập trình viên front-end sẽ chịu trách nhiệm thiết kế nội thất của một ngôi nhà đã được xây dựng bởi 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 marketing sản phẩm tại Apptix khi nói về hai nhóm lập trình viên front-end và back-end mà ông giám sát, ông cho rằng: “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 họ thực sự có thể tận dụng khả năng sáng tạo của mình.”
Tất cả mọi thứ bạn đang thấy trên một website hiện tại đều có thể đã được thực hiện bởi 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 cho bạn khi bạn click qua mỗi trang.
BACK-END
Đ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ệ của những thành phần trên, mà sức mạnh của chúng cho phép phần giao diện người dùng của trang web có thể tồn tại đượ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.
- 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, 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 các 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 thích phát triển back-end bởi tôi yêu thích điều khiển các dữ liệu,” JP Toto, 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 quan trọng trong việc trao đổi dữ liệu giữa các thiết bị di động, các websitevà 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 người dùng cảm thấy hữu ích là một phần thỏa mãn trong công việc của tôi.”
Khi bạn điều hướng tới các trang của một website bất kỳ, các máy chủ của website đó 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 hiện tại. Quá trình đó là kết quả công việc của lập trình viên back-end. Ngoài ra, nếu bạn mua một sản phẩm, đăng ký một khóa học, đăng ký tạo tài khoản, tìm kiếm một nội dung, bình luận một bài viết, việc lưu trữ các thông tin cá nhân của bạn cho mỗi lần bạn quay trở lại website đó 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.
FULL STACK
Thông thường sẽ không có một sự phân biệt rõ ràng nào 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 trong thời buổi kinh tế hiện nay,”Greg Matranga, Giám đốc marketing sản phẩm tại Apptix cho biết. “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.”
Khái niệm lập trình viên full stack “nắm giữ vai trò chủ chốt” đã được phổ biến cách đây 4 năm bởi bộ phận kỹ thuật của Facebook, với tưởng 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 cả front end và back end.
Làm việc chuyên nghiệp trên cả server side và client side sẽ mở ra nhiều cơ hội và cả những thách thức. Federico Ulfo, một lập trình viên full stack tại công ty Grovo cho biết: “Để 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 đó thì cần 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 đó thì bất kỳ ai cũng có thể thành công. Tôi đang nói về việc cần chuẩn bị các thành phần nguyên liệu khác nhau để tạo ra một thứ gì đó thực sự tốt.”
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ủ, 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 cho sự phức tạp ngày càng tăng của lập trình full stack, sau đây là ví dụ về những yêu cầu mà một full stack cần phải có trong vài năm trước 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. Ảnh: TechCrunch
Yêu cầu kỹ năng cho một lập trình viên full stack hiện nay. Ảnh: TechCrunch
Bất kể là sử dụng công cụ cụ thể 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 sẽ có kiến thức ở mọi cấp độ để website có thể hoạt động: Cài đặt và thiết lập cấu hình các máy chủ Linux, viết các API server-side, 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 các 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.
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 người dùng của một website, 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ó.