NỘI DUNG BÀI VIẾT
Vạn sự khởi đầu nan, câu nói này chưa bao giờ sai, kể cả trong việc học lập trình cũng vậy. Bài viết này mình sẽ kể ra những cái “khó” mà mình gặp phải trong những ngày đầu tiên học lập trình, để xem giữa mình và bạn có đặc điểm chung nào không nhé.
I. Nản do phải học nhiều thứ
Trước khi học lập trình, mình có ước mơ là sẽ tạo ra một phần mềm gì đó thật ngầu, làm thay đổi thế giới, và trở nên giàu có nhờ phần mềm đó. Nhưng khi bắt đầu học, thì mới thấy cái ước mơ đầu quá xa vời. Vì để tạo ra một phần mềm vĩ đại như thế, mình cần phải học rất nhiều thứ (cho tới bây giờ cũng chưa học hết). Khi biết được điều này, thật sự mình cảm thấy nản và muốn bỏ cuộc. Nhưng nghĩ kỹ thì thì lại thấy làm gì có gì dễ dàng đâu, thôi thì giảm mục tiêu xuống vậy.
Tâm lý của một lập trình viên qua từng giai đoạn
– Trước khi học lập trình: Mình sẽ tạo ra một con game làm “điên đảo” game thủ thế giới
– Khi học được 1 năm: Mình sẽ tạo ra một cổng thông tin về game lớn nhất Việt Nam
– Khi học được 2 năm: Mình sẽ tạo ra một blog và tự tay viết các tin về game
– Khi học được 3 năm: Mình sẽ dùng một nền tảng blog có sẵn để viết bài thay vì tự code
– Khi học xong: Code gì cũng được, miễn là code
– Khi đi làm: Ai đó fix giúp tôi cái bug này
Nếu bạn có rơi vào trường hợp này giống mình, thì cũng hãy thử giảm mục tiêu xuống xem sao. Giảm mục tiêu không phải là sợ mình không làm được việc lớn, mà là biết lượng sức mình. Hoàn thiện nhiều việc nhỏ giúp mình có kiến thức và kinh nghiệm để sau này làm việc lớn.
II. Càng học thì càng thấy mình “ngu”
Khi học lập trình, mình gặp rất nhiều kiến thức được gắn mác “cơ bản”, nhưng khi học mình lại khó vô cùng (nhất là kiến thức về giải thuật), làm mình có suy nghĩ “có phải mình quá ngu để học lập trình hay không”, và lại bắt đầu chán nản lần 2.
Nhưng một người khác đã nói với mình “cơ bản không có nghĩa là dễ học dù phần lớn kiến thức cơ bản đều dễ học“. Nghĩ thì thấy đúng thật, kiến thức cơ bản là những kiến thức mang tính cơ sở để học các kiến thức khác, và nó không có “nghĩa vụ” là phải dễ học. Nếu một kiến thức gắn mác “cơ bản”, nghĩa là mình phải học nó, chứ không có nghĩa là mình có thể học nó một cách dễ dàng. Quan điểm này đã giúp mình thay đổi suy nghĩ và tiếp tục học một cách nghiêm túc.
III. Học được, nhưng…không làm được
Mình đã bỏ thời gian học hành nghiêm túc, mình đã học hết các kiến thức cơ bản, mình đã có thể tạo ra một giao diện web hoặc một phần mềm giả lập máy tính bỏ túi, và mình cũng tự tin là nắm rõ một vài ngôn ngữ lập trình. Nhưng mình vẫn không thể tạo ra một phần mềm ưng ý. Phần mềm mình tạo ra rất khó sử dụng, thường xuyên gặp lỗi, bố cục lộn xộn, giao diện xấu xí, và mình còn chẳng muốn sử dụng nó chứ đừng nói là cho người khác sử dụng – nói chung là “Học được nhưng làm không được”.
Nhưng mà kệ, đâm lao thì phải theo lao thôi, học được đến đây rồi không lẽ bỏ cuộc. Mình cũng cho rằng việc “học được nhưng làm không được” là do thiếu kinh nghiệm, nên mình cố gắng code nhiều hơn, cải tiến các dự án cũ cho bớt lỗi và dễ sử dụng hơn, cũng như tham khảo các dự án opensource được tạo ra bởi các developer có kinh nghiệm để học tập.
Mình chẳng nhớ là đã làm bao nhiêu dự án cá nhân (pet project) nữa, chắc phải đến cả trăm cái, qua mỗi dự án như vậy, mình lại rút ra được một chút kinh nghiệm. Lâu dần, tích tiểu thành đại, mình đã nâng cao khả năng code đáng kể.
IV. Một vài khó khăn khác
Một vài khó khăn khác nhỏ hơn, nhưng vẫn đáng nói:
- Không quen “mặt bug”: Khi mới học lập trình, có những lỗi rất khó hiểu, mặc dù trình biên dịch hiển thị lỗi rất cụ thể, nhưng đọc vẫn không hiểu. Đành copy lên google xem có ai gặp phải hay chưa rồi xem cách khắc phục của họ. Lâu ngày, bug cũ lặp đi lặp lại thì thành ra “quen mặt”, nên cũng dễ fix hơn.
- Không quen “mặt code”: Mỗi ngôn ngữ lập trình lại có cú pháp khác nhau, cái dài cái ngắn, cái có dấu chấm phẩy cái lại không có. Nên thời gian đầu đọc hơi khó hiểu, nên đành phải code nhiều, nhìn nhiều cho quen.
- Chọn cách giải nào: Cùng một vấn đề, nhưng có thể có nhiều cách giải, và mình phải tốn khá nhiều thời gian và chất xám để tìm ra cách giải nào là tốt nhất.
V. Lời kết
Bài viết này không chỉ mang tính chất “kể khổ”, mà còn muốn nhắn nhủ tới các bạn newbie rằng “vạn sự khởi đầu nan”. Dù khó khăn của bạn có giống của mình hay không, thì thời gian đầu chắc chắn khó học, nhưng khó ở đây là khó chung chứ không riêng gì bạn, vì thế hãy cố gắng vượt qua nhé. Chúc các bạn thành công.
Hẹn gặp lại.
Nguồn: https://phambinh.net/bai-viet/nhung-cai-kho-khi-moi-hoc-lap-trinh/
Các bạn có thể tham khảo các bài viết hay về JavaScript tại đây.
Hãy tham gia nhóm Học lập trình để thảo luận thêm về các vấn đề cùng quan tâm.