“Everyone in this country should learn to program a computer,because it teaches you to think.”—Steve Jobs
像程序員一樣思考到底意味著什么?怎樣才能做到?
從本質上講,它是一種更有效的解決問題的方法。在這篇文章中,我的目標是用這種方式教你。最后,你就會知道怎樣才能更好的解決問題。
我們每天都有遇到很多問題,無論大的小的。我們處理這些問題的方式有時候都是隨機的,比如:
1、試著解決方案
2、如果不行,再試一次
3、如果沒有效果,重復第二步直到運氣好的時候
這樣的方法,在你運氣不好的時候,就傻了??傊@種方法時候解決問題的最糟糕的方法!也是非常浪費時間的。
“計算思維或分解大型復雜問題的能力,與工作所需要的基本技術能力一樣有價值”—by Hacker Rank(2018 Developer Skills Report)
那么,當你遇到新的問題時,你應該怎么做呢?

步驟如下:
1、理解
非常確切的知道自己被問的是什么問題。大多數難題之所以難,是因為你不理解它們,所以這個是第一步。
如何知道什么時候你理解了一個問題呢?——當你能用簡單的、用自己的語言解釋它的時候。
你可能會記得,當你被困在一個問題上,一旦開始解釋它,你就立刻看到邏輯上的漏洞,而且漏洞很可能也是你以前沒有看到的。
“If you can’t explain something in simple terms,you don’t understand it.”如果你不能用簡單的語言來解釋某件事,你就無法理解它—Richard Feynman
這就是為什么你應該把你的問題寫下來,畫個圖,或者告訴別人。
2、計劃
不要在沒有計劃的情況下,一頭扎進解決問題的過程中(并且希望你能混過去),計劃你的解決方案吧!
如果你不能寫下計劃確切的步驟,什么也都不幫不了你。
為了得到一個好計劃,回答這個問題:給定輸入X,返回輸入Y所需要的步驟什么?程序員的世界里面,有一個偉大的工具來幫助他們實現這個,那就是注釋!
3、拆分
這是較重要的一步
不要試圖一次就解決一個大問題,不然你可能會哭的。相反,當你把這個問題進行拆分成一個一個子問題,這些子問題就更加容易解決了。然后,逐個解決每個子問題,從最簡單的開始。最簡單意味著,你知道答案(或者更加接近那個答案)。另外最簡單的方法意味著子問題的解決并不依賴與其他問題的解決。一旦你解決了每個子問題,再把這些點連接起來,連接所有“子解決方案”,將為你提供的原始問題的解決方法!那么恭喜你,你做到了!
這種技巧呢,是解決所有問題的基石,請記住它(建議你重新再讀一遍這個步驟)
如果我能交給每一個初學者一種解決問題的技能,那就是“減少問題這個技能”,例如:假設你是一個新程序員,你被要求編寫一個程序,讀取10個數字,然后算出哪個數字是第三高的,對于一個全新的程序員來說,這可能是一項艱巨的任務,盡管它只需要基本的編程語法。如果你陷入困境,你就應該把問題簡化。而不是專注在第三個高的數字上。如何在一個整體中先找到較高的那個數呢?還是太難了?那從三個數字中找到較大的那個呢?還是太難?那如果是尋找兩個較大的那個呢?
“將問題簡化到你知道如何解決問題,并編寫解決方案的程度。然后稍微展開問題,重新解決方案使其匹配,并繼續進行,知道你回到你最開始的地方?!薄猇.Anton Spraul
4、卡住了呢?
現在,你可能正坐在那里想,這幾個步驟看起來還不錯嘛,但如果我卡住了,遇到了不能解決子問題該怎么辦?
首先,深呼吸。因為這個很正常!別擔心,朋友,每個人都會這樣子!不同之處在于,較好的程序員(問題解決者),對bug(錯誤)更加好奇,而不是惱怒!
事實上,當你遭遇不幸時,有三件事情可以嘗試:
調試:逐步檢查你的解決方案,試圖找出哪里出錯了。即調試程序。
(調試的藝術在于,找出你真正告訴你的程序去做了什么,而不是你以為你告訴它去做什么)
重新評估:后退一步,從另個一角度來看這個問題,有什么可以抽象成更加一般的方法嗎?
(有時候,我們會對問題的細節太過沉迷,以至于忽略了再更一般的層面上解決問題的一般原則!)
經典的例子,求一長串連續整數的總和,1+2+3+4+…+n,利用一個簡單的消元方法就可以很快的識別出這么一個公式:n(n+1)/2,從而避免了不得不做的加分。
(另一種重新評估的方式是重新開始。刪除所有的內容,用全新的眼光重新開始。你會驚訝到這是多么有效。)
上網搜:你沒看錯,不管你有什么問題,可能有人已經解決了。找到那個人/解決方案。事實上,即使你解決了問題,也要這樣做?。憧梢詮膭e人的解決方案中學到很多)
(注意:不要尋找解決大問題的方法。只尋找子問題的解決方案,為什么呢?因為除非你努力,(哪怕是一點點),否則你什么都學不到,如果你什么都沒學到,那你就是在浪費時間)
5、實踐
不要期望僅僅一個星期就能變的很厲害,如果你想成為一個好的問題的解決者,就應該去解決很多問題!練習、練習、練習!遲早你會認識到這個問題可以通過很輕松的方式來解決。
那么如何練習呢?其實也有很多選擇的!
比如:象棋游戲、數學問題、數獨、視頻游戲、cryptokittiles,bla bla bla………
所以,你應該做的是,找到一個練習的出口,可以讓你解決很多小問題的東西。(理想情況下,還是你喜歡的東西,那就更好了)例如,我喜歡編程挑戰,每天,我都試圖解決至少一個挑戰。
正如我所說,所有的問題都有相似的模式!
6、結論
現在,你知道“像程序員一樣思考”是什么意思了。
你也知道解決問題是一種難以置信的元技能。如果這還不夠,你肯定也知道了如何練習解決問題的技巧。你看,這是不是看起很酷!
最后,祝你遇到很多問題哈哈。你沒看錯,至少現在你知道怎么解決了,同時,你將了解到,每一種解決方案都會使你得到改進!
現在,去解決一些問題吧!
怪星球學科少兒編程
90%的投資者通過在線咨詢的方式獲取品牌招商加盟信息
95%的企業會在24小時內與投資者取得聯系,并通過郵箱寄送品牌加盟資料
多咨詢,多考察,仔細對比項目,將極大減小您的投資風險,快速創業致富的較好途徑!
友情提示:本頁面內容僅供參考,為降低投資風險,建議您在投資前多做考察咨詢、多對比分析。部分品牌暫未開放加盟,請以該品牌官方信息為準。
內容聲明:以上所展示的信息均由第三方用戶免費注冊發布,內容的真實性、準確性和合法性均由發布用戶負責,一路商機網對此不承擔任何相關連帶責任。以上所展示的信息可能存在未獲得品牌所有人授權,一路商機網可能與該品牌無合作關系,如有疑問請與該品牌企業核實。
投訴刪除:本平臺所有品牌信息均為用戶免費注冊發布,如您發現頁面有任何違法或侵權信息,歡迎向一路商機網舉報并提供有效線索,我們將認真核查、及時處理。