Người tự học lập trình hay kẹt ở một vòng lặp quen thuộc: xem hết khoá này lại mua khoá khác, làm theo được từng bài nhưng tự viết một chương trình riêng thì không biết bắt đầu từ đâu. Một cách thoát khỏi vòng lặp đó là chọn một dự án nhỏ có thật, có người dùng thật dù chỉ là chính mình hay người nhà, rồi nuôi nó khoảng một năm. Dự án quyết định bạn cần học gì tiếp, thay vì danh mục khoá học quyết định.
Bài này không so sánh ngôn ngữ, không vẽ lộ trình nghề nghiệp. Nó dành cho người đi làm đã học qua phần cơ bản, có vài giờ mỗi tuần, muốn sau một năm có một thứ mình tự làm ra và hiểu từng dòng. Không có lời hứa về việc làm hay thu nhập; chỉ là một cách giữ nhịp học lâu dài mà nhiều người tự học đã dùng.
Vì sao khoá học nối tiếp khoá học lại giữ chân người ta tại chỗ
Một khoá học tốt dắt bạn qua từng bước, mỗi bài có đáp án, mỗi lỗi đã được người dạy lường trước. Cảm giác tiến bộ rất rõ vì bạn liên tục hoàn thành bài. Nhưng phần khó nhất của lập trình lại không có trong khoá: tự quyết định cấu trúc, đọc thông báo lỗi lạ chưa ai giải thích, tìm tài liệu cho vấn đề cụ thể của mình, chịu nhiều giờ không biết vì sao chương trình không chạy.
Khi chỉ học qua khoá, người học giỏi lên ở việc làm theo hướng dẫn chứ không giỏi lên ở việc tự giải quyết vấn đề. Đến lúc đứng trước một tệp trống, khoảng cách đó lộ ra và cảm giác "mình chưa đủ trình" lại đẩy họ sang một khoá mới. Vòng lặp này có thể kéo dài nhiều năm.
Dự án cá nhân phá vòng lặp vì nó đặt bạn vào đúng tình huống mà khoá học tránh: vấn đề thật, không có đáp án sẵn. Khoá học vẫn hữu ích, nhưng ở vai trò khác: tra cứu từng phần khi dự án cần, không phải con đường chính.
Chọn dự án: nhỏ, có thật và sống được một năm
Giải quyết một việc bạn thật sự gặp. Một trang ghi chi tiêu gia đình, một công cụ sắp lịch trực cho nhóm, một trang lưu công thức nấu ăn của mẹ, một chương trình nhắc tưới cây. Khi chính bạn dùng nó hằng tuần, bạn sẽ thấy lỗi và muốn sửa, đó là động lực bền hơn mọi kỷ luật.
Phiên bản đầu làm xong trong vài tuần. Chọn phạm vi sao cho bản chạy được đầu tiên, dù xấu, ra đời trong khoảng một tháng. Dự án mà phải ba tháng mới chạy được dòng đầu tiên thường chết trước khi có người dùng.
Có chỗ để lớn dần. Một dự án tốt có thể thêm tính năng theo quý: đăng nhập, lưu dữ liệu, giao diện điện thoại, xuất báo cáo. Mỗi tính năng là một chủ đề học mới mà bạn cần thật.
Tránh dự án quá lớn. Mạng xã hội, sàn thương mại điện tử đầy đủ, trò chơi nhiều người chơi trực tuyến là những đề tài nghe hấp dẫn nhưng vượt xa sức một người học buổi tối. Có thể làm một mảnh nhỏ của chúng, không làm cả khối.
Không phụ thuộc quá nhiều dịch vụ trả phí. Chi phí hằng tháng tăng dần là lý do âm thầm khiến nhiều dự án bị bỏ. Chọn cách triển khai bạn duy trì được cả năm.
Nuôi dự án 12 tháng: các quý và thứ bạn sẽ học
Bảng sau là một khung ví dụ cho dự án web nhỏ; dự án khác sẽ có các quý khác, nhưng nguyên tắc giống nhau: mỗi quý thêm một lớp, mỗi lớp kéo theo một mảng kiến thức.
| Quý | Mục tiêu dự án | Kiến thức buộc phải học |
|---|---|---|
| Quý 1 | Bản chạy được trên máy mình, làm một việc chính | Cấu trúc chương trình, đọc lỗi, quản lý mã nguồn bằng công cụ phiên bản |
| Quý 2 | Lưu dữ liệu lâu dài, người nhà dùng thử | Cơ sở dữ liệu cơ bản, xử lý dữ liệu nhập sai |
| Quý 3 | Đưa lên mạng, dùng được trên điện thoại | Triển khai, bảo mật cơ bản, giao diện co giãn |
| Quý 4 | Dọn dẹp, viết kiểm thử cho phần quan trọng, viết hướng dẫn | Kiểm thử, đọc lại mã cũ của chính mình, tài liệu |
Cuối năm, bạn không chỉ có một sản phẩm; bạn có kinh nghiệm quay lại đọc mã mình viết chín tháng trước và thấy nó khó hiểu đến mức nào. Trải nghiệm đó dạy về cách viết mã rõ ràng nhiều hơn mọi lời khuyên.
Nhịp tuần cho người đi làm
Lập trình cần những khoảng tập trung dài hơn nhiều kỹ năng khác, vì mỗi lần bắt đầu phải nạp lại bối cảnh trong đầu. Một nhịp mẫu khoảng năm sáu giờ mỗi tuần:
| Thời điểm | Việc | Ghi chú |
|---|---|---|
| Hai tối trong tuần, 45–60 phút | Làm một việc nhỏ đã xác định trước | Không mở việc mới giữa buổi |
| Một buổi cuối tuần, 2–3 giờ | Việc cần tập trung dài: tính năng mới, lỗi khó | Tắt thông báo, chuẩn bị sẵn danh sách việc |
| Cuối mỗi buổi, 5 phút | Ghi vào nhật ký dự án: đã làm gì, đang kẹt ở đâu, việc tiếp theo | Giúp buổi sau vào việc ngay |
| Ngày bận | 10–15 phút đọc tài liệu cho tính năng sắp làm | Giữ đầu óc trong dự án mà không cần ngồi viết mã |
Dòng "việc tiếp theo" ở cuối mỗi buổi là thứ đơn giản nhất mà hiệu quả nhất. Người tự học bỏ dự án thường không vì khó, mà vì mỗi lần mở máy lại mất nửa giờ nhớ xem mình đang làm gì, rồi mệt và tắt máy.
Khi kẹt nhiều ngày ở một lỗi
Kẹt là phần bình thường của lập trình, kể cả với người làm nghề lâu năm. Khác biệt là người có kinh nghiệm có quy trình gỡ: đọc kỹ thông báo lỗi, thu nhỏ vấn đề về đoạn mã ngắn nhất còn tái hiện được lỗi, kiểm tra từng giả định một, tìm kiếm với đúng từ khoá của thông báo lỗi.
Đặt cho mình một giới hạn thời gian. Nếu sau hai buổi vẫn chưa gỡ được, hãy hỏi: một cộng đồng người học, một người quen làm nghề, một diễn đàn hỏi đáp. Khi hỏi, mô tả mình đang làm gì, mong đợi gì, thực tế xảy ra gì, đã thử những gì. Chính việc viết ra câu hỏi rõ ràng nhiều khi giúp bạn tự tìm ra lỗi trước khi gửi.
Trợ lý AI có thể gợi ý nguyên nhân, nhưng nếu chép nguyên đoạn sửa mà không hiểu, bạn bỏ qua đúng phần học quý nhất của dự án. Dùng nó như một người để hỏi "vì sao", rồi tự viết lại phần sửa.
Ghi lại hành trình và để dự án có chỗ đứng riêng
Một nhật ký dự án đơn giản, ghi theo ngày những gì đã làm và đã học, sau một năm thành một tài liệu đáng giá: bạn thấy rõ những tháng tiến nhanh, những tháng kẹt, những quyết định sai phải làm lại. Nhiều người tự học còn viết lại một số bài ngắn về lỗi đã gặp và cách gỡ, vừa để nhớ, vừa giúp người đi sau.
Khi dự án đã chạy được trên mạng, việc đặt nó dưới một địa chỉ riêng giúp nó trông như một sản phẩm có thật hơn là một bài tập. Người dùng là người nhà, bạn bè cũng dễ nhớ và dễ quay lại hơn. Ai muốn dự án của mình có một cái tên gọn để giữ lâu dài có thể xem qua các tên miền ở tenmiendangcap.com trước khi đưa dự án lên.
Quan trọng hơn mọi địa chỉ là việc dự án còn được dùng. Một công cụ nhỏ mà gia đình bạn mở mỗi tuần dạy bạn nhiều hơn một dự án đẹp không ai dùng.
Sau 12 tháng: tiếp tục, mở rộng hay khép lại
Hết một năm, có ba hướng hợp lý. Nếu dự án còn được dùng và bạn còn muốn thêm tính năng, cứ tiếp tục, mỗi tính năng mới là thêm một lớp kiến thức. Nếu dự án đã đủ cho nhu cầu, có thể giữ nó chạy ở mức duy trì và bắt đầu một dự án thứ hai ở mảng khác, như từ web sang xử lý dữ liệu, để mở rộng hiểu biết.
Hướng thứ ba là khép lại có chủ đích: viết tổng kết những gì đã học, lưu trữ mã nguồn, rồi dừng. Khép lại một dự án sau một năm không phải là bỏ cuộc nếu bạn đã học được điều mình muốn từ nó. Bỏ cuộc là bỏ ngang ở tháng thứ hai mà không biết vì sao.
Dù chọn hướng nào, đừng bỏ thói quen học theo dự án. Người tự học lập trình đi được xa thường có một chuỗi dự án nhỏ nối nhau qua nhiều năm, chứ không có một danh sách dài chứng nhận hoàn thành khoá học.
Dấu hiệu dự án đang chết dần và cách cứu
Dự án cá nhân hiếm khi chết vì một quyết định bỏ; nó chết dần qua những tuần không mở máy. Nhận ra sớm các dấu hiệu dưới đây giúp bạn kịp xoay xở:
- Buổi nào cũng bắt đầu bằng đọc lại mã mà không biết làm gì tiếp. Cách cứu: viết lại danh sách việc nhỏ, mỗi việc làm xong trong một buổi, và luôn ghi việc tiếp theo trước khi tắt máy.
- Tính năng đang làm quá lớn, kéo dài nhiều tuần không xong. Cách cứu: cắt nó thành phiên bản nhỏ nhất dùng được, đưa vào dùng trước, phần còn lại để quý sau.
- Muốn viết lại toàn bộ bằng công nghệ mới. Đây là cám dỗ quen thuộc khi mã cũ trở nên rối. Đôi khi viết lại là đúng, nhưng thường là cách né phần khó. Thử sửa từng phần nhỏ trước khi quyết định đập đi làm lại.
- Không còn ai dùng, kể cả chính mình. Hỏi lại xem dự án còn giải quyết việc gì thật không. Nếu không, đổi hướng sang một nhu cầu gần đó, hoặc khép lại có tổng kết.
- Mỗi lần mở máy là thấy mệt. Nếu mệt mỏi lan ra mọi việc chứ không riêng dự án, hãy giảm nhịp, ngủ đủ; dự án có thể chờ vài tuần.
Phần lớn dự án được cứu bằng một việc rất nhỏ làm xong ngay trong buổi đầu quay lại. Cảm giác hoàn thành, dù chỉ là sửa một dòng chữ trên giao diện, thường đủ để kéo bạn sang buổi tiếp theo.
Câu hỏi thường gặp
Chưa học xong phần cơ bản có nên bắt đầu dự án chưa?
Cần nắm được biến, điều kiện, vòng lặp, hàm và cách chạy một chương trình nhỏ. Không cần chờ học hết mọi thứ. Thường sau vài tuần đến vài tháng học cơ bản là đủ để bắt đầu một dự án rất nhỏ, rồi học thêm theo nhu cầu của nó.
Làm dự án một mình có thiếu người góp ý không?
Có, nên tìm cách bù: nhờ một người làm nghề đọc mã mỗi tháng, tham gia một cộng đồng người tự học, hoặc đăng mã công khai để người khác góp ý. Một người đọc mã định kỳ có thể chỉ ra những thói quen xấu bạn không tự thấy.
Dự án nghe quá đơn giản thì có đáng làm không?
Dự án đơn giản nhưng có người dùng thật thường dạy nhiều hơn dự án phức tạp bỏ dở. Độ khó sẽ tự đến khi bạn thêm tính năng, xử lý dữ liệu nhập sai, đưa lên mạng và giữ nó chạy ổn trong nhiều tháng.
Có nên làm theo dự án mẫu trong khoá học không?
Làm theo dự án mẫu tốt để học cách tổ chức, nhưng hãy thay đổi ít nhất một phần đáng kể theo nhu cầu riêng. Phần bạn tự quyết định, không có hướng dẫn, mới là phần luyện kỹ năng giải quyết vấn đề.
Bỏ dự án vài tuần thì quay lại thế nào?
Mở nhật ký dự án, đọc lại các dòng cuối, chạy thử chương trình, rồi chọn một việc rất nhỏ để làm ngay buổi đầu, như sửa một lỗi giao diện. Đừng bắt đầu lại bằng tính năng lớn; buổi đầu chỉ cần nạp lại bối cảnh.
Một năm làm dự án có đủ để xin việc lập trình không?
Không có câu trả lời chung; nó phụ thuộc thị trường, vị trí và những gì bạn học được. Dự án cá nhân là một bằng chứng tốt về khả năng tự học, nhưng việc chuyển nghề nên tìm hiểu kỹ ở các nguồn chuyên về sự nghiệp và tuyển dụng.