Học Khoa học máy tính

Ngày nay chúng ta đang sống trong thế giới được dẫn lái bởi công nghệ thông tin. Từ trường học tới môi trường làm việc, từ hoạt động hàng ngày tới các hoạt động xã hội, việc biết cách dùng máy tính đang trở thành điều cần thiết nhưng để theo đuổi nghề nghiệp trong lĩnh vực này, em cần chuẩn bị từ sớm.

Nếu em muốn làm việc trong công nghiệp công nghệ thông tin, em phải bắt đầu với giáo dục tính toán sớm nhất có thể được. Cho dù trường của em không cung cấp các lớp máy tính, em vẫn có thể học từ những bài học nhập môn trực tuyến (như, YouTube hay MOOCs) dù bất kì môn học nào em chọn, em phải coi nó là nghiêm chỉnh vì việc học qua máy tính yêu cầu nhiều nỗ lực và cam kết để thành công.

Ngược với niềm tin phổ biến, Khoa học máy tính KHÔNG khó nhưng nó yêu cầu em phải nghiêm chỉnh trong học tập. Lớp đầu tiên em học có lẽ là lớp lập trình nơi em học cách viết mã. Lập trình là nền tảng của Khoa học máy tính và em cần phát triển các kĩ năng lập trình tốt trước khi em có thể đi xa hơn. Lời khuyên của tôi là khi em nhận được phân công lập trình, em cần bắt đầu ngay. Em sẽ phạm phải sai lầm, nhiều sai lầm, nhưng em học từ những sai lầm này và tiến sang các mức tiếp. Không sợ phạm phải sai lầm, không lo nghĩ về phạm sai lầm, mọi người đều phạm phải sai lầm vì CÁCH DUY NHẤT để học lập trình là học từ sai lầm.

Khoa học máy tính là việc áp dụng tri thức khoa học để tạo ra sản phẩm phần mềm. Em không thể ghi nhớ được công thức hay lí thuyết như em học trong các môn khác. Em không thể học “nhồi nhét” cho kì thi. Thức cả đêm để ghi nhớ mọi thứ trước kì thi sẽ không bao giờ có tác dụng vì mọi công việc trong lĩnh vực này đều là thực hành, không phải lí thuyết. Chương trình đào tạo khoa học máy tính dựa trên nhiều tầng tri thức nơi em phải làm chủ tầng này trước khi đi sang tầng tiếp. Nếu em không thể làm chủ được kĩ năng lập trình, sẽ khó tiếp tục cho tầng tiếp về thiết kế và kiến trúc. Không có nền tảng tốt, em sẽ không đi xa. Do đó, điều quan trọng là để thời gian để học và phát triển kĩ năng và không “đi tắt” bất kì cái gì.

Việc học lập trình lần đầu tiên bao giờ cũng thách thức. Nhưng dạy lớp lập trình cho những người học lần đầu tiên còn thách thức hơn. Tôi biết một số thầy giáo thích bắt đầu bằng lí thuyết và khái niệm cơ bản, nhưng tôi bao giờ cũng bắt đầu bằng việc yêu cầu người học “chơi’ với máy tính bằng việc viết những chỉ thị dễ nào đó cho máy tính làm kiểu như viết cụm từ: “Xin chào! Tên tôi là …” hay “Tên tôi là … tên bạn là gì?” rồi gửi nó tới người khác trong lớp để làm quen. Bằng việc làm điều đó, học sinh không sợ lập trình. Tất nhiên, đó là nhiều năm trước đây khi máy tính còn là cái gì đó mới với học sinh. Ngày nay, phần lớn sinh viên tới lớp với laptops, máy tính bảng, điện thoại di động và nhiều kĩ năng lập trình. Nhưng với một số sinh viên, người mới với lập trình, tôi khuyên họ bắt đầu bằng việc dùng tài nguyên trực tuyến TRƯỚC KHI học lớp lập trình. Internet cung cấp hàng nghìn bài học nhập môn trực tuyến mà có thể giúp bất kì người nào học từ những điều căn bản tới những khái niệm thách thức nhất. Bằng việc học theo nhịp độ riêng của mình, họ sẽ thu được tự tin hơn và phát triển các kĩ năng của họ để cho họ sẵn sàng khi học lớp lập trình chính thức trong trường.

Vài năm trước, một sinh viên nói với tôi rằng anh ta muốn làm việc trong công nghiệp trò chơi máy tính vì anh ta thích vẽ tranh nhưng anh ta không thích viết mã. Tôi hỏi: “Em vẽ tranh thế nào?”  Anh ta nói: “Bằng giấy và bút chì.” Tôi giải thích: “Để tạo ra ảnh hoạt hình máy tính, em cần dùng công cụ, không phải là bút chì và giấy.” Anh ta hỏi: “Nó là công cụ gì vậy?” Tôi trả lời: “Công cụ lập trình. Em viết mã để bảo máy tính vẽ tranh hoạt hình cho em. Không có kĩ năng lập trình, em không thể tạo ra được đồ hoạ máy tính. Lập trình là những chỉ dẫn để bảo máy tính làm mọi thứ. Máy tính chỉ là cái máy nhưng chính mã của em làm cho máy tính làm cái gì đó. Mọi thứ trong trò chơi máy tính đều dựa trên phần mềm, em không thể làm việc trong lĩnh vực này mà không biết cách viết mã.”

Khoa học máy tính KHÔNG phải là lĩnh vực mà em có thể học một mình. Cho dù em có khả năng làm việc độc lập, nhưng phần lớn công việc tính toán là làm việc theo tổ. Em cần cộng tác và trao đổi thông tin với người khác. Học cách học trong tổ và làm việc với tổ là bản chất vì nó cung cấp nhiều ích lợi. Một trong những ích lợi lớn nhất là ở chỗ nó sẽ dạy cho em cách làm việc như một phần của tổ và là người chơi theo tổ. Một khi em tốt nghiệp và đi vào chỗ làm việc, em sẽ sẵn sàng làm việc trong tổ.

 

—English version—

 

Study Computer Science

Today we are living in a world driven by information technology. From school to work environment, from daily to social activities, knowing how to use a computer is becoming a necessity but to pursue a career in this field, you need to prepare early.

If you want to work in the Information technology industry, you should start with a computing education as soon as possible. Even if your school does not provide computer classes, you can still learn from online tutorials (i.e., YouTube or MOOCs) whichever course you choose, you must take it seriously because learning computer requires a lot of efforts and commitment to succeed.

Contrary to popular beliefs, Computer Science is NOT difficult but it requires you to take your study seriously. The first class that you take is probably a programming class where you learn how to write code. Programming is the foundation of Computer Science and you need to develop good programming skills before you can go further. My advice is when you receive a programming assignment, you need to start right away. You will make mistake, a lot of mistakes, but you learn from these mistakes and advance to the next levels. Do not afraid of making mistakes, do not worry about making mistakes, everybody makes mistake because the ONLY WAY to learning programming is learning from mistakes.

Computer Science is the application of scientific knowledge to create software products. You cannot memorize formulas or theories like you learn in other subjects. You cannot “cram” for the exams. Stay up all night to memorize things before an exam will never work because all of the work in this field is practical, not theoretical. Computer science curriculum is based on multiple layers of knowledge where you must master one layer before going to the next. If you cannot master the programming skill, it would be difficult to continue to the next layer of design and architect. Without having good foundations, you will not go far. Therefore, it is important to take the time to learn and develop the skills and do not “shortcut” anything.

Learning to program for the first time is always challenging. But teaching programming class for the first-time learners is more challenging. I know some teachers like to start with the basic theories and concepts, but I always begin by asking students to “play” with the computer by writing some easy instructions for the computer to do such as writing a phrase: “Hello! My name is …” or “My name is … what is yours” then sending it to others in the class to get acquaintance. By doing that, students do not fear of programming. Of course, that was many years ago when the computer was something new to students. Today, most students came to class with laptops, tablets, mobile phone and a lot of programming skills. But  to some students who are new to programming, I would advise them to start by  using online resources BEFORE taking a programming class. The Internet provides thousands of online tutorials that can help anyone to learn from the basics to the most challenging concepts. By learning at their own pace, they will gain more confidence and develop their skills so they are readied when taking their formal programming class in school.

A few years ago, a student told me that he wanted to work in computer games industry because he likes to draw pictures but he did not like coding. I asked: “How do you draw pictures?  He said: “By paper and pencil.” I explained: “To create computer animation pictures, you need to use a tool, not pencil and paper.” He asked: “What tool is it?” I answered: “Programming tool. You write code to tell the computer to draw the animated pictures for you. Without programming skills, you cannot create computer graphics. Programming is the instructions to tell the computer to do things. A computer is only a machine but it is your code that makes the computer do something. Everything in the computer games is based on the software, you cannot work in this field without knowing how to write code.”

Computer Science is NOT a field that you can study alone. Even you have the ability to work independently, but most of the computing works are teamwork. You need to collaborate and exchange information with others. Learning to study in a team and work with a team is essential as it offers a lot of benefits. One of the biggest benefits is that it will teach you how to work as part of a team and to be a team player. Once you graduate and enter the workplace, you will be readied to work in a team.