Top 7 điều cần biết về lập trình cho người mới

Top 7 điều cần biết về lập trình mà chúng tôi rút ra sau nhiều năm làm nghề không bắt đầu bằng câu “học ngôn ngữ nào”. Nó bắt đầu bằng một câu khó chịu hơn: bạn định giải quyết bài toán gì? Nếu bạn đang đứng giữa một rừng khoá học, video miễn phí và lời khuyên trái ngược nhau, bảy điểm dưới đây là thứ tự ưu tiên mà đội ngũ chúng tôi ước gì mình được nghe sớm hơn.

Vì sao 90% người mới học lập trình sai thứ tự ưu tiên

Chúng tôi từng nhận rất nhiều câu hỏi kiểu “nên học Python hay JavaScript trước”. Câu hỏi đó không sai, nhưng nó đặt sai chỗ. Giống như hỏi nên mua búa hay kìm trước khi biết mình cần đóng cái gì.

Sai lầm phổ biến nhất mà tụi mình chứng kiến: một bạn học HTML/CSS khoảng ba tháng, thấy chán vì làm mãi chỉ ra được trang tĩnh, bèn nhảy sang Python. Học Python được vài tuần, đụng tới khái niệm vòng lặp và hàm thì rối, lại nhảy sang C để “lấy nền tảng”. Cuối cùng sau nửa năm, bạn không hoàn thành được cái gì tử tế. Nỗi thất vọng không đến từ việc học dở, mà từ việc không có điểm dừng nào để cảm thấy mình tiến bộ.

Bảy điều dưới đây được chọn theo ba tiêu chí. Một, chúng ảnh hưởng trực tiếp tới tốc độ ra nghề — tức là thời gian từ lúc bắt đầu học tới lúc bạn có thể nhận việc làm đầu tiên. Hai, chúng có thể kiểm chứng bằng thực tế tuyển dụng, không phải lời khuyên cảm tính. Ba, chúng áp dụng được cho cả người tự học lẫn sinh viên CNTT đang học trong trường.

Chúng tôi cố tình không xếp hạng theo “cái nào hot nhất”. Có thứ bạn phải học sớm, có thứ học sau cũng chưa muộn, và có thứ đang được thần thánh hoá quá mức.

1. Tư duy giải quyết vấn đề quan trọng hơn cú pháp

Cú pháp là cách viết câu lệnh sao cho máy hiểu. Bạn có thể thuộc lòng cú pháp của một ngôn ngữ chỉ trong hai tuần nếu chăm chỉ. Nhưng kỹ năng chia một bài toán lớn thành những bước nhỏ mà máy làm được lại mất nhiều tháng luyện.

Lý do rất thực tế: cú pháp tra Google mất ba mươi giây. Còn “chia bài toán này thành mấy hàm, dữ liệu truyền qua lại ra sao” thì Google không trả lời giúp bạn được. Đây cũng là lý do người chuyển ngành thường tiến nhanh hơn sinh viên năm nhất ở giai đoạn đầu. Họ đã có sẵn thói quen chia nhỏ vấn đề từ công việc cũ.

Ví dụ dễ hình dung: bài toán “chia tiền đi ăn nhóm”. Nếu giải bằng đầu, bạn làm liền mạch trong một phút. Nếu giải bằng lập trình, bạn phải tự hỏi: nhập tên từng người thế nào? Ai không ăn món đắt thì trả khác ra sao? Làm tròn số lẻ theo hướng nào để tổng không bị lệch? Mỗi câu hỏi đó chính là một bước tư duy mà cú pháp không giúp bạn trả lời.

Hạn chế thật của lời khuyên này: nếu bạn chỉ luyện tư duy trên giấy mà không gõ code, bạn rất dễ rơi vào “ảo giác hiểu bài”. Nghe thì hiểu, đọc lời giải thì gật gù, nhưng tới lúc tự viết là tắc. Cách kiểm tra đơn giản: lấy một bài toán đời thường, viết các bước bằng mã giả — tức là các bước diễn đạt gần giống tiếng Việt — rồi mới chuyển sang code thật. Nếu bạn viết được mã giả trọn vẹn, phần code chỉ còn là dịch lại.

2. Nền tảng toán và logic: học đủ dùng, không học để thi

Đây là chỗ gây tranh cãi nhiều nhất trong các buổi trò chuyện của tụi mình với sinh viên. Có bạn nghe ai đó nói “làm web không cần toán” rồi bỏ luôn toán rời rạc. Cũng có bạn nghe “phải học giải tích thật chắc” rồi học hai năm trước khi viết dòng code đầu tiên. Cả hai đều lệch.

Sự thật là nhu cầu toán phụ thuộc gần như hoàn toàn vào hướng nghề bạn nhắm tới. Dưới đây là mức độ tham khảo, được chúng tôi tổng hợp theo đề cương đào tạo của các trường CNTT phổ biến ở Việt Nam. Danh sách này nói lên việc bạn nên đặt mức ưu tiên thế nào cho từng môn, không phải điều kiện bắt buộc để được nhận vào nghề.

  • Web, App thông thường: toán rời rạc ở mức cơ bản, xác suất thống kê ít dùng, giải tích gần như không đụng tới trong công việc hằng ngày.
  • Data, AI: toán rời rạc quan trọng và cần học nghiêm túc, xác suất thống kê rất quan trọng, giải tích quan trọng đặc biệt nếu đi sâu vào mô hình.
  • Game, Đồ họa: toán rời rạc quan trọng, xác suất thống kê ở mức trung bình, giải tích quan trọng vì đụng tới vector và ma trận liên tục.

Đọc danh sách trên, điều đáng chú ý không phải mục nào dài hơn mục nào. Điều đáng chú ý là môn bạn cần học nghiêm túc khác nhau tuỳ hướng. Nếu bạn nhắm làm web, việc cày giải tích tới mức giỏi là đầu tư lệch hướng. Nếu bạn nhắm làm AI, việc né xác suất thống kê sẽ khiến bạn đọc tài liệu mà không hiểu bản chất thuật toán.

Danh sách này chỉ mang tính tham khảo. Từng công ty và từng vị trí cụ thể có thể yêu cầu khác nhau, đặc biệt ở mảng AI và khoa học dữ liệu. Cách kiểm chứng đáng tin nhất là đọc JD — viết tắt của job description, bản mô tả công việc nhà tuyển dụng đăng tuyển. Đọc khoảng mười JD thật cho vị trí bạn muốn, bạn sẽ thấy yêu cầu về toán xuất hiện dày hay thưa.

3. Ngôn ngữ đầu tiên: chọn theo mục tiêu, không theo trend

Ngôn ngữ đầu tiên quan trọng không nằm ở bản thân nó, mà ở chỗ nó quyết định bạn có giữ được động lực trong sáu tháng đầu hay không. Học một ngôn ngữ chỉ vì thấy nó lên top trên mạng, nhưng không dùng nó làm ra được thứ gì bạn thích, là công thức bỏ học.

Tiêu chí chọn mà tụi mình khuyên dùng gồm ba điểm. Một, cộng đồng tiếng Việt đủ lớn để bạn hỏi khi tắc. Hai, tài liệu miễn phí chất lượng, không phải trả tiền mới học được. Ba, có việc làm thật ở thị trường Việt Nam, để sau này bạn không phải học lại từ đầu.

Gợi ý nhanh theo mục tiêu: muốn làm web, JavaScript là lựa chọn thực dụng vì nó chạy được cả trên trình duyệt lẫn máy chủ. Muốn làm dữ liệu, Python có hệ thư viện phong phú nhất. Muốn làm ứng dụng điện thoại, Kotlin cho Android và Swift cho iOS là hai hướng chính. Muốn làm nhúng — tức là lập trình cho thiết bị nhỏ như vi điều khiển, cảm biến — thì C vẫn là cửa vào.

Hạn chế thật cần nói thẳng: đừng chọn ngôn ngữ chỉ vì thấy lương cao trên mạng. Những tin tuyển dụng trả lương cao thường yêu cầu hai tới ba năm kinh nghiệm và một nền tảng vững. Chúng không dành cho người mới, kể cả người mới học ngôn ngữ đó. Còn một điều nữa nên nhớ: ở giai đoạn nền tảng, cú pháp một ngôn ngữ thay đổi không lớn. Kỹ năng bạn luyện được từ ngôn ngữ đầu tiên — chia hàm, xử lý lỗi, đọc tài liệu — chuyển sang ngôn ngữ sau gần như nguyên vẹn.

Nếu bạn thuộc nhóm sinh viên muốn có thêm nguồn học miễn phí, kho tài liệu học lập trình tiếng Việt miễn phí của chúng tôi là chỗ bạn có thể bắt đầu mà không tốn đồng nào.

4. Công cụ và môi trường làm việc: thứ quyết định tốc độ học

Cùng một bài tập, người biết dùng Git và biết cách debug có thể xong trong hai giờ. Người không biết có thể mất cả buổi tối, mà còn không chắc mình đang đi đúng hướng. Khoảng cách này cộng dồn qua hàng trăm bài tập, và đó là lý do cùng một lớp học, người ta tiến nhanh chậm khác nhau rõ rệt dù trình độ tư duy ban đầu tương đương.

Danh sách tối thiểu mà một người mới nên có, theo thứ tự nên học:

  • Git ở mức cơ bản: commit, branch, merge. Nói dễ hiểu, đây là cách lưu lại các phiên bản code để bạn quay về được khi làm hỏng.
  • Đọc log lỗi: biết thông báo lỗi đang chỉ vào file nào, dòng nào, loại lỗi gì.
  • Dùng terminal ở mức cơ bản: di chuyển thư mục, chạy lệnh, cài gói.
  • Một editor hoặc IDE quen tay. IDE là môi trường lập trình tích hợp, hiểu đơn giản là phần mềm gom nhiều công cụ viết code vào một chỗ.

Hạn chế mà chúng tôi thấy nhiều bạn mắc phải ngay từ tuần đầu: cài quá nhiều plugin và extension. Mỗi cái thêm vào là một lớp có thể gây lỗi, và khi môi trường đã rối thì bạn không biết lỗi đến từ code của mình hay từ công cụ. Cách chữa đơn giản là bắt đầu với cấu hình tối giản, chỉ thêm khi bạn thật sự hiểu mình cần gì.

Một điểm ít ai nhắc với người tự học: bạn không có ai review code cho mình. Không có đồng nghiệp nào chỉ ra rằng tên biến của bạn khó hiểu hay hàm của bạn đang làm quá nhiều việc. Bù lại, chính vì không ai nhắc nên thói quen bạn tự xây từ đầu sẽ theo bạn rất lâu. Hãy tập commit thường xuyên và viết thông điệp commit tử tế ngay từ bài tập đầu tiên, đó là cách rẻ nhất để sau này làm việc nhóm không bị khớp.

5. Cách đọc tài liệu và tự debug: kỹ năng ít ai dạy

Nhiều người ngoài nghề hình dung công việc lập trình là ngồi gõ code liên tục từ sáng đến tối. Thực tế ngược lại: phần lớn thời gian dev dành cho việc đọc code người khác viết trước và sửa lỗi. Con số chúng tôi quan sát thấy rất ổn định qua các dự án, khoảng bảy tới tám phần trăm tới bảy mươi tới tám mươi phần trăm thời gian là đọc và sửa, không phải viết mới.

Việc này giải thích vì sao kỹ năng đọc tài liệu và tự debug lại đáng giá tới vậy. Bạn không thể đi hỏi người khác mãi, và không phải lỗi nào cũng có sẵn trên mạng với đúng phiên bản bạn đang dùng.

Quy trình debug mà đội ngũ chúng tôi dùng, có thể áp dụng ngay từ bài tập nhỏ:

  • Tái hiện lỗi trước đã: làm sao cho lỗi xuất hiện lại một cách chắc chắn.
  • Thu hẹp phạm vi: chia đôi đoạn code để biết lỗi nằm nửa nào.
  • Đọc thông báo lỗi từ dưới lên, vì dòng cuối thường là nguyên nhân gốc.
  • Tìm nguyên nhân trước khi sửa, đừng sửa thử cho tới khi chạy được.
  • Sửa xong thì thêm một phép kiểm tra nhỏ, để lần sau lỗi tương tự bật lên ngay.

Hạn chế của kỹ năng này khá nghiệt ngã: nó chỉ tăng khi bạn tự vật lộn với lỗi. Ngồi xem người khác sửa giúp thì gần như không lên tay, vì phần khó nhất — khoảng lặng khi bạn chưa biết lỗi nằm ở đâu — đã bị người khác lấy mất. Nhóm đang kẹt ở giai đoạn “copy code trên mạng mà không hiểu” thường không thiếu kiến thức cú pháp. Họ thiếu thói quen đọc lỗi và truy vết.

Nếu bạn muốn tự kiểm tra xem kỹ năng kỹ thuật của mình có đang đi đúng hướng không, việc hiểu cách đánh giá chất lượng sản phẩm cũng hữu ích. Bạn có thể tham khảo bài về công cụ kiểm tra tốc độ website dành cho lập trình viên để thấy cách một sản phẩm được đánh giá từ bên ngoài.

Tài liệu đọc cũng cần chọn. Tài liệu chính thức của ngôn ngữ hay thư viện luôn nên là điểm dừng đầu tiên, vì nó khớp đúng phiên bản bạn đang dùng. Bài viết trên blog cá nhân có thể hay nhưng hay lỗi thời. Hỏi đáp trên các diễn đàn tiếng Anh thì hữu ích nhưng bạn phải biết chọn đáp án còn đúng, chứ không phải đáp án được nhiều phiếu nhất.

6. Dự án thực tế: bằng chứng duy nhất nhà tuyển dụng tin

CV ghi “thành thạo Python” không mang nhiều giá trị. Một kho mã nguồn có commit đều đặn trong nhiều tháng có giá trị hơn nhiều. Đó không phải ý kiến của riêng chúng tôi; đa số buổi phỏng vấn thực tập mà tụi mình từng ngồi cùng khách hàng đều xoay quanh câu “bạn đã làm gì rồi”.

Tiêu chí chọn dự án thì đơn giản, nhưng nhiều bạn bỏ qua. Hãy chọn việc giải quyết vấn đề của chính bạn trước. Quy mô nhỏ nhưng phải hoàn chỉnh — chạy được, có người dùng thử, không bỏ dở giữa đường. Và phải có README, tức là tệp mô tả ngắn gọn dự án làm gì, chạy thế nào, dùng công nghệ gì.

Ba ví dụ mà chúng tôi thấy tạo ấn tượng tốt vì nhà tuyển dụng đo được kỹ năng cụ thể. Một công cụ tự động đổi tên hàng loạt tệp, chứng minh bạn xử lý được tệp và vòng lặp. Một web ghi chú cá nhân có lưu dữ liệu, chứng minh bạn nắm được cả giao diện lẫn lưu trữ. Một script thống kê chi tiêu đọc từ tệp CSV, chứng minh bạn biết xử lý dữ liệu thật thay vì dữ liệu mẫu.

Hạn chế cần nói rõ: dự án nào cũng giống nhau thì gần như không tạo khác biệt. Danh sách việc cần làm, ứng dụng xem thời tiết, hay trang đăng nhập cơ bản — những dự án này có hàng nghìn phiên bản trên mạng. Người phỏng vấn đã thấy đủ rồi. Nếu bạn làm chúng để luyện tập thì tốt, nhưng đừng đặt chúng làm điểm nhấn trong hồ sơ.

Một lưu ý nữa về cách trình bày. Đừng chỉ đưa link kho mã nguồn rồi im. Hãy chuẩn bị được hai phút nói về lý do bạn chọn giải pháp đó và một chỗ bạn từng làm sai rồi sửa. Chính phần thứ hai mới là thứ cho thấy bạn thật sự đã đi qua dự án.

7. Lộ trình và thời gian: con số thật thay vì kỳ vọng

Kỳ vọng sai về thời gian là nguyên nhân bỏ học phổ biến nhất mà chúng tôi gặp. Rất nhiều bạn nghĩ ba tháng là đủ để đi làm, rồi tới tháng thứ tư thấy mình vẫn chưa làm xong nổi một dự án tử tế, bèn kết luận mình không có năng khiếu.

Với người học được khoảng mười tới mười lăm giờ mỗi tuần — tức là vừa học vừa làm hoặc vừa học ở trường — các mốc tham khảo thường như sau. Một tới hai tháng để nắm cú pháp cơ bản và viết được các đoạn mã nhỏ. Ba tới sáu tháng để làm được một dự án nhỏ hoàn chỉnh. Sáu tới mười hai tháng để đủ tự tin ứng tuyển vị trí fresher, tức là nhân viên mới chưa có kinh nghiệm.

Các mốc này phụ thuộc vào nền tảng cá nhân và chất lượng thực hành, không phải chỉ số giờ ngồi trước màn hình. Học mười giờ mỗi tuần nhưng toàn xem video không gõ code sẽ kéo dài gấp đôi, thậm chí hơn. Đây là chỗ nhiều người hiểu sai nhất: xem video tạo cảm giác tiến bộ rất nhanh, nhưng cảm giác đó biến mất ngay khi bạn phải tự viết dòng đầu tiên.

Cách đo tiến bộ mà tụi mình thấy hiệu quả nhất không cần bảng biểu gì phức tạp. Mỗi tháng, hãy tự trả lời một câu: tháng này mình làm được việc gì mà tháng trước không làm được. Nếu câu trả lời là “không có gì cụ thể”, thì vấn đề không nằm ở tốc độ học. Nó nằm ở cách học.

Một chuyện nhỏ nhưng đáng nhắc: đừng so mốc thời gian của mình với người khác. Có bạn có nền toán tốt nên qua phần thuật toán nhanh hơn. Có bạn đã quen với máy tính từ nhỏ nên phần công cụ không mất thời gian. So sánh chỉ hữu ích khi bạn so chính mình của tháng này với chính mình của tháng trước.

Nhân nói về việc giữ nhịp đều đặn, một lời nhắc không liên quan trực tiếp tới code nhưng lại đúng với nghề này: các vấn đề nhỏ tích lại thành vấn đề lớn, cả trong code lẫn trong công việc giấy tờ hằng ngày. Bạn có thể xem ví dụ ở bài về luồng xử lý tự động khi thu hộ cho web bán hàng, nơi một quy trình thủ công để lâu ngày sẽ thành nút thắt. Lập trình cũng vậy: một hàm viết ẩu sẽ thành ba hàm khó sửa về sau.

Câu hỏi thường gặp

Học lập trình bao lâu thì có việc làm đầu tiên?

Với người học đều đặn mười tới mười lăm giờ mỗi tuần, khoảng sáu tới mười hai tháng là con số thực tế để bắt đầu ứng tuyển vị trí fresher. Thời gian này ngắn hơn nếu bạn đã có nền toán hoặc từng học CNTT, dài hơn nếu bạn chưa từng viết code bao giờ và chỉ học cuối tuần.

Người không có bằng CNTT có xin được việc dev không?

Có, nhưng đường đi khác. Nhà tuyển dụng sẽ dồn câu hỏi vào dự án và sản phẩm bạn từng làm, thay vì vào bảng điểm. Nghĩa là bạn cần một hồ sơ dự án chắc hơn mức bình thường, và thường phải chấp nhận vị trí khởi đầu thấp hơn một chút để vào được nghề trước.

Nên học một ngôn ngữ thật sâu hay học nhiều ngôn ngữ?

Học sâu một ngôn ngữ trước, ít nhất tới mức làm xong một dự án hoàn chỉnh. Sau đó học ngôn ngữ thứ hai sẽ nhanh hơn nhiều, vì phần lớn kỹ năng nền đã có sẵn. Học song song nhiều ngôn ngữ ngay từ đầu thường dẫn tới tình trạng biết chút mỗi thứ mà không làm được gì.

Có cần học toán cao cấp để làm lập trình web không?

Không cần, với phần lớn công việc web và ứng dụng thông thường. Toán rời rạc ở mức cơ bản vẫn nên nắm vì nó rèn cách suy nghĩ logic. Còn giải tích và xác suất thống kê chỉ thật sự cần khi bạn rẽ sang mảng dữ liệu, học máy hoặc đồ họa.

Tự học qua video miễn phí có đủ để đi làm không?

Đủ để đi tới một điểm, nhưng thiếu một thứ khó tự học: phản hồi về code của bạn. Video không biết code bạn viết có sạch hay không, cũng không chỉ ra chỗ bạn hiểu sai. Cách bù đắp thực tế là làm dự án, đăng lên nơi công khai và chủ động xin nhận xét từ cộng đồng.

Nếu bạn chỉ giữ được một điều từ bài này, hãy giữ điều này: đừng chọn ngôn ngữ trước, hãy chọn việc mình muốn làm ra trước. Một trang web nhỏ cho công việc hiện tại, một công cụ tiết kiệm cho bạn nửa tiếng mỗi ngày, một thứ bạn thật sự muốn dùng — bất cứ thứ gì trong số đó đều là mốc neo tốt hơn mọi danh sách “ngôn ngữ nên học”. Chúng tôi từng thấy người học chậm hơn trung bình nhưng đi tới nơi, chỉ vì họ kiên định với một dự án cụ thể thay vì nhảy giữa các khoá học. Còn nếu bạn cần thêm nguồn tham khảo ngoài lề về công nghệ và công cụ, các trang tổng hợp như graphicalerts.com hay websitecongty.vn đôi khi có những bài viết hữu ích để đọc thêm khi bạn đã đi qua phần nền tảng.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

DMCA.com Protection Status