Nhiều bạn thích học lập trình web nhưng loay hoay mãi như gà mắc tóc. Chúng tôi hay nói vui là “không đến được bãi đỗ xe”.
Tình trạng này, anh em KACBT chúng tôi ở đây đều từng vướng phải, loay hoay mất nhiều năm mới thoát khỏi, có thể học được chút ít đạt mức đi làm kiếm cơm.
Do đó, KACBT cho rằng không có đúng sai/ phải trái, cứ kể như kể chuyện, liệt kê những gì biết để cho người đọc tự biết nên làm gì sau khi ngấm các bài đọc.
Lập trình chính là giải bài toán/ làm nên sản phẩm
Để tránh khó hiểu, chúng tôi so sánh một người viết code với một người thợ mộc.
Thợ mộc có các mức: học việc, thợ, thợ chính, nghệ nhân.
Tương ứng, lập trình viên có các mức: fresher, junior, senior, expert, guru.
Các mức chia trên là tương đối để chỉ từ thấp đến cao chứ không phải quy chuẩn nhất định. Một người vào nghề không phải ai cũng đạt mức cao nhất của nghề, nhưng phải đạt ở mức trung bình – khá, hoặc khá mới có thể sống được với nghề. Mức giỏi, xuất sắc dành cho số ít người, họ là những người có tiếng tăm, tiếng nói trong ngành nghề, lĩnh vực đó.
Điều kiện tiên quyết để theo nghề lập trình đó là tiếng Anh phải ở mức đọc hiểu được sách lập trình. Có thể ban đầu bạn chưa chuẩn bị được nhưng phải cố gắng học tiếng Anh trong quá trình lập trình.
Chúng tôi thường nhận thấy những bạn học tiếng Anh thất bại, khả năng học lập trình thất bại cũng cao. Tương tự, nếu bạn học tiếng Anh tốt, bạn cũng có tiềm năng để học lập trình dễ dàng.
Một số bạn có sự ảo tưởng rằng tiếng Anh không cần đọc hiểu được các bài viết, tài liệu về lập trình mà chỉ cần dùng Google dịch hoặc đọc được đoạn ngôn ngữ mà thôi. Theo chúng tôi, đây chẳng qua là sự chống chế cho việc lười hoặc không có khả năng học tiếng Anh.
Chúng tôi thường nói vui, sự quan trọng của tiếng Anh đối với lập trình máy tính cũng giống như Bảng Cửu chương đối với Toán. Bạn định giải Toán kiểu gì khi không thuộc Bảng Cửu chương? Vậy thì, bạn cũng lập trình thế nào khi tiếng Anh của bạn dở ẹc.
Cách tiếp cận vấn đề theo hai hướng chính
Qua thực tế làm việc, KACBT nhìn xung quanh mình, những người đồng nghiệp cùng công ty và khác công ty thì thấy rằng phần lớn những lập trình viên web nói chung, lập trình viên ngôn ngữ PHP nói riêng đều đến từ một trong hai hướng sau:
Hướng 1: tìm hiểu kỹ lúc còn trẻ, vào nghề qua con đường cao đẳng, đại học
Ở nước ngoài, nếu bạn có ý định làm việc trong ngành công nghệ thông tin theo hướng trở thành người viết mã, lập trình viên, bạn cần ghi danh vào một trường đại học và học ngành Computer Science (viết tắt CS).
Tương tự, ở Việt Nam thì tên gọi khác nhau, nhưng nhìn chung, trước khi đăng ký bạn sẽ thấy trường đó có khoa công nghệ thông tin hoặc có chữ gì đó liên quan đến máy tính, phần mềm.
Ví dụ, ở website Trường Đại học Công nghệ Thông tin chúng tôi nhìn thấy hàng tá ngành học như sau:
- Công nghệ thông tin
- Hệ thống thông tin
- Khoa học máy tính
- Kỹ thuật phần mềm
- Kỹ thuật máy tính
- Mạng máy tính và truyền thông dữ liệu
- An toàn thông tin
- Thương mại điện tử
- Khoa học dữ liệu
- Trí tuệ nhân tạo
Bạn có thể tìm hiểu cụ thể từng ngành trước khi nộp đơn để định hướng cho đúng. Việc này nên làm sớm, trước khi bước vào lớp 12 để còn có thời gian điều chỉnh khi cần. Bạn là một học sinh cần có ý thức, tránh “nước tới trôn mới nhảy”, để đến năm học lớp 12 cuối cấp mới loay hoay, khủng hoảng gì đó rồi chọn ngành nghề vội vàng, gây hậu quả tai hại. Càng tai hại hơn khi hoá ra khi nhập học cao đẳng, đại học mới tá hỏa rằng ngành học không có gì giống tưởng tượng (vì có tìm hiểu kỹ lưỡng đâu mà biết nó thế nào).
Sau khi tìm được ngành học rồi, xem thử khi tốt nghiệp ra người ta sẽ làm những gì? Ở đâu tuyển.
Một vài nhầm lẫn rằng chơi game giỏi là có thể học lập trình tốt. Điều này không có căn cứ về mặt khoa học lẫn thực tế cuộc sống. Người học giỏi Toán cũng chưa chắc trở thành lập trình viên xịn mà chỉ ở dạng tiềm năng, có sự hứa hẹn tương lai.
Một số nhầm tưởng khác cũng cần phải làm rõ đó là những người giỏi khoa học xã hội thì không thể theo ngành lập trình. Có thể những năm học phổ thông, học sinh ít học các môn tự nhiên nên thi tuyển hoặc ghi danh vào học ngành công nghệ thông tin kém lợi thế, thậm chí bị từ chối. Nhưng trong thực tế vẫn có những người đủ điểm xét tuyển hoặc họ chọn khối D nên vẫn vào học CNTT.
Cũng có người không theo con đường đại học chính quy cần phải xét tuyển theo khối A. Như vậy, lập trình thực ra không quá khó đến mức phải giỏi Toán hoặc các ngành tự nhiên mới học được. Đó là chưa kể, xét theo nghĩa nào đó, các ngôn ngữ lập trình là một dạng ngôn ngữ, nên những người giỏi ngôn ngữ tự nhiên lại có thể học lập trình dễ dàng, dù ngôn ngữ học lại được xem là ngành khoa học xã hội.
Cần biết rằng học lập trình, làm nghề lập trình chính là làm việc trong ngành kỹ thuật giống như những kỹ sư khác. Do đó, người học cần có tư duy về độ chính xác, giao tiếp với máy móc, có những cái làm không đúng máy không chạy, khác với những ngành mang tính xã hội, tương tác con người với nhau.
Vì thế, nếu bạn ghét phải ngồi nhiều giờ trước màn hình máy tính để xử lý những đoạn mã, bạn cần cân nhắc trước khi dấn thân vào nghề viết mã.
Túm lại, đó là cách tiếp cận bạn không có sự yêu thích, định hướng đặc biệt rõ ràng mà chỉ cảm thấy mình muốn học và làm ngành nghề nọ kia có liên quan đến máy tính. Trong thực tế, việc học một đàng, làm một nẻo ở Việt Nam rất nhiều.
Nhưng để trụ được với nghề, không nên chọn nghề chỉ vì nghe người ta nói nghề đó ra dễ kiếm việc và/ hoặc lương cao, đó là trend đang hot. Đây có thể là sự lựa chọn tệ hại nhất của bạn vì một sự nghiệp mấy chục năm mà làm cái thứ mình luôn mơ hồ về nó, e rằng kinh khủng còn hơn bị cầm tù.
Hướng này nếu học hành không nợ môn, đều đều thẳng tiến 3-5 năm tuỳ theo học cao đẳng, đại học hoặc một khoá chứng chỉ quốc tế đào tạo dài hạn, người học sẽ được trang bị kiến thức nền tảng để ứng tuyển vào các vị trí tuyển lập trình viên. Người tốt nghiệp có thể làm việc với nhiều ngôn ngữ lập trình khác nhau, thậm chí là cũng có thể làm về mạng máy tính, hoặc biết đủ để tham gia vào những dự án về công nghệ thông tin lớn phức tạp.
Hướng 2: nghề lập trình chọn lấy người lập trình
Phần lớn những người đi theo hướng này đều là người trưởng thành. Một số người đã đi làm một số năm ở lĩnh vực khác lân cận với công nghệ thông tin, số người đến từ ngành nghề ít liên quan CNTT cũng có, nhưng ít ỏi, nhất là việc chưa bao giờ sử dụng máy tính mà bỗng nhiên trở thành lập trình viên sẽ giống kiểu đà điểu ngủ một đêm sang mai bay được.
Cũng có một số người một ngày kia tình cờ thấy mình có thể làm việc được với máy tính, muốn “nhảy việc” sang làm chính thức trong ngành công nghệ thông tin, cụ thể là trở thành người viết mã, kỹ sư phân mềm.
Hướng đi này thường 10 người có ý định, rơi rụng hết 7-8 người, chỉ còn số ít có thể học hành và nhảy việc thành công. Nếu chịu quan sát kỹ hơn, chúng ta dễ dàng nhận thấy những người nhảy việc thành công thường có thành tích tốt về học tập, làm việc.
Những người nghe người ta bàn với nhau, đọc báo, xem mạng xã hội,… rằng làm lập trình nhiều tiền rồi đâm đầu vào là hoàn toàn rủi ro hoặc thiếu sự đầu tư nghiêm túc. Với tâm thế như vậy, chúng tôi cho rằng số lượng (ý nói các bạn mơ mộng) có thể trở thành người víết mã, nhận lương tháng ở các công ty phần mềm là hiếm hoi.
Những người làm về kinh tế, marketing, kỹ sư, kiến trúc sư, bác sĩ, luật sư,… những nghề mà đã có chút gì đó gọi là phải nỗ lực nhiều, học hành chăm chỉ, bài bản thì chuyển sang học khoa học máy tính, CNTT và làm việc như một lập trình viên không phải là việc gì đó mơ mộng, hoàn toàn hiện thực.
Do vậy, nếu đang muốn trở thành một lập trình viên trong ngách lập trình web, và chọn một ngôn ngữ “xấu xí nhưng thông dụng, được việc”, bạn có thể bắt tay học với vài cuốn sách.
Thị trường việc làm cho lập trình viên PHP ở Việt Nam khá dễ tiếp cận. Chỉ có điều bạn sẽ phải vượt trên nhiều lập trình viên khác nhau bởi vì mức độ giỏi dở rất khó đoán định bởi PHP dường như thuộc loại tự học.
Hầu như không có trường đại học, cao đẳng nào ở Việt Nam dạy PHP chính khoá bởi nó được xem là ngôn ngữ được thiết kế xấu. Bạn vẫn nên trang bị chứng chỉ Zend Certified PHP Engineer để dễ ứng tuyển hơn vào những vị trí cần tuyển lập trình viên PHP.
Cách học dành cho người làm Web nghiệp dư chơi cho vui
Điều khôi hài đó là nhóm người “lập trình viên PHP” ở Việt Nam rất đông ở dạng này. Họ đến với PHP không thông qua một bài bản nào hết mà ban đầu có thể học làm một trang web nào đó cho cá nhân.
Chúng tôi còn biết rằng 10 người trong số đó có 7-8 người biết đến PHP thông qua mã nguồn WordPress, NukeViet hoặc một mã nguồn làm forum thảo luận như phpBB, vBulletin, XenForo.
Cách này xem ra rất thú vị bởi vì người học thoải mái tinh thần, theo kiểu “tình yêu đến em không mong đợi gì, tình yêu đi em không hề hối tiếc”. Cô nàng học lập trình cứ giống như đi dạo, hái hoa – bắt bướm trên đường, đi được tới đâu không phải là điều cô ấy lăn tăn.
Ngay cả người viết bài này cũng tiếp cận PHP theo hướng như này. Nhưng dù sao trước đó cũng đã trải qua một số nguôn ngữ lập trình khác, cũng tự học không qua trường lớp bài bản, có theo giáo trình của những người bạn thuê trọ cùng nhà.
Đọc chém gió nãy giờ chán rồi, tui muốn lên đường cùng PHP, làm sao đây?
Bạn đã xác định tư tưởng rồ hả? Vậy thì bắt đầu thôi, ngay và luôn tắp lự. Ở đây, chúng tối sẽ đi theo hướng bắt đầu từ lập trình web với PHP. Còn cái đoạn học lập trình và học về web làm việc như thế nào bạn phải tự trang bị lấy kiến thức.
Thực sự, bất cứ chọn ngôn ngữ lập trình nào bạn cũng phải học và thực hành rất nhiều. Tui bắt tay vào làm từ những cái đơn giản nhất, thường được gọi là Hello World rồi qua mỗi ngày, mỗi tuần, mỗi tháng viết mã nhiều thêm lên để một ngày nhìn lại đã là một trang web, một ứng dụng web.
Để có thể gọi là tạm sử dụng được một ngôn ngữ tự nhiên nói chung, ngôn ngũ lập trình nói riêng (dù ngôn ngữ lập trình là ngôn ngữ nhân tạo), một người bình thường tiêu tốn trung bình 700 giờ học.
Nếu bạn đã giỏi một ngôn ngữ không phải tiếng mẹ đẻ, học thêm một ngôn ngữ khác sẽ ít hơn 700 giờ. Học ngôn ngữ lập trình cũng tương tự như vậy.
Ở đây KACBT đang giả định rằng bạn cũng chỉ mới biết ngôn ngữ lập trình khác PHP ở mức chưa thành thạo, chủ yếu làm quen với lập trình, có thể đó là Pascal, Python khi bạn học ở trưởng phổ thông.
Với người có nền về công nghệ thông tin, chúng tôi không dám lạm bàn vì múa rìu qua mắt thợ. Bài viết này cũng trở thành thứ nhảm nhí, phèn đối với họ. Còn người không có nền về IT, có thể học theo cách như này.
Cơ bản phải nắm vững, chậm mà chắc
Nếu bạn chưa quen với lập trình, tốt nhất là bắt đầu với những điều cơ bản. Bạn có thể bắt đầu bằng cách học các nguyên tắc cơ bản của cú pháp PHP và khai báo biến.
Khi tui đã nắm bắt tốt những điều cơ bản, bạn có thể chuyển sang các chủ đề nâng cao hơn như làm việc với các đối tượng, toán tử số học, câu lệnh điều kiện, vòng lặp, hàm và mảng.
Có rất nhiều tài nguyên trực tuyến có sẵn có thể giúp bạn học PHP. Dưới đây là một số tài nguyên mà bạn có thể thấy hữu ích:
- PHP: The Right Way: đây là một trang web chỉ nói về PHP, nó có mọi thứ cần thiết cho người mới bắt đầu học PHP.
- PHP Courses của Codeademy: có một số khoá PHP cơ bản, miễn phí dành cho người bắt đầu.
- PHP Introduction I: Installing PHP của Zend.
- The PHP Handbook – Learn PHP for Beginners của freeCodeCamp.
Lý thuyết và thực hành đan xen, học đều các ngày trong tuần
Học dàn mỗi ngày hoặc vài ngày đều đặn thay vì học liên tục trong nhiều giờ, nhiều ngày sau đó bỏ lơ không ngó ngàng gì đến.
Phải có một cái gọi là “dự án thú cưng”, tức là tui tạo ra một phần mềm ứng dụng gì đó để biến đổi kiến thức PHP học được để làm ra ứng dụng đó. Nếu không làm vậy, tui chỉ học được thứ không sử dụng được, như vậy thà đọc tiểu thuyết còn hữu ích hơn.
Tui có thể xử lý form liên hệ, đây là một thứ hữu ích, thực tế được dùng rất nhiều và có độ khó từy theo mức độ, ngay cả người thành thạo PHP cũng có khi mắc lỗi lầm trong việc kiểm tra dữ liệu người dùng nhập vào hoặc không đủ khả năng làm chức năng CAPTCHA chống spam.
Học theo cách của những người học ngoại ngữ
Bạn phải có sổ tay hoặc tập vở ghi chép và có một cái bảng viết. Chúng tôi nhấn mạnh điều này bởi vì có kém những học viên họ đã học qua hình thức xem clip, họ từng học hàng trăm giờ trên YouTube nhưng nắm bài rất lơ mơ.
Khi tui chưa có căn bản về PHP, tui chỉ ngồi xem người khác đang viết code chạy nhảy trên màn hình và các đoạn video clip được biên tập; cẩn thận, bỏ những chỗ behind-the-scences chỉ làm cho não tui nhảy loạn cả lên như con khỉ mắc phong, hoàn toàn không thể ghi nhớ được, mức độ hiểu thấp… để rồi một ngày tui nhận ra phương pháp học sai lầm, tốn mớ thời gian vô bổ.
Áp dụng vào xử lý cái gì đó. Ví dụ như học lập trình đến đoạn xử lý chuỗi, bạn không thể đọc lướt qua các hàm mà không thử một số hàm xem nó hoạt động như thế nào. Cụ thể luôn cho dễ hiểu, tui biết khái niệm một đoạn văn là gồm các câu cách nhau bởi dấu chấm câu. Vậy thì, chuỗi đưa vào là một đoạn văn, giờ cắt ra thành từng câu, PHP xử lý ra làm sao, tui phải làm được việc này trong quá trình học tập, tui không thể nói rằng việc này dễ, chỉ cần Google là ra. Nếu như vậy, kiến thức đâu có ở lại. Cái gì cũng tìm trên mạng sẽ dẫn đến cái gọi là “trí tuệ giả tạo”.
Người học ngoại ngữ có cộng đồng giao tiếp, câu lạc bộ để thực hành. Tui cũng có cộng đồng người yêu thích lập trình PHP để mà tham gia. Nếu không có cộng đồng ngoài đời ở địa phương thì tui có thể tự tạo một câu lạc bộ như vậy. Cộng đồng mạng thì nhiêu nhưng cũng tốn thời gian tìm ra nơi phù hợp để tham gia.
Nào, nhữnb bạn thích có một lộ trình học PHP bài bản, hãy đọc bài này để từng bước một học theo.