Nhiều bạn mới bước vào nghề thường tin rằng chỉ cần thuộc một framework nổi tiếng là đủ để làm web được. Đội ngũ của chúng tôi nhìn nhận khác. Phần lớn rắc rối không đến từ việc thiếu kiến thức, mà từ những thói quen học và làm sai ngay từ đầu. Chúng tôi đã theo dõi không ít dự án nhỏ bị kéo dài cả tháng chỉ vì vài lỗi nghe qua thì nhỏ, nhưng hậu quả thì không hề nhỏ. Bài viết này tổng hợp top 10 sai lầm thường gặp về lập trình web, giải thích vì sao chúng gây hại và gợi ý cách tránh. Nếu bạn đang tò mò về các xu hướng lập trình web đáng theo dõi, phần nền tảng bên dưới là thứ bạn nên nắm trước.
Vì sao người mới hay vấp khi làm web
Một website thường gồm ba lớp. Lớp đầu tiên là giao diện người dùng nhìn thấy. Lớp thứ hai là logic xử lý phía sau. Lớp cuối cùng là cơ sở dữ liệu lưu trữ thông tin. Người mới thường dồn gần hết thời gian cho giao diện, bởi nó trực quan và cho kết quả nhanh. Hai lớp còn lại bị bỏ qua, và chính ở đó lỗi tích tụ dần mà không ai để ý.
Những lỗi này hiếm khi lộ diện khi website chỉ có vài trang và vài người ghé thăm. Chúng bộc phát khi người dùng thật xuất hiện, lượng truy cập tăng lên và dữ liệu bắt đầu chất đống. Lúc đó, sửa lại tốn công hơn rất nhiều so với làm đúng ngay từ đầu. Bạn sẽ thấy điều này rõ hơn ở các phần phía dưới.
Bài viết này không nhằm dạy bạn viết từng dòng code. Mục tiêu là giúp bạn nhận ra những cái bẫy quen thuộc, để đi đường vòng trước khi chúng kịp gây thiệt hại.
Tiêu chí chọn 10 sai lầm
Chúng tôi chọn những lỗi xuất hiện thường xuyên trong các dự án cá nhân và shop nhỏ, nơi người làm thường không có đội kỹ thuật riêng để kiểm tra chéo. Một lỗi chỉ được đưa vào danh sách khi nó gây hậu quả thật: mất thời gian, lộ dữ liệu khách hàng, hoặc khiến website chạy chậm và khó bảo trì về sau.
Cần nói rõ, đây là những gì đội ngũ quan sát được trong kinh nghiệm thực tế, không phải số liệu khảo sát trên diện rộng. Nếu bạn áp dụng cho một hệ thống lớn hơn, hãy kiểm chứng thêm trong môi trường riêng của mình.
Học framework khi chưa nắm HTML, CSS và JavaScript
Đây là sai lầm chúng tôi gặp nhiều nhất. Thấy React hay Laravel được nhắc đến liên tục, nhiều bạn nhảy thẳng vào mà không quay lại nền tảng. Framework về bản chất chỉ là lớp công cụ dựng trên nền tảng đó. Thiếu nền thì mọi thứ phía trên đều chênh vênh.
Nếu chưa hiểu DOM là gì, bộ chọn hoạt động ra sao, hay một vòng lặp chạy theo thứ tự nào, bạn sẽ chỉ có thể sao chép đoạn mã mẫu mà không hiểu nó đang làm gì. Khi lỗi xuất hiện, bạn không biết nên bắt đầu tìm từ đâu.
Chúng tôi khuyên người mới dành vài tháng luyện HTML, CSS và JavaScript thuần. Khi đọc được mã của người khác và tự viết được một trang có tương tác đơn giản, việc học framework sau đó sẽ nhanh hơn nhiều.
Không kiểm tra dữ liệu người dùng nhập vào
Mọi ô nhập liệu trên website đều là một cửa ngõ. Nếu không kiểm tra dữ liệu đầu vào, kẻ xấu có thể chèn mã độc qua các lỗ hổng như SQL injection hay XSS, từ đó đọc trộm thông tin hoặc phá hỏng trang. Đây là lỗ hổng đã cũ nhưng vẫn xuất hiện thường xuyên ở các trang nhỏ.
Chúng tôi từng gặp một form đăng ký của shop bán hàng nhỏ, không giới hạn độ dài và không lọc ký tự đặc biệt. Chỉ cần vài dòng kiểm tra cơ bản, vừa ở trình duyệt vừa ở máy chủ, đã chặn được phần lớn rủi ro. Với một cửa hàng nhỏ, một sự cố như vậy đủ làm mất niềm tin của khách chỉ trong một đêm.
Lưu mật khẩu dưới dạng văn bản thường
Lưu mật khẩu nguyên văn trong cơ sở dữ liệu nghĩa là chỉ cần dữ liệu rò rỉ, mọi tài khoản cũng bị lộ theo. Người dùng hay đặt lại cùng một mật khẩu ở nhiều nơi, nên hậu quả lan rộng hơn nhiều so với những gì bạn hình dung.
Cách làm đúng là băm mật khẩu bằng một thuật toán chuyên dụng đã được cộng đồng kiểm chứng. Đừng tự viết thuật toán băm riêng. Các thuật toán có sẵn đã qua rất nhiều vòng thử thách, còn phiên bản tự chế gần như không có cơ hội đạt đến mức đó.
Sửa trực tiếp trên máy chủ không có lịch sử
Nhiều người vẫn sửa code ngay trên máy chủ đang chạy. Khi một thay đổi làm website lỗi, họ không có cách nào quay về trạng thái ổn định một cách nhanh chóng, và đôi khi phải đoán xem mình đã sửa dòng nào. Cảm giác đó rất mệt, nhất là khi khách hàng đang chờ.
Git sinh ra để giải quyết đúng tình huống này. Mỗi thay đổi được ghi lại thành một bản lưu, bạn có thể xem lại, so sánh và khôi phục bất cứ lúc nào. Vài lệnh cơ bản như lưu thay đổi và quay về phiên bản trước cũng đủ cứu bạn nhiều lần.
Chỉ giữ một bản code duy nhất trên máy cá nhân
Ổ cứng hỏng, máy bị mất, hay một lệnh xóa thư mục gõ nhầm không phải chuyện hiếm. Nếu chỉ có một bản code nằm trên máy cá nhân, bạn có thể mất cả tuần công sức trong một buổi chiều.
Hãy thiết lập sao lưu định kỳ và lưu lên một dịch vụ lưu trữ từ xa. Đừng quên kiểm tra thử xem bản sao lưu có khôi phục được không, vì có những bản trông thì ổn nhưng khi cần lại không dùng được. Tần suất sao lưu nên tùy vào mức độ thường xuyên thay đổi của dự án.
Chọn cách tổ chức code không hợp với quy mô dự án
Có ba cách tổ chức mà người mới hay gặp. Viết mọi thứ trong một file thì dễ bắt đầu, nhưng sẽ rất khó đọc khi file dài thêm. Tách file theo chức năng giúp tìm và sửa từng phần dễ hơn, tuy nhiên cần quy ước đặt tên rõ ràng, nếu không mọi thứ sẽ rối rất nhanh. Kiến trúc có module phù hợp khi dự án đủ lớn và có nhiều người cùng làm, nhưng đòi hỏi công thiết kế ngay từ đầu.
Với một trang giới thiệu hay shop nhỏ, tách file theo chức năng thường là lựa chọn cân bằng nhất. Khi có thêm người tham gia, bạn mới nên cân nhắc chuyển sang kiến trúc có module. Đừng dựng cấu trúc phức tạp chỉ vì nghe có vẻ chuyên nghiệp.
Tối ưu hiệu năng quá sớm
Có bạn dành cả tuần tinh chỉnh tốc độ tải cho một trang mà chưa có ai ghé thăm. Tối ưu nên làm khi bạn có số liệu thật cho thấy điểm nghẽn nằm ở đâu. Làm sớm thường chỉ tốn thời gian vào những chỗ không ảnh hưởng gì đến trải nghiệm người dùng.
Hãy bắt đầu bằng việc đưa website hoạt động đúng và ổn định. Khi lượng truy cập thật xuất hiện, bạn sẽ biết rõ cần tối ưu phần nào.
Chỉ kiểm thử trên màn hình máy tính
Đây là lỗi nhiều người chỉ nhận ra sau khi website đã lên mạng. Điện thoại Android tầm trung chiếm tỷ lệ lớn ở Việt Nam. Trên máy cấu hình thấp, một trang chạy mượt trên laptop có thể chậm hẳn đi, và các nút bấm đôi khi cũng khó nhấn chính xác.
Hãy mở website trên ít nhất một chiếc điện thoại thật trước khi công khai. Trình giả lập trên máy tính rất hữu ích, nhưng không thay thế được cảm giác khi dùng máy thực tế.
Quy trình kiểm tra nhanh trước khi đưa website lên mạng
Trước khi công khai một website, đội ngũ chúng tôi thường đi qua năm bước sau. Mỗi bước không tốn nhiều thời gian, nhưng giúp bắt được phần lớn lỗi đáng kể.
- Kiểm tra toàn bộ form bằng cách nhập dữ liệu sai, dữ liệu rỗng và dữ liệu lạ.
- Bấm thử mọi liên kết để chắc không có đường dẫn nào bị gãy.
- Đo tốc độ tải trang trên điện thoại thật, không chỉ trên máy tính.
- Rà soát bảo mật cơ bản: mật khẩu đã băm, không có thông tin nhạy cảm lộ ra giao diện hay tệp công khai.
- Xác nhận đã có bản sao lưu gần nhất và thử khôi phục một lần.
Quy trình này dùng được cho cả dự án cá nhân lẫn shop bán hàng quy mô nhỏ. Khi cần một máy chủ ổn định, bạn có thể tham khảo thêm dịch vụ hosting và bảo mật cho website nhỏ để so sánh cấu hình phù hợp. Nếu còn băn khoăn về phần máy chủ, bạn cũng có thể đọc thêm những câu hỏi thường gặp về hosting và bảo mật.
Câu hỏi thường gặp về việc học lập trình web
Người mới nên học HTML, CSS và JavaScript bao lâu rồi mới chuyển sang framework?
Không có con số chung cho tất cả mọi người. Thông thường, vài tháng luyện tập đều đặn là đủ để bạn tự viết một trang có tương tác đơn giản. Khi đọc hiểu được mã của người khác và không còn ngại mở file ra, đó là lúc hợp lý để chuyển sang framework.
Có cần biết Git ngay từ đầu không?
Bạn nên nắm những lệnh cơ bản như lưu thay đổi và quay về phiên bản cũ. Không cần thành thạo mọi tính năng ngay, nhưng có lịch sử thay đổi sẽ giúp ích rất nhiều khi gặp lỗi lạ.
Làm sao biết code đã đủ an toàn trước khi lên mạng?
Hãy chạy qua danh sách kiểm tra ở trên và thử nhập các dữ liệu bất thường vào form của chính mình. Nếu vẫn chưa chắc, nên nhờ một người có kinh nghiệm rà soát thêm trước khi công khai.
Nếu chỉ sửa được vài lỗi, nên ưu tiên lỗi nào?
Nếu website đang có dữ liệu khách hàng thật, hãy ưu tiên bảo mật trước: kiểm tra dữ liệu đầu vào và băm mật khẩu. Sau đó mới đến sao lưu và thiết lập Git để có lịch sử thay đổi.
Tự học lập trình web có đủ không, hay cần khóa học có giảng viên?
Tự học hoàn toàn đủ nếu bạn kiên trì và biết chọn tài liệu phù hợp. Khóa học có giảng viên giúp rút ngắn thời gian sửa những thói quen sai, nhất là khi bạn dễ nản trước lỗi đầu tiên. Theo đội ngũ chúng tôi, hai cách này đều có chỗ đứng, tùy hoàn cảnh và tính cách của từng người.