# 49: Học Ngoại Ngữ

Lập trình viên cũng cần phải giao tiếp nhiều.

Cuộc đời của một lập trình viên dường như đa số là làm việc với máy tính. Cụ thể là với các chương trình chạy trên máy. Cuộc giao tiếp này cho việc thể hiện ý tưởng theo cách có thể đọc bằng máy. Đây là một triển vọng hứng khởi: Các chương trình đều trở nên hiện thực hóa từ những ý tưởng mà không có sự tham gia của chất vật lí nào.

Lập trình viên cần phải lưu loát trong ngôn ngữ của máy móc, dù là thật hay ảo, và các ý tưởng chung liên quan đến ngôn ngữ ấy đều thông qua các công cụ phát triển. Học thêm nhiều khái niệm trừu tượng là điều quan trọng, nếu không thì một vài ý tưởng sẽ trở nên rất khó để thể hiện. Một người lập trình giỏi cần có khả năng ra khỏi thói quen hằng ngày, nhận thức được các ngôn ngữ khác nhau sẽ thể hiện các mục đích khác nhau. Khi bạn làm được, thời cơ sẽ đến.

Ngoài giao tiếp với máy móc thì người lập trình cần phải giao tiếp với đồng nghiệp của họ. Ngày nay các dự án lớn là thành quả của sự nỗ lực tập thể hơn chỉ đơn giản là một ứng dụng nghệ thuật của lập trình. Quan trọng là phải hiểu và diễn đạt nhiều hơn những các khái niệm trừu tượng có thể đọc bằng máy. Những người lập trình viên giỏi nhất tôi từng biết hầu như đều thông thạo tiếng mẹ đẻ của họ, cũng như các ngôn ngữ thông dụng khác. Đây không chỉ là về giao tiếp với người khác: nói được một ngôn ngữ thành thạo sẽ mang lại sự suy nghĩ rõ ràng không thể bỏ qua khi trừu tượng hóa một vấn đề. Và đây cũng là vấn đề của việc lập trình.

Bên cạnh giao tiếp với máy móc, bản thân và đồng nghiệp, một dự án vẫn còn có những người hỗ trợ khác, đa số là có nền tảng kĩ thuật khác nhau hoặc không có. Họ sống với việc thử nghiệm, chất lượng và triển khai, với tiếp thị và bán hàng, họ là những người dùng cuối cùng ở vài công sở (hoặc cửa hàng hoặc nhà ở). Bạn phải hiểu họ và các mối quan tâm của họ. Điều này gần như không thể nếu bạn không thể nói ngôn ngữ của họ — ngôn ngữ trong thế giới, lĩnh vực của họ. Trong khi bạn nghĩ rằng mình đã có một cuộc trao đổi rất ổn với họ, họ chắc chắn không nghĩ thế.

Nếu bạn nói chuyện với nhân viên kế toán, bạn cần có kiến thức cơ bản về cost-center, về vốn bất động, vốn làm việc và những thứ khác. Nếu như bạn nói chuyện với tiếp thị hoặc luật sư, một vài thuật ngữ và ngôn ngữ ( và suy nghĩ của họ) sẽ trở nên quen thuộc với bạn. Những ngôn ngữ chuyên ngành đó cần được thông thạo lưu loát bởi một người trong dự án — lập trình viên là những người lí tưởng. Lập trình viên là những người chịu trách nhiệm cuối cùng cho việc đưa các ý tưởng từ máy tính đến đời sống thực tiễn.

Và, tất nhiên, cuộc sống là những gì nhiều hơn máy tính phần mềm có. Theo ghi chép của Charlemagne, biết được một ngôn ngữ đồng nghĩa với việc hiểu được một tâm hồn. Đối với những mối liên hệ của bạn ngoài ngành công nghiệp phần mềm, việc biết ngoại ngữ sẽ được đánh giá cao. Để biết khi nào nên lắng nghe hơn là nói. Để biết được hầu hết các ngôn ngữ đều không dùng đến lời nói.

Whereof one cannot speak, thereof one must be silent. — Ludwig Wittgenstein

(Cái gì người ta không thể nói về, người ta phải im lặng về nó.)