Lập trình web năm 2019 bạn cần học những gì? – Phần 1

214

Chào các bạn,

Web là một trong những nền tảng thân thiện và dễ dàng tiếp cận người dùng bậc nhất hiện nay. Bởi một ứng dụng web không yêu cầu người dùng phải tốn thời gian tải về máy, mà chỉ cần bật trình duyệt lên, nhập vào địa chỉ của trang web là có thể sử dụng được ngay.

Vì tính tiện lợi, và cũng có phần đơn giản, nên các nhà sản xuất phần mềm luôn ưu tiên web là một nền tảng không thể thiếu cho sản phẩm của mình. Ví dụ như facebook, youtube, messenger, zalo,… ngoài sử dụng được trên nền tảng di động, thì cũng có thể hoạt động trên cả nền tảng web. Điều này còn khiến web còn trở thành một nền tảng phổ biến và được nhiều lập trình viên quan tâm.

Nếu bạn cũng đang quan tâm tới lập trình web và mong muốn trở thành một web developer nhưng lại không biết phải học những gì và từ đâu, thì hãy đọc bài chia sẻ này của mình nhé.

Thứ 1: Học HTML, CSS, JavaScript

Đây là bộ ba ngôn ngữ được sử dụng để xử lý dữ liệu ở máy khách (máy tính của người truy cập vào website), chịu trách nhiệm tạo nên bố cục, màu sắc, hiệu ứng trên website.

HTML: Hyper Text Markup Language – là một ngôn ngữ đánh dấu có nhiệm vụ xây dựng lên bộ xương của website. Các nội dung như văn bản, hình ảnh và bố cục của website được dựng lên đều nhờ tới HTML. Mình đánh giá HTML không khó học, chỉ cần 1 2 buổi vừa học vừa thực hành là bạn có thể làm được HTML rồi.

CSS: Cascading Style Sheets là một ngôn ngữ định dạng có nhiệm vụ trang điểm cho website. Bằng cách làm cho trang web có màu sắc, bố cục hài hòa mà CSS khiến website của chúng ta trở nên đẹp hơn. Một website đẹp khi mà CSS của nó đẹp. Mình đánh giá CSS khó hơn HTML do CSS yêu cầu người làm phải có mắt thẩm mỹ, hơn nữa bạn không thể học CSS khi mà chưa biết HTML. Kiến thức về CSS khá rộng, nhưng bạn không cần phải nhớ hết tất cả, chỉ cần nhớ một vài thuộc tính cơ bản như color, background, font-style, font-weight, font-family, text-decoration, border, padding, margin, position là đủ dùng rồi, sau này động đến các khái niệm khác thì mình tìm hiểu sau.

JavaScript: JavaScript là một ngôn ngữ lập trình có nhiệm vụ làm cho trang web trở nên sống động hơn. Ví dụ gần gũi nhất là khi bạn vào facebook mà mạng lag thì bạn sẽ nhìn thấy các biểu tượng loading, hoặc khi bạn comment “Chúc mừng” thì có pháo hoa bắn lên. Những cái đó làm được là nhờ có JavaScript. Mình đánh giá JavaScript khó học hơn hẳn CSS với HTML, bởi bạn chỉ nên học JavaScript khi đã rành HTML và CSS. Mặc khác JavaScript là một ngôn ngữ lập trình nên ngoài việc bạn hiểu về cú pháp của JavaScript ra thì còn đòi hỏi bạn phải có tư duy lập trình nữa. Tuy nhiên nếu bạn từng biết một ngôn ngữ lập trình nào trước đó rồi, thì học JavaScript lại rất dễ dàng.

Thứ 2: Học một ngôn ngữ lập trình phía Server

HTML, CSS, JavaScript mà mình chỉ ra ở bước 1 chỉ làm nhiệm vụ xử lý dữ liệu phía máy khách (phía client). Tuy nhiên dữ liệu do máy khách xử lý thì lại được lấy từ phía máy chủ (phía server). Vì vậy ở phía máy chủ chúng ta cũng cần phải có một ngôn ngữ lập trình để xử lý trước khi trả dữ liệu về cho máy khách.

Khác với HTML, CSS, JavaScript bạn phải học cả ba ngôn ngữ, thì với ngôn ngữ phía máy chủ bạn chỉ cần học một là đủ. Hiện nay có nhiều có rất nhiều cái tên nổi lên với mỗi loại lại có ưu nhược điểm riêng, nhưng mình sẽ gợi ý tới bạn 3 ngôn ngữ lập trình phía máy chủ được nhiều web developer sử dụng nhất nhé:

1. PHP

PHP logo

Là ngôn ngữ được nhiều web developer sử dụng nhất bởi nó cực kỳ dễ học. Cộng với việc đã ra đời đã khá lâu nên PHP có một cộng đồng người sử dụng rất lớn, nhiều tài liệu phong phú, nhiều khóa học chi tiết. Bản thân mình hiện tại cũng sử dụng PHP là chủ yếu.

PHP có ưu điểm là miễn phí, có nhiều nền tảng, cms mạnh mẽ và tối ưu để phát triển web. PHP cũng hỗ trợ cả lập trình hướng đối tượng. Nhưng nhược điểm của PHP là khá chậm chạp, không phù hợp với các dự án phải xử lý nhiều dữ liệu.

Mình đánh giá trong năm 2019 thì PHP vẫn là ngôn ngữ rất đáng để học, và cũng không phải ngẫu nhiên khi mình xếp PHP ở vị trí số 1 nhé.

2. NodeJs

NodeJs logo

Khác với PHP, NodeJs là một nền tảng (platform) chứ không phải ngôn ngữ lập trình. Để học NodeJs bạn cần phải biết JavaScript, trong khi đó JavaScript là ngôn ngữ lập trình mà bạn đã học được ở bước 1. Đây cũng chính là điểm mạnh của NodeJs, nó khiến cho các web developer chỉ cần học một lần JavaScript những có thể viết được ở cả phía server và client.

Ngoài điểm mạnh kể trên thì NodeJs còn cho tốc độ thực thi rất nhanh, nhanh hơn nhiều so với PHP. NodeJs cũng hỗ trợ tốt socket nên phù hợp để triển khai các ứng dụng thời gian thực như gửi thông báo, chat,… cái mà PHP hỗ trợ rất kém.

Điểm yếu của NodeJs là còn khá mới mẻ (ra mắt vào năm 2009) nên bạn sẽ không tìm thấy nhiều tài liệu về nó. Framework dựa trên NodeJs cũng còn đơn sơ. Vì vậy mà bắt đầu một dự án với NodeJs thường khó khắn hơn bắt đầu một dự án với PHP. Cá nhân mình đánh giá NodeJs không phù hợp với các bạn mới bắt đầu.

Bạn có thể thấy rằng điểm yếu của NodeJs chủ yếu tới từ cộng động người sử dụng, chứ bản thân nó thì mình không chê điểm nào. Nên có khả năng NodeJs sẽ trở thành xu hướng trong tương lai đấy.

3. Java

Java logo

Java vốn nổi tiếng là ngôn ngữ lập trình có thể “viết một lần, chạy mọi nơi” – tức là có thể chạy trên mọi nền tảng. Java có thể sử dụng để lập trình web, lập trình ứng dụng desktop, lập trình ứng dụng mobile (android) điều này khiến Java trở thành một trong những ngôn ngữ lập trình được yêu thích nhất trên thế giới.

Điểm mạnh của Java là có nhiều công cụ tiện lợi giúp lập trình viên có thể tiết kiệm thời gian trong việc code, debug, tích hợp các thư viện thứ 3,… Các framework phát triển web bằng Java cũng khá tiện lợi và đẩy đủ, tốc độ thực thi cũng nhanh. Developer Java cũng dễ dàng chuyển qua chuyển chuyển lại giữa các dự án web – mobile – desktop mà không cảm thấy nhiều khó khăn do Java hỗ trợ tao ra ứng dụng trên nhiều nền tảng các nhau.

Điểm yếu của Java là cú pháp rất dài dòng, lập trình với Java cũng khiến bạn bị phụ thuộc nhiều vào công cụ chứ không được tự do như làm việc với NodeJs hay PHP. Các dự án web được viết bằng Java đa phần đều là các dự án cũ, chứ hiện nay rất ít công ty bắt đầu một dự án web mới mà sử dụng Java.

Cá nhân mình đánh giá hiện nay không nên sử dụng Java để phát triển web, bởi bên cạnh Java có quá nhiều sự lựa chọn khác tốt hơn. Nhưng mình vẫn liệt kê vào bài viết này do Java từng thống trị thế giới một thời gian, nên hiện tại vẫn có rất nhiều các dự án web viết bằng Java cần được phải bảo trì, vì vậy bạn nào mà có học Java để làm web thì cũng đừng có lo nhé.

Thứ 3: Học một loại cơ sở dữ liệu

Một website muốn hoạt động được thì chỉ có code thôi là không đủ, mà cần phải có khả năng lưu trữ dữ liệu nữa. Ví dụ bạn đăng ký tài khoản trên facebook, thì thông tin về tài khoản của bạn cần phải được lưu ở đâu đó. Thì cái chỗ lưu trữ đấy chính là cơ sở dữ liệu (CSDL).

CSDL được chia làm 2 loại là CSDL có cấu trúc (SQL) và CSDL phi cấu trúc (NoSQL). Đại diện cho hai loại CSDL này là MySQL và MongoDB.

1. MySQL

Mysql logo

MySQL thuộc nhóm CSDL có cấu trúc. Đây được coi là CSDL phổ biến nhất trên thế giới và được rất nhiều các developer yêu thích sử dụng bởi nó miễn phí nhưng chất lượng.

Điểm mạnh của MySQL là dễ học, dễ hiểu, mạnh mẽ trong việc trích xuất dữ liệu.

Điểm yếu của MySQL là đòi hỏi cấu trúc lưu trữ phải rõ ràng, không phù hợp sử dụng cho các dự án thường xuyên thay đổi cấu trúc dữ liệu.

Cá nhân mình đánh giá, MySql phù hợp với những bạn mới bắt đầu tìm hiểu về CSDL.

Trang chủ: mysql.com

2. MongoDB

MongoDB logo

MongoDB là thuộc nhóm CSDL phi cấu trúc. Vì phi cấu trúc nên MongoDB có thể lưu trữ dữ liệu rất linh hoạt, đồng thời cũng để sử dụng để lưu trữ dữ liệu lớn. Tuy nhiên chính điểm mạnh này cũng là điểm yếu của MongoDB, vì có khả năng lưu trữ không theo cấu trúc, nên MongoDB không đảm bảo được tính toàn vẹn của dữ liệu. Vì nhược điểm này nên MongoDB không nên sử dụng với các dự án khắt khe về độ chính xác của dữ liệu như hệ thống ngân hàng.

Cá nhân mình đánh giá MongoDB hơi khó tiếp cận đối với những bạn mới bắt đầu. Do các developer thường sử dụng MongoDB trong các dự án có tính đặc thù cao, còn các dự án phổ thông thì ít dùng hoặc gần như không dùng.

Trang chủ: mongodb.com

Kết luận

Kết thúc phần 1 này mình đã giới thiệu tới bạn 3 thành phần kiến thức mà bạn không thể thiếu nếu muốn trở thành một web developer, bao gồm:

  • Ngôn ngữ client: HTML, CSS, JS
  • Ngôn ngữ server: PHP, NodeJs, Java
  • CSDL: MySQL, MongoDB

Ba loại kiến thức trên nếu học nghiêm chỉnh thì cũng sẽ tốn kha khá thời gian của bạn đấy. Với kinh nghiệm bản thân đã trải qua thì mình ước lượng thời gian một người từ chưa biết gì cho tới lúc vận dụng được sẽ mất khoảng 6 tháng. Vì vậy bạn nào ôm mộng trở thành lập trình viên chỉ sau một khóa học 2 3 tuần thì chắc chắn là không thể nha. Còn bạn nào đang học được 1, 2 tháng mà thấy chưa hiểu gì hoặc thấy khó quá thì cũng là chuyện bình thường, bởi mọi thứ chỉ mới bắt đầu thôi, đừng vội nản.

Riêng ngôn ngữ client thì bạn bắt buộc phải học cả 3 (HTML, CSS, JS). Còn ngôn ngữ server và CSDL thì trong mỗi thành phần bản chỉ cần chọn ra một cái học là được rồi (những cái khác học sau). Thông thường các developer sẽ học theo các bộ như sau:

  1. PHP – MySQL (phù hợp với người mới bắt đầu).
  2. NodeJS – MongoDB
  3. Java – MySQL
  4. Java – MongoDB

Nếu bạn có thể học được 1 trong 4 bộ mình kể trên thì bạn có thể tự tin đi apply các vị trí web developer rồi. Có thể lương hơi thấp chút nhưng với lượng kiến thức như vậy là đủ để làm việc.

Hẹn gặp lại các bạn ở phần tiếp theo nhé.


(*) cms: Content Manager System – Hệ thống quản trị nội dung. Là những hệ thống được xây dựng sẵn, thường có tính tùy biến cao, sử dụng để quản lý một loại nội dung nào đấy như blog tin tức, website bán hàng,…

(*) framework: Là nền tảng để phát triển, trong bài viết này framework là những nền tảng để phát triển website. Framework thường dựng sẵn những thành phần, thư viện cơ bản mà bất kỳ dự án website nào cũng cần có như kết nối tới CSDL, xác thực tài khoản, phân trang, xử lý các request,…

(*) platform: Dịch ra Tiếng Việt thì cũng là nền tảng, nhưng platform mang ý nghĩa là nền tảng thấp hơn framework, nó giống như môi trường để cho framework có thể chạy vậy. Ví dụ như như ExpressJs là một framework của NodeJs platform.

(*) socket: Socket hay Websocket là một giao thức sử dụng để trao đổi dữ liệu giữa 2 máy tính, có đặc điểm là dữ liệu có thể trao đổi qua lại liên tục nên phù hợp để thực hiện các tính năng thời gian thực trong các game online, ứng dụng dụng gửi thông báo, ứng dụng nhắn tin.