27 Jan, 2021
Học lập trình
Một sinh viên viết cho tôi: “Em thích công nghệ và muốn theo đuổi bằng cấp trong khoa học máy tính nhưng em không giỏi toán. Có cần biết giỏi toán để làm lập trình không? Có thể là người lập trình mà không có toán không?”
Đáp: Không nhất thiết phải rất giỏi toán để là người lập trình. Theo ý kiến tôi, lập trình giống như học “ngoại ngữ” như tiếng Anh hay tiếng Pháp. Bạn có thể học nói chỉ đủ để nói cho mọi người khi bạn du hành, hay bạn có thể học nó giỏi để diễn thuyết hùng biện. Cùng điều này cũng áp dụng trong lập trình. Nếu bạn chỉ muốn xây dựng website hay lập trình ứng dụng công nghệ thông tin, toán học cơ sở là đủ tốt. Nếu bạn muốn viết mã cho chương trình máy tính, ứng dụng nhúng, hay phần mềm phức tạp thì bạn cần nhiều kĩ năng toán học hơn.
Cũng giống như ngoại ngữ, lập trình là kĩ năng yêu cầu thực hành. Bạn càng làm nó nhiều, bạn càng trở nên giỏi hơn. Cách tốt nhất để học lập trình là bắt đầu viết cái gì đó đơn giản rồi học từ sai lầm bạn phạm phải. Bạn đi từ dễ rồi tới khó hơn, mỗi lúc bạn học cái gì đó mới và trong vài tuần, bạn có thể lập trình. Bạn phải biết các khái niệm logic cơ sở và cú pháp ngôn ngữ để bắt đầu. Nó không khó như bạn nghĩ. Ý tưởng chính là thực hành và không sợ phạm sai lầm.
Một khi bạn có kĩ năng cơ sở thì bắt đầu đọc các sách lập trình nào đó để bạn có thể làm cho mình tiến bộ sang mức tiếp. Cuốn sách ưa thích của tôi là “Code Complete” của Steve Mc Connell. Nó dễ đọc, rất thực tế, và có nhiều hướng dẫn hữu dụng. Tôi khuyên bạn đọc nhiều sách lập trình để bạn có thể xây dựng tri thức của bạn theo chiều sâu và là người lập trình giỏi hơn. Nhiều sinh viên thích học “lối tắt” hay “thủ thuật” để làm cho chương trình chạy. Đây không phải là cách tốt để học lập trình. Tôi đã thấy nhiều người không thiết kế mã tốt mà dùng kiểu “Brute-force” (không dùng thông minh để làm đơn giản vấn đề mà dùng những cách thức đơn giản nhưng tốn thời gian và năng lực tính toán), không dễ sửa, không dễ bảo trì bởi vì người lập trình không có đủ nền tảng lí thuyết để xây dựng tri thức của họ và biến điều đó thành kĩ năng. Xin nhớ rằng ngôn ngữ chỉ là công cụ. Điều làm cho người ta thành người lập trình giỏi không phải là người đó biết bao nhiêu ngôn ngữ, người đó biết bao nhiêu “thủ thuật”, mà người đó hiểu rõ thế nào về khái niệm để người đó có thể áp dụng điều đó vào công việc của mình.
Cách thức tốt khác để học lập trình là làm việc với những người giỏi hơn bạn. Ở trường hay ở chỗ làm việc, có nhiều người có thể giúp bạn, hướng dẫn bạn, kèm cặp bạn trong ngôn ngữ lập trình. Một người có kinh nghiệm có thể dạy bạn không chỉ những điều căn bản, mà cả tri thức chiều sâu trong vài tháng mà người khác có thể mất nhiều năm để học.
—-English version—-
Learning programming
A student wrote to me: “I like technology and want to pursue a degree in computer science but I am not very good in mathematics. Is it necessary to know math well to do programming? Is it possible to be a programmer without math?”
Answer: It is not necessary to be very good in math in order to be a programmer. In my opinion, programming is like to learn a “foreign language” such as English or French. You can learn to speak just enough to talk to people when you travel, or you can learn it so well in order for you to give a speech eloquently. The same thing also applies in programming. If you just want to build websites or program information technology applications, basic math is good enough. If you want to write code for computer games, embedded applications, or sophisticated software then you do need more mathematics skills.
Just like foreign language, programming is a skill that requires practice. The more you do that, the better you become. The best way to learn programming is to start to write something simple then learn from the mistakes that you made. You go from easy then to more difficult, each time you learn something new and in few weeks, you can program. You must know basic logic concepts and language syntax to start. It is not as difficult as you think. The main idea is practice and do not afraid of making mistake.
Once you have the basic skills then start reading some programming books so you can advance yourself to the next level. My favorite book is “Code Complete” by Steve Mc Connell. It is easy to read, very practical, and has many useful tips. I highly recommend you to read more programming books so you can build your knowledge in depth and be a better programmer. Many students like to learn “Short cut” or “tricks” just to make the program works. This is not a good way to learn programming. I have seen many not well designed code that use “Brute-force”, not easy to fix, not easy to maintain because programmers do not have enough theoretical foundation to build their knowledge and turn that into skills. Please remember that language is only a tool. What made a person a good programmer is not how many language he knows, how many “tricks” he know, but how well he understands the concept so he can apply it to his work.
Another better way of learning programming is to work with people who are better than you. In school or in work place, there are many people who could help you, guide you, tutoring you in programming languages. An experienced person can teach you not only the basics, but the in-depth knowledge in few months that other may take years to learn.