蘇格拉底和小孩子的共同點

蘇格拉底和小孩子的共同點
Photo Credit: Bradley Weber cc by 2.0

我們想讓你知道的是

「認知到自己其實並不了解」,這就是理智上的誠實;「想知道自己不了解的事」,這就是求知若渴的表現,這二者都是思考訓練的重要推力。

文:伊藤真

「為什麼?」要懂得連問三次

不論再怎麼努力思考,總是無法想得比較深入,或永遠都只有膚淺的想法時,我有一個好方法要推薦給大家。那就是連問三次:「為什麼?」有些顧問諮詢公司甚至會教人家要連問五次:「為什麼?」不斷地深入追問。

「為什麼會發生這種事?」──「為什麼?」、「為什麼?」、「為什麼?」

試著連問自己三次「為什麼?」這麼一來即使自己沒有思考的打算,也自然會想得比較深入。

舉例來說,殺人是要受懲罰的。那麼為什麼殺人要受到懲罰呢?

答案當然有很多種。假設你的答案是:「因為法律這樣規定。」那麼就再試著追問:「為什麼法律會這樣規定呢?」接著假設你的回答是:「因為殺人是壞事。」……那麼為什麼是壞事呢?就再深入探索,再問一次:「為什麼?」

雖說是「壞事」,應該也有各式各樣的說明方式。如果有人回答:「因為這個行為會奪走寶貴的人命,所以是壞事。」那麼就再試著追問一次:「為什麼呢?」

奪走別人視若珍寶的事物,可能真的是一件壞事。那麼我們先做個假設,假設有人開槍射殺另外一個人,害得他人喪命,因為奪走了一條人命,所以可以說是壞事。可是萬一開了槍,子彈沒打中任何人,又該怎麼說呢?

這叫做殺人未遂,仍然有罪必須被處罰。而依照日本刑法規定,殺人未遂和殺人同罪。法律上用的說法是殺人已遂和殺人未遂,犯下殺人已遂罪行者必須接受的懲罰,和犯下殺人未遂罪的人所受的懲罰,量刑一樣重也無妨。

就算如此還是可以追問:「為什麼?」因為子彈射偏而殺人未遂,所以並未奪走人命。如果說因奪走他人很珍貴的事物,是件壞事而必須接受懲罰,那麼殺人未遂並未奪走寶貴的人命,不就算不上是壞事?依照這樣的邏輯推論,大家應該可以注意到這種結論是有點奇怪的。

我們重回到一開始,想想什麼是「壞事」。子彈雖然射偏了,可是萬一不幸還是可能打中別人,所以危險性依然存在。開槍的瞬間就有人可能因此死亡,所以開槍是一個危險的動作,有極大的可能奪走人命,所以可說是一件壞事。

那麼接著想想,雖然開了槍,可是子彈並未擊發。這種情形又如何說呢?

是因為沒有好好保養手槍,以至於子彈卡住無法擊發嗎?還是開槍前忘了裝填子彈?或者是本來開槍的人拿的就是假槍,根本無法開槍?又或者是開槍的人拿的原本就是玩具槍,只要扣下板機,就會跳出一面小旗子?到底什麼程度叫做壞,什麼程度叫做不算壞?該如何判斷「壞與不壞」?

再進一步假設,如果手槍中沒有裝填子彈,就自然科學的原理來說,根本不可能用來殺人,所以沒有危險性。那麼這種情形是否根本稱不上是壞事呢?

如果有人說,雖然用上了膛的手槍開槍,可是因為手槍本身是瑕疵品,所以子彈無法筆直地飛出去;或者是因為剛好一陣風吹來,導致彈道偏離,所以就算拿著手槍的人扣下板機開槍,也根本殺不了人,因此這個人沒有犯錯,不用處罰他。這種說法聽起來還是有點奇怪。

子彈射偏和忘了裝填子彈,這二種情形到底哪裡相同、哪裡不同?我們來深入探究二者之間的共同點和不同點。

連問三次「為什麼?」、「為什麼?」、「為什麼?」提升問題的精確性,就可以更接近問題的本質,讓自己想得更深入。

其實當你有煩惱時,這同樣是我推薦的解決之道。

舉例來說,假設現在有人對人生感到不安。「為什麼」感到不安呢?有可能是因為司法考試名落孫山。「為什麼」落榜就會感到不安呢?因為沒有本錢重考一次,因為不想看到雙親傷心的臉。「為什麼」不能重考一次呢?「為什麼」不想看到雙親傷心的神情呢?……這麼一直想下去,出乎意外地不安的地方就愈來愈少了。

正因為如此,我建議大家平常就要養成追問「為什麼」的習慣。

在我的腦海中,「因為……」已經成為我的口頭禪。自己說了什麼之後,我一定會試著在腦中對自己說:「因為……」。

希望大家都能夠養成在發言的最後,一定會加上「因為……」的習慣。就像是我們習慣早上醒來就要刷牙一樣,這麼一來,在不知不覺中你已經在實踐思考訓練了。

哲學家蘇格拉底和小孩子的共同點

老實說,最會問「為什麼」的,就是小孩子。

孩子就是由「為什麼?」組成的個體。「為什麼天空是藍色的?」「為什麼河裡面有水在流動?」「為什麼太陽會由那邊升起,由這邊落下?」「為什麼有時候會是陰天,有時候卻是晴天呢?」……。

回顧自己一路走來的經驗,小時候的我真的出口就是「為什麼」。「為什麼要睡這麼多午覺?」、「為什麼要這麼多管閒事?」、「為什麼會那麼胖?」等。每天都生活在沒有盡頭的「為什麼」當中,可能也是因為這樣,所以我養成了問「為什麼?」的習慣吧。

雖說孩子就是「為什麼」的集合體,可是對於這樣的孩子,大人有時候也會覺得很煩。於是隨便敷衍了事,或是直接嫌他們煩人,甚至有時候還會對著孩子們發火,慢慢地他們就會覺得自己不用想答案也沒關係了。好不容易「思考」的種子才剛冒出嫩芽,結果卻沒機會成長茁壯,實在很可惜。

為了進行思考訓練,大人也必須重視小朋友所有天真的疑問、單純的「為什麼」。

尊重孩子們的「為什麼」,小孩子就不會把單純的疑問壓抑在自己心中,也不需要假裝自己已經懂了,長大後自然會成為一位會持續追問:「為什麼?」的大人。換言之,他們得以成長為一位求知若渴、誠實面對自己求知慾的大人。


猜你喜歡


挖掘雲端開放架構優勢!Amazon EKS高可用性叢集快速部署容器

挖掘雲端開放架構優勢!Amazon EKS高可用性叢集快速部署容器

我們想讓你知道的是

企業如何在 Amazon EKS(Elastic Kubernetes Services)上使用 GitLab 創建自動化部署,減輕人力負擔,提升專案服務運作效率?

所謂現代化智慧 IT,所有工程師最希望的境界,莫過於只要輕鬆點幾下設定,系統就會自動跑起來,管理者再也不用隨時待命在機台旁邊,從此工作悠哉又快樂!儘管這樣情境還沒到來,但隨著敏捷式開發的流行,除了 DevOps 人員,有越來越多開發者將 CI/CD 概念融入到工作流程當中,例如從 build code、執行 unit test、到部署應用程式。

透過 AWS 增加雲端技能 在組織發揮影響力

上述種種反覆步驟自動化執行,也就能提昇服務品質、主動通知開發人員以減輕人力負擔,讓專案服務能持續運作。

其中,GitLab 是執行 CI/CD 常用的工具之一,也是開發者使用程式碼儲存庫的地方。為了讓 GitLab Runner 在雲端快速實踐 CI/CD,《AWS 開發者系列》透過影片分享,如何在 Amazon EKS(Elastic Kubernetes Services)上使用 GitLab 創建自動化部署。

以下節錄工作坊影音內容,幫助開發者快速理解如何運用 Amazon EKS 的高可用性且安全的叢集,將修補、部署節點、更新等關鍵任務,全部做到自動化設定。同時影片也會示範 Amazon EKS 搭配 GitLab 如何展開自動部署,幫助工程團隊實踐 CI/CD 價值。

Amazon EKS 對容器管理輕鬆簡單、維運省時省力

容器化服務越來越興盛,當容器(Container)越來越多,在複雜的微服務(Microservice)系統環境之下,運維團隊的管理成本可能相對會增加不少,為了有效調度容器部署, 導入Kubernetes 無疑是近年企業熱門的話題之一。

建構 Kubernetes Cluster 流主要可區分兩大塊,一是安排容器調度的Control Plane、另一則是容器運行時需要用到的 Worker Node。

Control Plane 裡面涵蓋有儲存狀態的 ETCD、CoController manager 、Scheduler 的調度管理、甚至是操作時進行互動的 APIServer,若是自己創建 的 Kubernetes Cluster ,需要自己安裝這些元件,後續仍需要對 Control Plane 進行相關管理、維護、升級工作。為了減少上述 Components 的繁複維護,在透過 AWS EKS 代管的 Kubernete Control Plane 部可以獲得以下三大好處。

Amazon EKS 一鍵式部署,展現三大優勢

第一,Amazon EKS代管的 Control Plane實踐了跨AZ的高可用部署,使用者不需要擔心單一節點故障的風險。

第二,Amazon EKS 支持至少四個 Kubernetes版本,持續跟進每季 CNCF 的發佈,同時 EKS 也完全符合上游 CNCF 規範。

第三,部署 Amazon EKS 之後,可直接使用 AWS 平台上現成的服務工具,在安全性管理、網路設定方面,可以做到無縫整合。

最後 AWS 台灣解決方案架構師也提到,若想在容器環境進行 CI/CD 及應用程式的管理,可以進一步透過 IaC 整合部署 Amazon EKS 叢集,透過使用 Console、把 EKS 變成 Cloudformation 的模板、使用 AWS 所開發出來的 eksctl.io、或指令是採用 AWS CDK 可以讓開發者用自身熟悉的語言,在 AWS 平台整合 CI/CD 工具進行維運及部署 EKS。

打造第一個在 AWS 上的應用程式

了解 Amazon EKS 整合 GitLab ,獲得三面向價值

對開發者而言,想把 Amazon EKS 整合到 CI/CD 工具之一的 GitLab 平台上,可以看到那些實際的優勢?

在 DevOps 開發者示範工作坊當中,GitLab 資深解決方案架構師指出,GitLab 使用到 Kubernetes 技術,主要有三種搭配方法,包含 GitLab Server、GitLab Runner、以及創建 Deployment Environment。

本次示範教學會主要聚焦在 GitLab Runner 如何採取 Auto-scaled 方式進行 Build、Test、Package Apps;以及在 Deployment Environment 運用 Kubernetes 技術,做到 Auto Deploy、Review App。

正因為 Amazon EKS 能夠在 DevOps 過程提供所需要的彈性計算資源,幫助開發者在 GitLab 平台上面獲得以下三個層次的優勢:

  • 在 GitLab 內建的部署工作流程當中,自動生成整套 CI/CD 最佳實踐腳本。
  • Review App 過程,從 Merge Request 中可直接訪問應用程式 /App 的 UI 介面,並且根據 Git branch 名稱、專案名稱,自動生成 Review App 的 URL,以及在 Merge 前的最後防線進行 Approval 檢查。
  • 加速 CI/CD 流水線,GitLab Runner 運行時候還可藉由 Amazon EKS Cluster 進行 Auto-scaled 的支援。

Amazon EKS 整合 GitLab ,需要兩大流程

影片最後,GitLab 資深解決方案架構師示範如何把 Amazon EKS 整合至 GitLab 執行 Auto Deploy,主要可分為兩大區塊流程,第一部分聚焦在 Amazon EKS cluster 的設置,第二部分則執行 Auto Deploy 設置。

第一塊可拆分為四個階段,首先教學怎麼創建 EC2 節點的 EKS cluster,第二階段示範把 EKS Cluster 連接到開發者的 GitLab Instance、Group 或 Project,下一步則使用 Cluster Management Project Template 創建一個 Cluster Management Project,以及最後一階段透過 Cluster Management Project 自帶的 Helm Chart,安裝在 Cluster 所需要的內建 App。

第二塊執行 Auto Deploy 設置,針對需要部署的 App 創建一個 GitLab Project,接著再把 gitlab-ci.yml 添加到 Project,並從 Web IDE 選擇及導入 Auto Deploy 的 CI 模版,讓 GitLab 自動生成最佳實踐的整套流水線。

幫助開發者更了解 Amazon EKS 整合 GitLab 的 QA 系列

Q:使用 Amazon EKS 之後,如何更有效率或優化資源去配置 Worker Node 的機器數量,以及如何有效空管開發維運的成本?

A:Kubernetes 除了本身有 HPA(Horizontal Pod Autoscaling)可根據使用程度自動調整資源流量,另外也能延伸使用 AWS Auto Scaling 方案,針對可擴展資源去設定自動擴展管理。另外在成本管控,雖然 Amazon EKS 會收取額外管理費用,但可透過 AWS 平台的 Calculato r計算每個 EKS 的價格,你會發現自動化部署及管理的費用,相對工程師人力的成本更加便宜。

Q:越來越多客戶考慮把現有 Application 變成容器部署,大多是爲了加快部署的效率,那麼變成容器模式之後,對 CI/CD 的工作流程有什麽影響嗎?

A:運用容器技術最直接的效果,可以讓應用程式的環境更一致化,例如 testing 環節、stage production,讓容器避開一些差異問題。至於 CD 部分要 delivery 一些 usage 不太一樣的時候,容器會幫忙做配置,所以 CI/CD 對容器的效益是相輔相成的。

Q: 客戶在開發流程漸漸會把 Infrastructure 變成代碼或文檔,是不是可以把程式碼跟現有的應用程式的 CI/CD 流水線整合在一起,達到一套完整的 CI/CD 部署流程?

A:觀察目前市場作法,主要分成兩個階段去做整體部署。如果規模比較小的團隊,會把 Infrastructure 代碼跟 App 代碼分開,在管理上會比較靈活;如果企業規模比較大,會有另外一個 Infrastructure 團隊來控制部署事情,這種情况之下,APP 的項目會生成一個 APP package,主要做到 delivery 這個階段爲止。而 Infrastructure 的項目會指定把需要版本的文檔,部署到他們的 Kubernetes Cluster。

填寫表單 找到適合的快速上雲服務與工具!


猜你喜歡