Trở thành một lập trình viên Full-stack
Lập trình viên full-stack, rào cản gia nhập ngành công nghiệp phát triển web quan trọng đối với mỗi một lập trình viên.
Tính chất năng động của ngành công nghiệp này thường xuyên đặt ra những yêu cầu như công cụ và ngôn ngữ lập trình “tốt nhất tiếp theo” là gì?
Việc một lập trình viên chỉ phải biết một ngôn ngữ lập trình duy nhất hoặc chỉ biết một công đoạn lập trình cụ thể đã đi vào dĩ vãng. Ngày nay, các lập trình viên phải biết hàng loạt công nghệ trên nhiều nền tảng khác nhau để làm tốt công việc của mình.
Một lập trình viên full-stack nghĩa là gì?
Thuật ngữ full-stack nghĩa được dùng cho developer làm việc được cả back-end và front-end.
Cụ thể hơn, nó có nghĩa là những lập trình viên có thể làm việc với cơ sở dữ liệu, PHP, HTML, CSS, JavaScript và tất cả mọi thứ ở giữa, và cả những công việc như chuyển đổi thiết kế Photoshop thành code front-end.
Một lập trình viên full-stack không cần thiết phải là bậc thầy trong tất cả các lĩnh vực công nghệ, bởi vì đó là điều gần như không thể, anh ta chỉ cần cảm thấy thoải mái khi làm việc với những công nghệ đó, vậy là quá đủ.
Ý nghĩa của full-stack là gì vào năm 2000 và vào thời điểm hiện tại?
Năm 2000 là một khoảng thời gian cách đây khá lâu, vào năm đó ngôn ngữ lập trình PHP 4.0 ra đời. Khi đó, một nhà phát triển web giỏi chỉ biết một chút về HTML, CSS và một vài thủ tục PHP, bởi vì OOP chuẩn không tồn tại cho đến khi phiên bản 5.0 ra đời.
Vào thời điểm đó, ngôn ngữ lập trình LAMP (Linux – Apache – MySQL – Perl/PHP) là một cơn sốt bởi vì có cực kì ít và thậm chí là không có sản phẩm thay thế. Trong những năm đầu thế kỉ 21, nếu như ai đó sử dụng phiên bản này thì họ được coi hoặc là lạc giáo hoặc là một phù thủy công nghệ. Ngày nay điều đó không còn được nhắc đến và cười nhạo nữa.
Vì vậy, chúng ta hãy cố gắng làm rõ và phân loại những công nghệ stacks chính mà một lập trình viên full-stack cần phải biết
Quản trị hệ thống:
- Linux và chương trình cơ bản chạy trong môi trường shell
- Điện toán đám mây: Amazon, Rackspace,…
- Xử lý hậu cảnh: Gearman, Redis
- Tìm kiếm: Elasticsearch, Sphinx, Solr
- Bộ nhớ đệm: Varnish, Memcached, APC / OpCache
- Monitoring: Nagios
Linux có mặt ở khắp nơi trong thế giới Internet. Đó là hệ điều hành chiếm vai trò quan trọng nhất trong phát triển web (không bỏ qua .NET). Ngoài ra, lập trình viên full-stack nên biết cloud hosting, Amazon/ Rackspace hoặc các nhà cung cấp khác và APIs của nó hoạt động như thế nào.
Tìm kiếm là một phần không thể thiếu của các website. Một nhà phát triển nên biết cách thiết lập và sử dụng máy chủ tìm kiếm như Sphinx or Elasticsearch.
Bộ nhớ đệm cũng rất quan trọng, có những bộ nhớ đệm như Varnish, reverse proxy, Memcached và opcode. Lập trình viên cần biết những công nghệ này là gì và cách sử dụng của chúng.
Công cụ phát triển web:
- Version control: Git, Mercurial, SVN
- Ảo hóa: VirtualBox, Vagrant, Docker
Ngày nay, kể cả đối với lập trình viên solo, sẽ là không thể chấp nhận được nếu họ không sử dụng các công cụ phát triển web như Git, Mercurial, SVN.
Với công cụ ảo hóa, việc có các môi trường phát triển tách biệt cho mỗi dự án cơ bản thực sự rất cần thiết, và việc đó rất dễ dàng thiết lập với các công cụ VirtualBox và Vagrant, Docker.
Nếu bạn muốn làm việc với Vagrant bạn cũng cần biết cú phát cơ bản của Ruby và shell script.
Công nghệ back-end:
- Web servers: Apache, Nginx
- Ngôn ngữ lập trình: PHP, NodeJS, Ruby
- Cơ sở dữ liệu: MySQL, MongoDB, Cassandra, Redis, SQL / JSON nói chung
Apache and Nginx là các quy tắc trong phát triển web. Một lập trình viên full-stack nên biết cài đặt các ứng dụng này và phục vụ nội dung cho website của mình.
PHP là ngôn ngữ cần phải tinh thông ở trình độ cao. NodeJS, Ruby cũng là những ngôn ngữ nên biết.
Ngoài các web server và ngôn ngữ lập trình, quản lí cơ sở dữ liệu cũng là một yêu cầu đối với lập trình viên full-stack.
Các cơ sở dữ liệu quan hệ (MySQL, PostgreSQL) và không quan hệ (MongoDB, Redis or Cassandra) có những điểm khác biệt mà lập trình viên full-stack cần biết, song song với việc biết các cú pháp của XML / JSON.
Công nghệ front-end:
- HTML / HTML5: Semantic web
- CSS / CSS3: LESS, SASS, Media Queries
- JavaScript: jQuery, AngularJS, Knockout, etc.
- Tương thích giữa các trình duyệt
- Thiết kế Responsive
- AJAX, JSON, XML, WebSocket
Ở đây có một điều khá thú vị. Nếu bạn muốn giới thiệu website của mình, bạn nên biết những kiến thức này và thủ thuật của chúng.
JavaScript là một câu chuyện vui vào những ngày đầu, nhưng giờ nó đã phát triển và trở thành ngôn ngữ lập trình phổ biến và mạnh mẽ nhất hiện nay. Các phương pháp phát triển và framework mới xuất hiện mỗi ngày, như MVC, MVVM, MVP, Angular, Knockout, Ember,…
Lập trình viên cũng nên biết cách giao tiếp với back-end thông qua AJAX or WebSockets.
Thiết kế:
- Chuyển đổi thiết kế website sang mã front-end
- UI
- UX
Ngoài công nghệ front-end, một lập trình viên full-stack cần hiểu những gì là có thể và những gì là không thể với những hạn chế của HTML / CSS / Javascript và chuyển đổi thiết kế (Photoshop/Illustrator files) cho phù hợp.
Với rất nhiều các công nghệ đã nêu, một nhà phát triển có thể sẽ cần biết thêm về Ruby hoặc các thư viện JavaScripts cụ thể, nhưng tất cả ngôn ngữ này đều kết nối với nhau bằng cách này hay cách khác.
Ví dụ nếu bạn muốn cài đặt Vagrant, bạn cần phải biết cú pháp của Ruby, hoặc nếu bạn muốn điều hành DOM elements, jQuery là một công nghệ bạn nên biết.
Một công nghệ khác cũng xứng đáng được đề cập đến ở đây là Công nghệ di động. Đây là một nền công nghệ rất năng động và có quan hệ mật thiết với phát triển web
- iOS
- Android
- Hybrid: PhoneGap, Appcelerator
Một trong những chênh lệch lớn nhất ngày nay là sự chênh lệch giữa phát triển web và phát triển di động, nhưng khoảng cách giữa chúng đang được thu hẹp nhanh chóng.
Có tốt hơn nếu trở thành một lập trình viên full-stack?
Trở thành một lập trình viên full-stack có nghĩa là bạn phải cởi mở với các công nghệ mới, chịu nhúng tay vào làm và có kiến thức về quá trình một ứng dụng web được xây dựng như thế nào từ khâu thiết kế đến khi nó trở thành sản phẩm hoàn thiện.
Ý tưởng về một “lập trình viên full-stack” không phải là về sự nhuần nhuyễn trong mỗi công nghệ, bởi vì sự tồn tại của chuyên môn là có lí do của nó. Nó sẽ là cần thiết hơn nếu bạn có kiến thức về một trong những lĩnh vực trên, và có kĩ năng giao tiếp thông minh với thành viên trong nhóm và có khả năng đánh giá tình hình tốt.
Trong tương lai, lập trình viên full-stack sẽ đóng một vai trò quan trọng trong phát triển web, đặc biệt khi mà các phương pháp phát triển như DevOps đang trở thành một phần cần thiết trong những công ty phát triển phần mềm, nơi mà ranh giới giữa nhà phát triển code và nhà quản trị chịu trách nhiệm triển khai và thiết lập các code đó đang được thu hẹp hơn mỗi ngày.ư
Đăng Kí Ngay Khóa Học lập Trình Web Full-stack Tại VTC Academy để nắm bắt cơ hội việc làm lương cao.