Nếu bạn đang tự học lập trình, có thể bạn sẽ có nhiều câu hỏi hơn câu trả lời khi mới bắt đầu.
Cần học gì? Làm sao sửa bug? Và làm sao giữ động lực khi mọi thứ dường như không thể?
Nếu bạn lo lắng về cơ hội thành công trong coding, hy vọng 10 mẹo dưới đây sẽ khích lệ và truyền cảm hứng cho bạn!
1. Xác định mục tiêu cụ thể ngay từ đầu
Câu hỏi phổ biến nhất từ người muốn học code: "Nên học ngôn ngữ nào?"
Điều này dễ hiểu, nhưng đây là câu hỏi sai để bắt đầu.
Câu hỏi đúng là: "Mục tiêu cuối cùng của tôi khi học code là gì?"
Giống như đi du lịch - không ai đi mà không biết đích đến. Không ai học code chỉ để... học code. Luôn có lý do.
Bạn muốn học code để... làm gì?
Hãy dành thời gian suy nghĩ về mục tiêu cuối cùng. Khi đã có, hãy suy ngược lại để thấy cần làm gì để đạt được!
Chưa rõ mục tiêu? Tham khảo vài ví dụ phổ biến:
- Làm việc tại công ty ở thành phố mình sống để có thu nhập ổn định.
- Khởi nghiệp làm website cho doanh nghiệp nhỏ.
- Kiếm tiền bằng cách xây dựng ứng dụng di động.
- Làm việc tại startup công nghệ.
Nếu không muốn lãng phí thời gian và lang thang vô định, bạn bắt buộc phải xác định mục tiêu #1 của mình.
2. Chọn một lộ trình và kiên trì theo đuổi
Ưu điểm lớn của tự học online ngày nay: có vô vàn tutorial, bài viết, video miễn phí. Bạn có thể học bất cứ gì chỉ bằng cách search.
Nhược điểm: quá nhiều tài nguyên khiến bạn bị choáng ngợp (analysis paralysis), khó tìm ra cái "tốt nhất".
Lời khuyên: Đừng mất thời gian tìm "tutorial tốt nhất thế giới" cho chủ đề X, Y, Z.
Chỉ cần chọn một và bắt đầu.
Dù không phải là tốt nhất, nó rất có thể vẫn khá tốt. Quan trọng hơn là bạn hoàn thành nó, thay vì tìm cái "hoàn hảo".
Thực tế, việc lướt qua hàng chục khóa online, nhảy nhót giữa các tutorial thường chỉ là trì hoãn (procrastination) được che giấu bằng vẻ bận rộn.
Chọn một lộ trình, kiên trì đến cuối (trừ khi nó thực sự tệ). Sau đó bạn có thể học thêm nguồn khác nếu muốn!
3. Học code là marathon, không phải sprint
Nhiều bài blog/video hứa hẹn: "Học code và xin việc trong 3-6 tháng". Có thể, nhưng với nhiều điều kiện:
- Không phải làm full-time.
- Có tiền (bootcamp thường $10.000+).
- Có thể theo kịp nhịp độ cực cao.
Vấn đề: Quá宣传这给 người mới một bức tranh quá hồng hào về việc "dễ dàng" để vào nghề. Thực tế sẽ cho họ "cú sốc" khi nhận ra nó khó đến mức nào.
Tôi có bạn qua bootcamp và xin việc developer trong vài tháng. Nhưng với những người tự học (không bootcamp), thường mất 1-2 năm.
Để hiểu thực tế, hãy đọc phỏng vấn của Owen (link). Anh ấy có việc full-time và con nhỏ, nhưng tự học code bằng cách dậy sớm trước bình minh gần như mỗi ngày và "gày" trong 2 năm. Vừa mới xin được việc web developer full-time sau quá trình dài, cực kỳ chăm chỉ.
Tôi không muốn làm nản bạn, chỉ muốn cho bức tranh thực tế. Chắc chắn có thể! Nhưng hãy kỳ vọng mất 1 năm trở lên để đạt mục tiêu, không phải vài tháng.
4. Chậm mà chắc mới thắng cuộc
Bây giờ bạn biết học code khó. Nhưng cũng đừng burnout (kiệt sức) vì thức khuya/dậy 5h sáng code.
Một số người muốn học nhanh nhất có thể, cố gắng code 5h/ngày sau giờ làm. Có người làm được, nhưng nhiều người thì quá tải → nản chí → bỏ cuộc (quit). Và bỏ cuộc chính là điều bạn nhất thiết phải tránh!
Làm sao để học code mà không burnout?
- Đặt mục tiêu bền vững (sustainable). Bắt đầu chậm: 30 phút hoặc 1h/ngày. Hoặc 1-2h vài lần/tuần.
- Tăng dần thời gian khi đã quen. Thói quen hình thành sẽ giúp dễ dàng tiếp tục mà không nản.
5. Đừng so sánh tiến độ với người khác...
Lời khuyên khó tuân thủ, nhưng khi theo đuổi mục tiêu, hãy cố gắng không so sánh bản thân với người khác.
Một mặt, xem người khác làm thế nào có thể hữu ích. Nhưng thời đại mạng xã hội, so sánh thường chỉ khiến bạn nản chí.
Chìa khóa thành công: Cúi đầu làm việc của mình, không lo tiến độ người khác.
Người khác học nhanh hoặc chậm hơn bạn - đều bình thường. Mỗi người có hoàn cảnh, nhịp độ khác nhau.
Càng ít nghĩ về so sánh, càng tập trung vào con đường của mình.
... nhưng hãy kết bạn với đồng hành!
Không so sánh ≠ tách mình ra khỏi thế giới.
Tự học online một mình rất dễ cô đơn.
Tìm người cùng chèo lái, kết bạn với họ - nguồn động lực quan trọng.
Tại sao?
- Biết rằng người khác cũng gặp khó khăn như bạn - cực kỳ khích lệ.
- Bạn bè giúp đỡ giải quyết vấn đề. Nhiều góc nhìn > một góc nhìn.
Học offline? Hãy học nhóm. Học online? Tìm community: Meetup, nhóm Facebook dev, Discord, Reddit (r/learnprogramming), Twitter/X #100DaysOfCode, Instagram dev community.
Xây dựng kết nối giúp bạn duy trì động lực, và bạn cũng giúp đỡ người khác!
6. Biến coding thành thói quen hàng ngày
Tìm thời gian code khó - cuộc sống bận rộn. Nhưng nếu xây dựng thói quen code hàng ngày hoặc vài lần/tuần, bạn đang trên đường đúng.
Xây dựng thói quen như mở đường trong rừng rậm. Lần đầu đi rất khó (chưa có đường). Đi nhiều lần, đường rõ ràng, phẳng, dễ đi. Sau lâu, đường thành đường lớn.
Tạo thói quen cũng vậy - lần đầu ngồi code rất khó. Nhưng kiên trì, não bộ quen pattern. Não thích routine, dần dần việc bắt đầu sẽ dễ dàng hơn.
Cách làm thói quen bám dính:
- Đặt trigger (kích hoạt) ngay trước thói quen mới. Ví dụ: code ngay sau khi pha cà phê/trà sáng. Hoặc sau khi dọn dẹp bữa tối.
- Lặp lại liên tục theo thời gian - đó là chìa khóa.
7. Học cách research và giải quyết vấn đề (Problem Solving)
Kỹ năng tự giải quyết vấn đề là quan trọng nhất, nếu không phải QUAN TRỌNG NHẤT của web developer.
Bạn nghĩ dev giàu kinh nghiệm biết hết mọi thứ? Sai lầm!
Tuy họ nhớ nhiều thứ, nhưng vẫn search Google/DuckDuckGo hàng ngày. Tôi cũng vậy - đã 7 năm trong ngành!
Làm sao giỏi kỹ năng này? Thực hành (Practice)!
Khi bị kẹt, trước khi hỏi người khác, hãy search lỗi/thông báo error.
Tôi thường search "XXX doesn't work" → ra Stack Overflow của người gặp cùng vấn đề.
Mẹo khác: Đọc documentation (tài liệu chính thức) của tool/library bạn dùng.
Đã tìm ra fix? Nếu còn thời gian, research thêm xung quanh. Biến mỗi bug fix thành cơ hội nâng cao kỹ năng.
Lần đầu fix bug có thể mất 3h. Nhớ cách làm, lần sau chỉ mất vài phút. Giỏi fix các lỗi thường gặp = dev nhanh và hiệu quả hơn.
8. Đừng chỉ xem tutorial - Hãy BUILD (Xây dựng)!
Cái bẫy lớn nhất khi học code: đọc nhiều tutorial, xem nhiều video, nhưng không bao giờ thực hành.
Ví dụ: Ai nói "tôi đang train chạy bộ", nhưng hầu như không bao giờ chạy. Bạn sẽ nghĩ họ chỉ nói suông. Học technique, chọn giày đẹp là được, nhưng lúc nào đó phải chạy thật.
Web development cũng vậy. Học skill, cài tool quan trọng. Nhưng nếu chỉ passively xem tutorial → bạn không học được gì.
Tôi học web dev trên công việc thực tế - không có thời gian lướt YouTube. Deadline ép, phải tự mò làm sao cho webpage chạy. "Thử thách bằng lửa", stress nhưng cách học tốt nhất. Chỉ 2 năm làm dev, tôi học được khổng lồ practical skills. Tất cả nhờ build stuff!
Lời khuyên:
- Tutorial/sách tốt, thậm chí tuyệt vời. Nhưng sau khi xong chương/section → tạm dừng.
- Mở code editor, quay lại thực hành những gì vừa học. Thử replicate ví dụ.
- Sẽ khó hơn đọc/nghe nhiều, nhưng tôi cam kết: thực hành thực tế khiến kiến thức định착 (stick).
9. Cởi mở với thất bại
Thất bại tệ. Ai cũng muốn làm tốt, không mắc lỗi.
Nhưng tránh thất bại là cách tồi tệ để tiến bộ. Chỉ qua "làm sai" mới học được "làm đúng".
Khi mới làm junior dev, tôi sợ mắc lỗi kinh khủng. Kẹt ở chỗ nào, ghét phải hỏi sếp - tức là 인정 mình thất bại. Tệ hơn: lỗi ảnh hưởng production site → "lỗi lớn"!
Phản ứng đầu tiên: không muốn ai biết mình fail.
Nhưng tôi biết: cách nhanh và trung thực nhất để fix là thú nhận và nhờ giúp đỡ.
Tùy môi trường làm việc, nhưng kinh nghiệm của tôi: không bao giờ bị rơi vào khó xử dù mắc lỗi hoặc thừa nhận không biết.
Sợ thất bại → cố "an toàn" → tránh tình huống rủi ro → không grow.
Dù khó, hãy tiếp tục đẩy lùi. Sai thì sao? Code hiếm khi là sự sống còn. Kết quả scariest: bị phán xét, cảm thấy ngây thơ. Đó chỉ là ego. Đặt ego xuống, đón nhận thất bại. (Lời khuyên này tôi cũng đang cố gắng tuân theo - không dễ!) Cởi mở với sai lầm → tốt hơn nhiều trong dài hạn.
10. Luôn luôn học hỏi (Never Stop Learning)
Đừng bao giờ ngừng học.
Khi mới bắt đầu, thế giới web dev quá overwhelming - hàng trăm skill cần học.
Sau thời gian, bạn cảm thấy thoải mái hơn. Điều tốt (đang grow), nhưng đừng stagnant (đứng yên)!
Ngành này thay đổi liên tục. Không thay đổi theo kịp → lỗi thời (obsolete).
Ví dụ: Tôi giỏi CSS float layout. Nghe nói flexbox, đồng nghiệp khen. Nhưng lười học cái mới nếu không bắt buộc. Cuối cùng học flexbox, không lâu, tự trách: "Tại sao không học sớm hơn?!"
Hiểu tầm quan trọng của staying up-to-date. Delay flexbox không hại career, nhưng nếu không bao giờ học? Tôi sẽ không marketable.
Không cần học mọi language/tool/skill (trừ khi bạn muốn). Chỉ học tool mới đã đủ phổ biến, mainstream.
Ví dụ: React.js, Node.js ra từ lâu, nay thống trị industry. Stack tốt để học ngay nếu chưa biết.
Cách cập nhật:
- Syntax.fm podcast (Wes Bos, Scott Tolinski) - web dev news, topics hay.
- CSS Tricks - bài viết/tutorial CSS sâu (Chris Coyier - co-creator CodePen).
- Stack Overflow Annual Survey - xu hướng tech, salary, gì hot/gì cũ.
- Smashing Magazine - web dev, UX/UI, design.
Chỉ việc LÀM THÔI!
Hy vọng các mẹo giúp bạn ít lo lắng, hơn hứng thú với web development!
Mẹo cuối: Chỉ việc làm thôi. Dù chưa rõ chính xác đang làm gì, đừng để đó cản bạn. Bắt đầu đâu đó, bạn sẽ hiểu thêm trên đường đi.