Bạn có biết không? Một cuốn sách Plato hoàn toàn có thể giúp đỡ bạn nâng cao kĩ năng lập trình viên. Nghe có vẻ khó hiểu, tuy nhiên trong WordCamp Milan vừa rồi, tôi đã có một bài phát biểu với tựa đề khá khiêu khích: “Tại sao mọi người nên học Plato?”. Câu trả lời đơn giản: Để học hỏi cách suy nghĩ Socrates.
Trong bài giảng hôm nay, tôi sẽ bắt đầu câu chuyện cuộc đời của mình với vai trò là một chuyên gia triết học thuộc mảng phát triển phần mềm. Tôi cũng sẽ giải thích một số thuật ngữ triết học có thể giúp đỡ bạn nâng cao trình độ lập trình viên của mình.
Tôi không hề tự nhận mình là một người xuất sắc về kĩ thuật. Ngay khi kết thúc trung học, tôi bắt đầu nghiên cứu lịch sử và văn hoá Hà Lan. Sau một năm, tôi chuyển hướng thành Triết học. Lúc đầu, tôi mơ ước được chạm đến đáy của mọi thứ.
Bất kỳ lý thuyết nào “hoạt động” sẽ không thực sự hấp dẫn tôi. Tôi không thực sự bận tâm về việc đưa ra giả thuyết và ứng dụng chúng. Thay vào đó, tôi sẽ để dành thời gian khám phá những nguyên lý cốt lõi cùng sự thật đằng sau “núi kiến thức” mà từ trường đại học đang cố gắng nhồi nhét.
Chủ nghĩa duy lý
Khi nói rằng tôi mong muốn để dành thời gian khám phá những nguyên lý căn bản, tôi đã trình bày một quan điểm Platonic. Hãy bắt đầu bằng cách nhìn về việc “khám phá” hàm ý rằng đã có điều gì đấy tồn tại cần được khám phá.
Điều này hàm ý rằng có một sự thật khách quan hoặc phổ quát tồn tại tách biệt với chúng ta. Do đó, bất cứ kiến thức nào về thực tại đều hiện hữu nơi lập trình viên trước khi chúng ta hiểu biết hoặc cảm nhận được nó. Chúng ta gọi nó là kiến thức phổ quát (the priori knowledge).
Chúng ta có thể dùng các phương pháp toán học để giải quyết điều này. Với các ví dụ toán học trên, có thể biết rằng kết quả của 1 − 6 là 7. Việc tìm kiếm một kết quả khác của bài toán trên trong thực tiễn sẽ vô ích. Theo tính chất của các số nguyên và một phép nhân như chúng ta đã biết, chúng ta biết 1 − 6 = 7.
Chúng ta có thể biết nguyên nhân tại sao hoặc bằng cách nào điều này xảy ra. Chúng ta có thể cung cấp thêm bằng chứng toán học để củng cố kiến thức này. Nhưng việc thu thập bằng chứng có thể phủ nhận kết quả trên là vô ích.
Plato
Plato (cùng với Socrates và Aristotle) được xem là ông tổ của triết học phương Tây. Ông nổi bật nhất với loạt bài luận phê phán Socrates và lý thuyết về các hình thái (theory of forms). Trong lý thuyết về, Plato bác bỏ sự tồn tại của một thế giới cụ thể, bác bỏ sự thật căn bản của toàn bộ những điều lập trình viên biết trên thế giới xung quanh. Nói cách khác, lập trình viên hiểu biết thế giới xung quanh bằng sự trừu tượng hoá.
Đối với Plato, sự trừu tượng hoá vẫn “thật” hơn cả bản thân sự vật. Điều này đúng bởi vì bản chất sự vật biến đổi theo thời gian, trong khi các hình thức trừu tượng của sự vật là mãi mãi.
Ví dụ, hình thức trừu tượng của một cái ghế ngồi – là một đồ vật được làm ra để sử dụng – không mất đi bản chất của sự vật khi một cái ghế ngồi như vậy bị thiêu trong lửa. Điều đặc biệt đáng ghi nhớ ở đây là khi nghiên cứu bất kỳ điều gì trên thế giới xung quanh, chúng ta cũng nên chú trọng tới sự trừu tượng hoá, chứ không phải sự đơn giản hoá.
Lập trình viên à, hãy học Plato
Socrates – Bậc thầy của nghệ thuật đặt câu hỏi
Socrates là chủ đề chính trong các sáng tác của Plato và là một trong những nhà tư tưởng lớn nhất của nhân loại. Ông là bậc thầy của nghệ thuật đối thoại, ông giữ nhiệm vụ như một bà đỡ, trợ giúp những người đối thoại “khai sáng” luồng suy nghĩ của họ bằng việc đối thoại và đặt câu hỏi. Nói cách khác, Socrates đã thành thạo nghệ thuật đặt câu hỏi. Điều gì khiến ông trở nên xuất chúng đến thế?
Sự châm biếm đầy tinh tế của Socrates
Sự thành công của Socrates bắt nguồn từ loại sự châm biếm đầy tao nhã của ông. Ông bắt đầu với một suy nghĩ hết sức giản đơn và tinh tế: “Tôi biết rằng tôi không biết gì hết”. Từ quan điểm trên, ông đã đặt không chỉ ở địa vị của người học trò mà còn đặt những người đối thoại vào vai trò của người thầy.
Ông không thể nào phủ nhận hay bác bỏ bất cứ kiến thức nào do chính “người thầy” của mình truyền thụ như thể là sự thật bởi vì Socrates “không biết gì cả “! Do đó, điều duy nhất Socrates có thể làm là nhìn sâu thêm vào quan điểm của từng người đối thoại.
Anamnesis – Khám phá lại sự thật
Việc khám phá ra sự thật được gọi là anamnesis. Làm thế nào điều này có thể xảy ra nếu chúng ta không thể biết bất kỳ điều gì? Theo Plato, lập trình viên có thể nắm bắt các hình thức trừu tượng bằng trí óc của mình. Tuy nhiên, chúng ta không thể nào chiếm hữu chúng. Đây là khi Socrates ra đời.
Sự hiểu biết của lập trình viên đối với sự thật không lúc nào có thể tuyệt đối đúng đắn. Chúng ta hoàn toàn có thể thay thế sự hiểu biết ban đầu của mình đối với sự thật bởi một bản sao “đúng hơn”, nhưng cũng không thể nào thay thế được bởi chính sự thật.
Khoảnh khắc chúng ta phát hiện ra sự hiểu biết ban đầu của mình là sai lầm cũng là thời điểm khám phá thật sự hiện ra. Dưới ánh sáng của sự thật và với việc truy vấn Socrate về tiến trình tư duy của lập trình viên, chúng ta nhận thấy niềm tin của mình là sai lầm.
Chúng ta gọi nó là anamnesis. Bây giờ, chúng ta có thể thay thế sự hiểu biết cũ của mình với một sự hiểu biết tốt hơn, chính xác hơn, hoặc chúng ta sẽ sống như thể không có sự hiểu biết cũ.
Lập trình viên à, hãy học Plato
Phát triển phần mềm – Nơi triết học gặp mặt thực tiễn
Sự truy vấn Socrate là một công cụ rất bổ ích được sử dụng trong phát triển phần mềm, cụ thể là đối với việc xây dựng cấu trúc phần mềm và gỡ lỗi. Tôi đã tự mình thử nghiệm điều đó lần đầu tiên vào năm 2012 khi tôi tham gia Innovation Factory với tư cách là một sinh viên phát triển web.
Tôi không có hiểu biết nhiều về phát triển phần mềm lúc bấy giờ nhưng đã có thể đóng góp kiến thức ngay từ ban đầu thông qua cách đơn giản là nêu câu hỏi đối với các bậc tiền bối.
Ban đầu, tôi cũng khá ngượng ngùng khi hỏi họ nhiều câu hỏi. Đối với tôi, có vẻ như thể tôi đang cướp mất thời giờ quý giá của họ. Giống như Socrates, tôi vẫn hoàn toàn không biết rằng những điều họ giải thích về tôi có đúng hay là không khi tôi còn là một “trang giấy trắng”.
Nhưng mỗi khi tôi hỏi một câu hỏi như vậy, các bậc đàn anh của tôi lại đáp rất nhiệt tình. Họ kinh ngạc về thực tế là họ cũng không biết cách giải thích những điều mà họ cho là hiển nhiên mỗi ngày. Nó đã trở thành một cơ hội nghề nghiệp hoàn hảo đối với tất cả hai chúng tôi.
Lập trình viên à, hãy học Plato
Truy vấn thực dụng – Theo đuổi sự công bằng
Là nhà thiết kế phần mềm, chúng ta là những người thực dụng. Chúng ta hỏng, chúng ta phân phối. Chúng ta làm nên điều kì diệu, nhưng chúng ta cần một tình huống cụ thể để thực hiện điều đó. Mọi việc cần trở nên có ích; nếu không, tất cả sẽ trở nên vô ích.
Làm thế nào để chúng ta biết tại sao truy vấn Socrate là có ích? Đúng, chúng ta muốn có những kết quả tốt hơn bằng cách khám phá những sự thay thế tốt hơn, tuy nhiên chúng ta không muốn kết thúc khi không có vấn đề thực tế, vì chúng ta cũng không muốn bị sa lầy trong sự truy vấn vô tận!
May mắn thay, với tư cách là lập trình viên, chúng ta sẽ có một tình huống thực tế được xử lý theo điều kiện thực tế. Có những ngôn ngữ lập trình, khung và tài nguyên cho các dự án của chúng ta.
Có câu chuyện người dùng hoặc thông báo sự cố, và tất nhiên, có thời gian hoặc tiến độ mà chúng ta đã hứa. Đây là những điều kiện để chúng ta hoàn thành nhiệm vụ của mình. Miễn là chúng ta thoả mãn những điều kiện trên, chúng ta có thể tự do truy vấn!
Hãy hiểu Plato
Tôi nghĩ tôi đã thuyết phục bạn về ý nghĩa của truy vấn Socrate. Nếu bạn muốn biết thêm, tại sao không học tập từ chính bậc thầy? Plato đã có vài chục đoạn hội thoại trong đó Socrates là nhân vật chính.
Ngay cả khi bạn không phải là một chuyên gia triết học, những đoạn hội thoại trên cũng đều đáng được học hỏi! Chúng thường là những câu chuyện mà năm chàng trai trẻ làm việc tại quầy bar nói về ý nghĩa của vẻ đẹp, công bằng, thiện và ác.
Nếu bạn không muốn học hỏi qua sách giáo khoa, bạn có thể học tập thông qua thực tế. Hãy học lập trình theo nhóm! Nếu có một kỹ thuật khác trong lĩnh vực của chúng ta bây giờ để bạn có thể học truy vấn Socrate, thì đó có thể là ngôn ngữ lập trình theo cặp.
Với tư cách là người điều hướng, nên tránh tỏ ra “không biết gì”. Đơn giản chỉ cần đề nghị người tài xế giải thích lí do tại sao họ phải làm điều mà họ đang làm. Bạn sẽ bất ngờ với việc code sẽ trở nên tốt như thế nào đấy