Tại sao tôi lại nói là nghề làm Web mà không phải thiết kế Web, lập trình Web hay chung chung như phát triển Web? Vì theo tôi làm Web là một nghề sử dụng rất nhiều kỹ năng và có một chỗ đứng vô cùng quan trọng ngày nay. Từ thiết kế, lập trình, kiểm thử, thậm chí là DevOps... Làm Web có thể coi là một nghề hoàn chỉnh như bao nghề khác và là một nghề được săn đón trong thế kỷ 21. Mọi thứ bạn truy cập hàng ngày như Facebook, Google, Youtube, Netflix, Thiên Địa... đều có bóng dáng của mấy anh làm Web trong đó. Vì nó là nghề nghiệp, cho nên cũng có rất nhiều cấp độ khác nhau. Từ mấy chú lon ton học HTML/CSS cho tới các đại cao thủ xây dựng lên Google, Facebook... Theo tôi thì có nhiều quá trời đất các cấp độ, mà kể ra thì cũng miên man cho nên thay vì liệt kê các cấp độ đó, tôi sẽ cho bạn biết những thứ mà người làm Web có thể học, biết và làm được. Từ cấp độ bé bé xinh xinh như Blog cá nhân cho tới những thứ hoành tá tràng như Google hay Facebook.

  • Nếu bạn thấy bài viết này nhảm thì vui lòng Stop ở đây nhé. Tôi có sở thích là viết cho vui, nên nếu bạn không cảm thấy vui thì đừng đọc tiếp.

Những thứ mà ai cũng cần học.

Thật vậy, làm Web cũng cần một bộ kỹ năng nhập môn giống như khi đi học Đại Học ta luôn phải học môn Triết Học hay Tư Tưởng Hồ Chí Minh vậy. Chẳng cần kể thì ai cũng biết đó là HTML/CSS. Bài học vỡ lòng đầu tiên của tôi về Web chính là 2 ông anh già này. Coi bộ vậy chứ 2 ông anh này cũng khó nhằn phết. Các bạn có thể nhớ cú pháp hoặc 1 đống thẻ, rồi thuộc tính này nọ nhưng để làm ra được 1 cái giao diện đáng tiền cũng khá là mệt. Riêng tôi thì tôi bó tay với 2 ông này, vì thẩm mỹ của tôi có hạn, cộng thêm tư duy hình khối cũng kém - nên ngày xưa học đại số điểm luôn cao hơn hình học.

Web Design - Thiết kế Web không hề dễ.

Trong nghề làm Web thì có 1 nghề là Web Designer. Thật vậy, nghề này nghe thì có vẻ chẳng đáng tiền nhưng thực tế lại hái ra rất nhiều tiền. Chỉ cần biết PTS, AI, HTML/CSS là bạn đã có thể trở thành Web Designer. Nhưng trở thành Web Designer giỏi và kiếm được nhiều tiền thì cũng chẳng dễ. Bạn sẽ luôn luôn phải Update các trào lưu thiết kế, rồi UI/UX... nhắc tới cái đám đó là 1 thằng kém thẩm mỹ như tôi đã thấy mình không có duyên rồi.

Javascript - Ngôn ngữ thống trị thế giới.

Có người nói làm Web thì phải biết Javascript, thực ra ông bạn đồng nghiệp của tôi làm Web Designer 10 năm rồi, chỉ biết dùng jQuery chứ không thực sự hiểu Javascript. Nên nói muốn làm nghề Web buộc phải học Javascript thì cũng không đúng lắm. Nói sao thì nói, Javascript cũng là ngôn ngữ thống thị thế giới, vì nó hầu như làm được mọi thứ. Từ Front End, Back End cho tới IoT, Robot thậm chí cả Big Data và Machine Learning đều có các thư viện, Framework hỗ trợ làm bằng Javascript. Tối đề cập tới Javascript ở đây ý muốn nói tới cấp độ tiếp theo: học và làm việc với Javascript. Thiết nghĩ, nhiều người dừng ở đây cũng đủ kiếm cơm rồi. Thành thạo thiết kế giao diện + HTML/CSS + chút Javascript thì bạn hoàn toàn có thể trở thành Front End Developer hoặc Web Designer.

Ngôn ngữ Back End - Cả rừng cả biển.

Tôi là một Back End Developer và ôi trao, thế giới mới thật nhiều ngôn ngữ Back End làm sao. Từ PHP, Python, Ruby, Java, Go, Javascript... cơ man nào là ngôn ngữ. Cái này thì chắc ai mà chả biết rồi, nói tới đây có lẽ là đã hết, đa số mọi người nghĩ Web thì chắc cũng chỉ có HTML/CSS/JS, Web Design rồi thêm 1 ngôn ngữ Back End nữa là xong. Mà tài tình ở chỗ là bây giờ có cái tên Full Stack, người ta tự cho mình biết cả Front End và Back End là có thể trở thành Full Stack Developer. Cũng không sai, nhưng để trở thành Pro thì đường còn dài lắm bạn hiền.

Web cũng phải có kiến trúc.

Bạn xây bất cứ thứ gì, từ xây nhà, cầu đường cho tới xây... web thì đều phải có kiến trúc. Đơn giản nhất như MVC, ui trời ai code Back End bằng mấy ngôn ngữ hay Framework hiện đại mà chả biết. Nhưng mà khoan, "Bạn đã thực sự hiểu MVC và lịch sử của nó?". Cái này cũng khó nhằn nha. Riêng cái khoản đoạn Code này thì nằm ở M, hay C hay V cũng khá nhiều bạn đau đầu. Thực ra thì không sao đâu, bạn thích đặt đâu cũng được, miễn là nó chạy. Chỉ có một vấn đề duy nhất là người ta sẽ bảo bạn "code ngu" hoặc sau này dự án đó có ai Maintain thì bạn sẽ bị chửi SML. Hiển nhiên thôi, vì bạn không hiểu gì về Architect. Mà nói tới Artchitect thì vô vàn và cơ man. Tôi định là không liệt kê nhưng có lẽ lên viết ra một chút để bạn hình dung tới các Keyword có thể dùng để làm Architect cho Web:

  • Design Pattern: Một cái chung chung, có thể áp dụng cho Web hoặc bất cứ dạng phần mềm hay hệ thống nào.
  • Một vài kiến trúc phổ biến để tổ chức phần mềm: MVC, MVP, MVVM, MV*, Flux, 3-tier,...
  • Một vài kiến trúc tổ chức hệ thống: Microservices, Load Balancing, Replicating, Clustering, Message Broker...
  • Một vài thứ về thiết kế kiến trúc: Domaind Driven Design, SOA, Clean Architect, Hexagon Architect... Cũng khá nhiều rồi ấy chứ. Tới đây thì tôi nghĩ bạn bắt đầu thấy Web không đơn giản rồi. Bạn biết gì thêm thì Comment bổ sung nhé, hoặc tối viết sai đoạn nào cũng vui lòng góp ý cho.

WebOps và Infrastructure.

Có bao giờ bạn làm Web mà phải sử dụng GNU/Linux Command Line chưa? Tôi nghĩ đó cũng là ác mộng của một số bạn. Có một thuật ngữ khá hot hiện nay là DevOps, nhưng vì bài này nói về làm Web nên tôi gọi tắt là WebOps. Bạn có bao giờ sử dụng các Tool như là Vagrant, Docker, Ansible không? Các bạn thực tập ở công ty của tôi phải dành 1 tháng để thành thạo mấy cái đó. Tí quên là các bạn ấy cũng phải học cả cách dùng GNU/Linux nữa. Thú thật là cũng nhiều bạn bỏ cuộc. Infrastructure thì sao nhỉ? Các bạn làm Web nhỏ không biết chứ các Web lớn như Google hay Facebook có cả trăm ngàn, triệu máy chủ ấy chứ. Để vận hành được bọn nó cũng đâu đơn giản nhỉ. Dĩ nhiên là ở các công ty to vậỵ, các Web Developer sẽ không phải sờ vào đống máy chủ đó, mà chỉ cần vào Private Cloud và kích kích mấy cái là có Server để dùng. Nhưng hiện tại như chỗ tôi làm, chả có nhiều về cho mấy ông làm về Infrastructure đâu, cho nên mấy thằng Web Developer như tôi phải nhẩy vô Digital Ocean, AWS tự tạo máy chủ, tự cài cắm. Thực ra việc tạo máy chủ kiểu dịch vụ đó dễ mà, đoạn khó là đoạn cài cắm phần mềm và đưa Web lên đó vận hành thôi. Như đã nói ở trên, Web có vô vàn kiến trúc nên Web càng lớn thì cái phần Infrastructure càng quan trọng. Nếu như không có System Admin thì khả năng cao là mấy anh Web Developer như anh em mình phải ngồi mà cài cắm.

Những Web như Facebook hay Google thì Web Developer của bọn nó thế nào?

Tất nhiên là nó không đơn thuần là kết hợp Front End, Back End và Infrastructure. Ví dụ như Google, để trả lại cho bạn 1 kết quả tìm kiếm thì một quá trình Khai phá dữ liệu rất phức tạp của Google được thực hiện. Hay như để bạn có cái News Feed trên Facebook, họ cũng phải nghiên cứu ứng dụng rất nhiều về thuật toán xử lý dữ liệu. Hoặc đơn giản là để tổ chức hàng tỉ GB dữ liệu ở hàng trăm ngàn Server trên toàn thế giới mà vẫn đảm bảo Web load nhanh SML. Nói mới nhớ, mấy ông Back End hay chê bọn làm Front End kém Logic hay cái gì đại loại thế. Nhưng mà tôi biết 2 ông viết ra AngularJS và ReactJS ở Google và Facebook cũng chỉ là Front End Engineer thôi. Ha Ha. Thế thì các ông Back End cứ còn phải chạy dài nhé.

Kết luận

Làm Web thật là cực nhọc, bạn phải học đủ thứ. Đôi lúc tôi nghĩ hay chuyển quách qua làm Android hay iOS nhỉ? Chỉ cần học một vài thứ là ngon rồi, làm Android thì cũng lắm chuyển từ Java sang Kotlin chứ đâu như Web, lúc thì làm PHP, lúc thì Python, Java, Ruby, Go lang... thật mệt. Nhưng nghĩ lại, chính ra cái khó của Web nằm ở kiến trúc, mà mình thì là một thằng mê về kiến trúc phần mềm, cả đời chỉ có thích được làm hệ thống lớn, khổ cái chưa được làm bao giờ nên kiến thức học xong là rơi vãi cả. Dù ở cấp độ nào thì các chiến hữu vẫn đang kiếm ăn tốt phải không nhỉ? Cho nên có liệt kê thì liệt kê vậy thôi chứ anh em cũng đừng lo lắng. Tech là một phần, quan trọng là Biz của anh em tới đâu thôi. Làm Theme cho OpenSource đem bán trên Evanto mà được vài ngàn Sales cũng còn hơn chán mấy ông Solution Artchitect. Ha Ha.