Tips

Tiếng Anh trong lập trình

Do nhận thấy có quá nhiều bạn thích viết code nhưng tiếng Anh từ mức chưa vững cho tới chỉ biết mỗi từ “Hế-nhô” nên hôm nay tôi làm bài này, trước là nói về tầm quan trọng của tiếng Anh trong lập trình, sau là giới thiệu một cách học tiếng Anh để các bạn có thể làm thử.

Keep-calm-and-learn-english

1. Tầm quan trọng của tiếng Anh nói chung:

Khoan hãy xét tới mức lập trình, việc sử dụng Windows cho các thao tác hàng ngày ít nhiều đã đòi hỏi trình độ tiếng Anh kha khá rồi. Chẳng hạn như bạn gặp cái thông báo “Are you sure want to delete C:\system32” nhưng bạn không hề chọn lệnh Delete nên không quen, và cứ “Yes” + “Next” thì thôi rồi, xác định luôn. “Ôi nước biển ơi, sao mày mặn quá vậy?”, “Sao đội tuyển U23 của Việt Nam chưa bao giờ đăng quang SEAGames vậy nè?”…

Trong thời buổi hội nhập quốc tế này, thì nếu bạn lựa chọn trở thành một nhân viên văn phòng, ngồi ghế dựa trong phòng máy lạnh và suốt ngày dán bốn con mắt vào cái màn hình máy tính, thì bạn ít nhiều cần tiếng Anh, chí ít là để sử dụng cái máy tính như tôi đã nói ở trên, tránh xóa nhầm luôn thư mục system32, cũng như sử dụng các phần mềm Microsoft Office như Word. Có thể bạn đã học Word theo kiểu con vịt kêu “quạc quạc”, muốn dùng chữ rơi thì vào Drop cap mà không thèm cần biết tới cái chữ Drop cap có nghĩa là gì, vì cứ như thói quen rồi, giống như lên xe máy là tra chìa, đề pa và chạy. Nhưng lỡ như sếp bạn – một người có trình độ cao – yêu cầu bạn làm một thao tác hoàn toàn lạ hoắc, mà kẹt cái sếp đang bực mình và chỉ “phán” toàn tiếng Việt thì bạn làm sao? Word so ra còn đỡ đó bạn, còn Excel và Access thì đòi hỏi tiếng Anh nhiều lắm.

2. Tầm quan trọng của tiếng Anh trong lập trình:

Quay trở lại vấn đề programming, điều kiện cần để trở thành 1 developer giỏi, nhưng không chỉ giới hạn ở đó, là trình độ tiếng Anh cứng chắc. Đúng hơn, bạn chỉ cần rèn đúng 2 kĩ năng đọc và viết, trong đó đọc là cái cần làm trước. Để làm gì? Để đọc tên hàm, đọc hướng dẫn của cái hàm đó để biết cái hàm khỉ khọn đó có tác dụng làm cái quái gì, thực thi ra sao, nó trả ra cái con cua con cá gì, để từ đó bạn vận dụng vào trong ứng dụng của bạn. Bởi lẽ cho dù bạn đi học ở trường nào, trung tâm nào, thầy giáo cô giáo nào đi nữa, người ta đâu có khả năng dạy cho bạn tất cả các hàm trong cả hệ thống. Chưa hết, với việc các thư viện được bảo trì thường xuyên, nâng cấp như cơm bữa, vài ngày là có một hàm thành viên mới trong một class thì không lẽ các thầy các cô đó lại phải đánh cho bạn một cú điện và giải thích “Ê em ơi, hôm nay mấy tay viết thư viện kia lại ra thêm hàm này nữa rồi, bây giờ tôi hướng dẫn cho em nhé!”????

Các công ty nắm giữ các hệ điều hành – nền tảng đều có trụ sở ở Mĩ. Họ là những người phát minh và phát triển mọi hạ tầng về phần mềm cho chúng ta sử dụng trong hiện tại. Windows là của Microsoft, vậy “Mai-cồ” nằm ở đâu? Nước Mĩ. Với Android, thì người chịu trách nhiệm là Google, cũng ở Mĩ. Còn iOS và macOS thì khỏi nói rồi, ai cũng biết Apple ở Mĩ hết. Mà bạn biết rồi, dân Mĩ nói tiếng Anh. Không tin ư? Cứ qua đó sẽ thấy. Và đương nhiên, các hàm hệ thống, các APIs đều được đặt tên bằng tiếng Anh, chẳng hạn như trong Android, ta có View#setOnClickListener, hay trong iOS bạn có hàm viewDidLoad, và hàng hà sa số các hàm khác. Cũng như bạn, các developers đều đặt tên hàm sao cho nó có nghĩa, “cái tên nói lên tất cả”, cũng giống như các bạn có cái hàm tôi rất thường thấy là xuLiBaiHat() vậy.

Nếu bạn tiếp tục hát bài “cạp cạp” thì cao cường cho lắm, bạn chỉ nhớ được những hàm bạn đã được dạy, chẳng hạn như View#setOnClickListener bên trên, bạn chỉ đơn giản là nhớ nó sẽ gán sự kiện khi bạn chạm vào cái View đó, còn tên của nó là gì thì bạn… mù tịt. Lỡ như sau này, bạn muốn làm 1 event khác, thì làm cách nào? Gọi điện cho trung tâm hỏi hay lại nhờ bạn bè? Hoặc lỡ như bạn đọc source của một người nào đó, có cái hàm tên lạ hoắc, bạn không hiểu, thì bạn tính sao?

Nếu như Mai-cồ-sốp, Gốc-gô hay Áp-pô ban đầu khởi nguồn từ đất nước Việt chúng ta (if loại 3: if past perfect, future in past perfect), thì ắt hẳn tôi và bạn sẽ khỏe tâm lí hơn rất nhiều, các lớp, các hàm sẽ được đặt tên tiếng Việt, chưa kể đến các hướng dẫn chính thức (official documents). Và ta chỉ cần ngắm nghía sơ qua là biết ngay ý tứ của người viết hàm, “À cái lớp này có tác dụng chung là làm cái này, còn cái hàm trong đó thì sẽ thực thi cái đó và trả ra cái đó đó”, quá dễ. Nhưng tiếc là đời không như mơ, họ ở bên “Á Mĩ Lợi Kiên” cơ, họ sinh ra với tiếng Anh, ăn với tiếng Anh, ngủ với tiếng Anh, và “sinh sản” cũng với tiếng Anh. Ai tới trước thì có quyền, xét dưới góc độ nào đó, chúng ta đang phải “nhờ vả” họ, những người nắm chuôi kiếm. Do vậy, đành chiều họ thôi. Học tiếng Anh đi là vừa.

Thực tình là tôi rất, rất, rất ngán ngẫm việc giúp đỡ các bạn với các vấn đề cực kì đơn giản, chẳng hạn như “Ôi, cái hàm này lạ quá, nó có tác dụng gì vậy?” trong khi cái tên nó đã nói lên hết nội hàm bên trong, cũng như có sẵn Java doc ngay bên trên. Hay một trường hợp khác, app crash nhưng log có báo rõ ràng là lỗi gì và gồm cả hướng dẫn sửa nữa. Nhưng với lí do rất đơn giản “Mình mới học Android và tiếng Anh mình kém lắm” thì các bạn ấy lại post lên các forum để hỏi. Vâng, xin lỗi bạn, bạn không biết tiếng Anh thì quên việc viết code đi là vừa.

Cũng có nhiều trường hợp, các bạn khá hơn, tiếng Anh ở mức hơn sát với vừa đủ, nhưng do tâm lí e thẹn, ngại ngùng, mắc cỡ khi gặp sai sót, ứng dụng bị “văng” là hoang mang, không biết sửa sao cho được. Tôi nói đọc cái log coi nó báo gì, thì cũng hiểu, và tự dưng có hướng sửa chữa, mặc dù vẫn có thể chưa triệt để, vì một là do tâm lí, hai là do chưa có vốn từ phong phú về chiều rộng và chiều sâu, nên chưa thể lường hết các trường hợp có thể xảy ra. Dẫu sao, tôi nghĩ rằng họ hoàn toàn có thể code “ào ào” được, tiềm năng rất lớn, và tiếng Anh chính là cái ngăn cản họ để “trở thành bóng đèn sáng nhất của Điện Quang”, bởi khắc phục tính “sợ sai” là điều không khó.

Tóm lại, chỉ có vài câu gọn lỏn như sau: “Nếu bạn muốn lập trình thì làm ơn làm phước học tiếng Anh trước đi, đừng có bày đặt chưa chạy được xe đạp đã học đòi lái máy bay. Bạn học thì bạn nhờ bạn cậy chứ tôi không có hưởng cái gì từ bạn đâu.”. Và nếu bạn không hiểu câu trong tấm hình xanh bên trên có nghĩa là gì thì bạn nên đóng tất cả các projects hiện tại,  đi học tiếng Anh ngay và luôn, hoặc là bỏ ngang việc viết code của mình là vừa.

3. Cách tự học tiếng Anh như thế nào là tốt nhất?

Không cần thiết bạn phải đi học các trung tâm hiện phổ biến như nấm sau mưa, bạn hoàn toàn có thể tự học được, như tôi chẳng hạn. Xin phép được “nổ”, mặc dù tôi hoàn toàn không có một tấm bằng tiếng Anh nào, A, B, C hay TOEFL, TOEIC, IELTS, nhưng phần kiến thức của tôi khá “rock solid”, đủ sức cho tôi viết code và thoải mái giao tiếp với dân “Tây ba lô” mà không hề mắc một lỗi nghiêm trọng nào.

Nếu bạn đang nghĩ là “Ối giời, tôi đang muốn lập trình thì đi thẳng vào tiếng Anh chuyên môn luôn cho máu” thì làm ơn bỏ ý định đó đi. Bạn có thấy ai đi xây nhà từ nóc xây xuống mà không có cột có kèo không? Hay bạn muốn đi từ dưới đất lên luôn tầng 20 của tòa nhà Vincom mà không đi ngang qua tầng thứ 10? Cho dù bạn học tiếng Anh để làm gì đi nữa, viết ứng dụng, làm hành chính, hay làm hướng dẫn viên du lịch, thì bạn cũng phải bắt đầu từ những cái cơ bản nhất.

Sẽ là rất lố bịch, lãng nhách và vớ vẩn nếu bạn có thể nói đông nói tây bằng tiếng Anh, viết đủ thứ code bằng tiếng Anh nhưng không mô tả được mọi thứ có trong nhà mình. Do đó, cái trước nhất, cái đầu tiên, là bạn phải mô tả được tất cả những thứ thân thuộc với mình trước đã. Bạn đừng có tìm hiểu cây dù lượn trong tiếng Anh là từ nào trong khi cái ghế mình hay ngồi thì lại không biết. Một lần nữa, hãy bắt đầu với những cái gần gũi nhất, thân thuộc nhất với bạn. Còn mấy cái cao sang thì nên để sau.

Đoạn phía trên không giới hạn ở danh từ, mà còn gồm cả động từ, tính từ, trạng từ và nhiều từ loại khác. Và khi đã học, thì phải hiểu rõ nghĩa của từ đó theo chiều sâu nữa. Ví dụ, ở Việt Nam mình, cái mà bạn đặt cặp “ô mê ga” của mình lên ngồi và nói chuyện thì được gọi là cái ghế, còn muốn làm rõ hơn thì dùng từ ghép kiểu chính phụ (xin xem lại sách Tiếng Việt lớp 7 nếu bạn quên). Nhưng trong tiếng Anh thì khác, bởi họ có các từ riêng biệt để chỉ các kiểu ghế chứ không như tiếng Việt. Chẳng hạn, nếu tiếng Việt ta có từ “ghế đẩu” thì họ “chơi” luôn hẳn từ “stool” chứ không phải là dùng từ gốc “ghế” và thêm từ phụ như ta. “Couch” để chỉ bộ ghế dài, tức là trường kĩ, còn ghế có lưng dựa 1 người ngồi nhưng không có 2 phần tay, có 4 chân hẵng hoi, thì gọi là “chair”; còn nếu có 2 tay thì lại gọi là “armchair”. Hay cái đèn. Ôi tiếng Việt chỉ có mỗi từ “đèn” thôi nhưng tiếng Anh thì có “bulb”, “light”, “lamp”… Đấy, học là phải như vậy, học sự vật nào thì chắc chắn sự vật ấy, và phải có một chiều sâu nhất định. Chứ không phải cứ áp dụng Vinglish kiểu như anh Daniel Hauer chỉ ra thì “thôi rồi Lượm ơi”.

Tất nhiên, bạn đang có ý làm chuyên ngành, thì có thể bỏ qua khá nhiều thứ, chẳng hạn bạn không cần thiết phải biết mô tả chi tiết quá trình diễn ra phản ứng giữa etylen và nước brom màu da cam khi bạn học tiếng Anh để viết code. Bạn có thể tìm hiểu thêm khi có hứng thú, nhưng trước hết, sau khi học qua những cái cơ bản thì bạn nên đi thẳng vào chuyên ngành để phục vụ nhu cầu làm việc của bạn thì hơn.

Cũng như lập trình cơ bản, chỉ đơn giản là thiết kế giao diện, lập hàm và dùng hàm, thì ngôn ngữ cũng chỉ xoay quanh hai vấn đề: học từ và dùng từ. Dùng từ có nghĩa là đặt câu. Đương nhiên rồi, bạn đã trưởng thành rồi chứ đâu phải em bé 12 tháng mà nói từng từ! Đặt câu là một “phạm trù” có tính biến hóa cao. Tuy nhiên, đừng đánh giá nó quá cao, vì việc đặt câu trong tiếng Anh, cũng như tiếng Pháp, tiếng Nhật, hoàn toàn như việc đặt câu trong tiếng Việt mà thôi. Điểm khác biệt lớn nhất, chính là trật tự từ, và ngay sau đó, là mức độ lịch sự theo ngữ cảnh. Tùy theo trình độ, kinh nghiệm và kĩ năng của bạn mà bạn có thể vận dụng một cách khéo léo. Tôi sẽ để phần này cho các bạn tự thực hành và rút ra xp, tức là kinh nghiệm, cho mình.

Thậm chí, nếu bạn đã có cách học tiếng Anh, cách tư duy tiếng Anh thuần thục, thì điều này thậm chí còn giúp bạn tư duy tốt hơn trong khâu lập hàm và dùng hàm, cũng như hiểu rõ được bản chất của các lớp trong lập trình. Chẳng hạn, lớp Context trong Android. Nếu bạn hát bài “cạp cạp”, tra từ điển Google, thì Context có nghĩa là bối cảnh. Nhưng, bối cảnh trong Android nghĩa là cái con cá con tôm gì? Tôi nghĩ không có nhiều người có thể truyền đạt được chính xác ý nghĩa của class này. Nhưng nếu bạn hiểu rõ tường tận nghĩa của từ Context bằng “ngôn ngữ tư duy” của bạn, tương đương với ngôn ngữ máy của máy tính, thì tôi chắc rằng bạn sẽ vận dụng được chính xác những gì mà đội phát triển Android đã xây dựng trong class này.

Happy studying English. Và sau khi có được một vốn kiến thức nền tảng tiếng Anh kha khá rồi, thì việc lập trình sẽ đơn giản hơn rất rất nhiều.

À quên, tôi quên mất về các kĩ năng rồi. Có lẽ bạn đang hỏi là “Tôi đang muốn học tiếng Anh để lập trình rồi, thì tôi cần rèn kĩ năng nào?”.

4. Tiếng Anh cho dân coder.

Tôi nhắc lại, tiếng Anh chỉ là một trong số các điều kiện cần để bạn trở thành một lập trình viên giỏi. Đừng hoang tưởng là hễ cứ giỏi tiếng Anh là đủ để code như máy rồi nhé. Định lí một chiều thôi bạn à. Ngoài các điều kiện cần thì cũng còn nhiều điều kiện đủ khác.

Như tôi đã nói bên trên, bạn mặc dù phải đảm bảo được những nền tảng cơ bản, nhưng không nhất thiết là cứ phải học cho nhiều, cho đầy đủ, mô tả hết các thứ trong cuộc sống, chẳng hạn như tìm cách mô tả etylen phản ứng với nước brom sẽ tạo thành dibrometan nên dung dịch nước brom sẽ mất màu bằng tiếng Anh, trong khi mục tiêu chính của bạn là viết một ứng dụng bán hàng bằng firebase! Thay vào đó, bạn hãy tìm hiểu view là gì, did là gì và load là gì, để bạn hiểu cái hàm viewDidLoad nó mang ý nghĩa nào và chừng nào thì hệ thống mới gọi nó chạy.

Về mặt các kĩ năng, thì có người cho rằng, dân coder cần đủ 4 cái: đọc-viết-nói-nghe. Nhưng cá nhân tôi, tùy vào bản thân bạn vào từng bối cảnh và giai đoạn khác nhau, bạn có thể bỏ qua các skills khác mà chỉ tập trung vào đọc-viết là đủ rồi. Quan trọng nhất là đọc. Ở đây có nghĩa là đọc thầm (read) chứ không phải đọc to thành tiếng (say). Bởi lẽ, bạn phải đọc được thì với viết được chứ. Ví dụ bạn đọc được cụm từ “I go to class” thì bạn mới viết được một cụm y chang như vậy chứ – khoan xét tới mức độ hiểu. Khi học một từ, bạn phải đọc nó trước, coi nó bao gồm các chữ cái nào, trật tự các chữ ra sao. Sau đó, mới tới viết. Bạn viết được tốt, thì bạn sắp xếp được các hàm có sẵn trong hàm mới của bạn, một cách chắc chắn. Tóm lại, đọc-viết trước cái đã, nói-nghe để sau đi, vì bạn đâu có mở môi ra lệnh cho cái máy rằng “Hey there, do this for me in these steps: 1, 2, 3…” – “Máy ơi, mày làm cái này cho tao theo trình tự sau: 1, 2, 3…” và nghe nó đáp lại! Cái bạn cần là đọc các doc hướng dẫn, cũng như các thông báo Log được in trong console để “mò” vào đó mà sửa lỗi chứ.

Bạn thấy đó, nhiều coder Việt nói tiếng Anh như con gà kêu cục tác, con ếch kêu ộp ộp và chưa chắc đã nghe được người bản xứ nói về củ cải củ riềng gì, nhưng họ code phải nói là máu me kinh khủng, và hơn cả khối người nói tiếng Anh như gió nhưng việc vận dụng, ít nhất là đọc hiểu các docs, chỉ ở mức “gió thoảng mây bay”, bao gồm cả bản thân tôi nữa. Có thể tôi đọc-viết-nói-nghe hơn họ ba bậc, nhưng về trình độ viết code lại thua ba chục bậc chứ không đùa. Đảm bảo với các bạn, họ có thể không nói-nghe tốt nhưng phần đọc-viết, họ hoàn toàn nhạy bén và lĩnh hội được các docs mà họ đọc qua. Do đó, nếu bạn là dân absolute beginner, tức là dân mới vào nghề, hai chân toàn ướt, thì cứ tập trung vào đọc và viết trước đi đã.

Cuối cùng, chúc các bạn thành công. Và có thể, tại một thời điểm nào đó, bạn sẽ là người dạy lại cho tôi chứ không phải ngồi đây mà đọc bài do tôi viết nữa.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.