12 Jul, 2021
Cải tiến kĩ năng viết mã
Một sinh viên viết cho tôi: “Là sinh viên năm thứ nhất trong Quản lí hệ thông tin (ISM), em thích lớp nhập môn nhưng sợ lớp viết mã. Em thất vọng mọi lần em phải viết mã và em lo nghĩ rằng em có thể trượt. Xin thầy giúp cho.”
Đáp: Cách tốt nhất để vượt qua vấn đề viết mã là bắt đầu với cái gì đó đơn giản. Chẳng hạn, thử viết vài dòng mã để thực hiện điều đơn giản. Bạn phải học cách chia các nhiệm vụ phức tạp thành các mảnh đơn giản và viết mã chúng một cách tách bạch. Chọn mảnh dễ nhất và viết mã cho nó, khi nó làm việc rồi thì bắt đầu với mảnh tiếp cho tới khi bạn kết thúc tất cả chúng.
Lí do bạn thấy thất vọng là vì bạn sợ phạm sai lầm. Khi bạn viết mã và mã không làm việc, bạn cảm thấy rằng bạn đang thất bại. Nhưng bạn cần hiểu rằng trong ngôn ngữ lập trình, CÁCH DUY NHẤT để học là phạm sai lầm và học từ chúng. Có nhiều bước để làm cho mã làm việc. Đầu tiên, bạn cần hiểu vấn đề cơ bản bằng việc hỏi: “Mình nên dùng cấu trúc dữ liệu nào? Làm sao thuật toán này làm việc? Làm sao tất cả nó sẽ được tổ chức thành các đối tượng?” Khi bạn bắt đầu viết mã, lại tự hỏi bản thân mình: “Cái gì đưa vào tệp tiêu đề? Cái gì đưa vào tệp gốc? Tại sao đằng nào cũng có việc phân tách này?” Sau khi bạn viết mã và dịch, bạn có thể thấy ra nhiều lỗi và bạn cần gỡ lỗi. Bạn cần tự hỏi mình: “Mình bắt đầu từ đâu?” Đây là CÁCH bạn học từ sai lầm của bạn. Bạn sẽ tiếp tục phạm sai lầm và học từ chúng rồi qua thời gian, bạn sẽ viết mã tốt hơn.
Tôi bao giờ cũng khuyến khích sinh viên làm công việc của họ trong các bước nhỏ. Chỉ viết vài dòng mã, dịch nó, và chắc nó làm việc. Chỉ thêm nhiều mã hơn sau khi bạn có mã khác làm việc. Phạm sai lầm là được vì bạn học từ nó và đi sang vấn đề tiếp. Phần lớn thời gian, mã không làm việc lại thì tiếp tục gỡ lỗi và học. Cuối cùng bạn sẽ quen với thất bại kiểu này và không sợ viết mã nữa.
Tôi biết rằng học viết mã là công việc vất vả. Nhưng nó là thách thức mà mọi sinh viên phải vượt qua. Bạn càng đưa nhiều nỗ lực vào, bạn sẽ thành công càng lớn. Đến cuối lớp lập trình, phần lớn sinh viên thường kêu: “Bây giờ em hiểu nó rồi! Càng chia nhỏ mã, nó càng vui hơn.”
—English version—
Improving the coding skills
A student wrote to me: “As a first year student in Information System Management (ISM), I like the introduction class but afraid of coding class. I am frustrated every time I have to code and I am worry that I may fail. Please help.”
Answer: The best way to overcome coding problem is to begin with something simple. For example, try to write few lines of code to perform simple thing. You must learn how to breakdown complex tasks into simple pieces and code them separately. Choose the easiest one and code it, when it works then start with the next one until you finish all of them.
The reason that you are frustrated because you are afraid of making mistake. When you write code and the code does not work, you feel that you are failing. But you need to understand that in programming language, the ONLY WAY to learn is to make mistakes and learn from them. There are several steps to get the code to work. First, you need to understand the basic problem by asking: “What data structures should I use? How does this algorithm work? How will it all be organized into objects?” When you begin to write code, ask yourself again: “What goes in the header file? What goes in the source file? Why is there this separation anyway?” After you write the code and compile, you may see a lot of errors and you need to debug. You need to ask yourself: “Where do I start?” This is HOW you learn from your mistakes. You will continue to make mistake and learn from them then overtime, you will write code better.
I always encourage my students to do their work in small steps. Just write a few lines of code, compile it, and make sure it works. Only add more code after you have the other code working. It is OK to make mistake as you learn from it and go on to the next. Most of the time, the code does not work again then continue to debug and learn. Eventually you will get used to failure like this and not afraid of coding anymore.
I know that learning to write code is hard work. But it is a challenge that every students must overcome. The more efforts you put in, the better you will succeed. At the end of the programming class, most students often exclaim: “Now I understand it! The more the code breaks, the more fun it is.”