注冊用戶即可下載全站資源 關注Java幫幫微信公眾號
 

如何像程序員一樣思考——解決問題的經驗

10
發表時間:2018-11-19 11:44

如何你對編程感興趣,你可能見過這句話:

“Everyone in this country should learn to program a computer, because it teaches you to think.”?—?Steve Jobs

日本韩国三级aⅴ在线观看你可能還想知道,像程序員一樣思考到底意味著什么?怎樣才能做到?

日本韩国三级aⅴ在线观看從本質上講,它是一種更有效的解決問題的方法。

在這篇文章中,我的目標是用這種方式教你。

日本韩国三级aⅴ在线观看最后,你就會知道怎樣才能更好的解決問題。

為什么這很重要?

我們每天都有遇到很多問題,無論大的小的。我們處理這些問題的方式有時候都是隨機的。

日本韩国三级aⅴ在线观看除非你有個系統,否則用“隨機的方式”可能就是你“解決”問題的方法(下面我開始學習編程寫代碼時候做做的事情):

  • 1、試著解決方案

  • 2、如果不行,再試一次

  • 3、如果沒有效果,重復第二步知道你運氣好

這樣的方法,在你運氣不好的時候,就傻了。總之這種方法時候解決問題的最糟糕的方法!也是非常浪費時間的。

最好的方法是:

a、有一個框架

b、練習它

幾乎所有的雇主都把解決問題的能力放在首位!

解決問題的能力已經是雇主們尋找程序員、測試工程師、系統設計師等最看重的一個方面。

日本韩国三级aⅴ在线观看計算思維或分解大型復雜問題的能力,與工作所需要的基本技術能力一樣有價值?—?by Hacker Rank (2018 Developer Skills Report)

一個框架

日本韩国三级aⅴ在线观看為了找到正確的框架,我遵循了Tim Ferriss 關于學習的書《the 4-Hour Chef》中的建議, 《The 4-Hour Chef》

這讓我采訪了兩個讓我印象深刻的人:

C. Jordan Ball (ranked 1st or 2nd out of 65,000+ users on Coderbyte, and V. Anton Spraul (author of the book “Think Like a Programmer: An Introduction to Creative Problem Solving”.

我問了他們同樣的問題,你猜怎么著?他們的回答竟然非常的相似!

接下來,你很快就能認識他們了~~

日本韩国三级aⅴ在线观看當然,其實這也并不意味著它們每件事情都是以同樣的方式進行,每個人都是不同的,你也會是不同的,但如果你從我們都認同的好的原則開始,你也會走的更遠更快。

我看到新程序員犯的最大錯誤是專注于學習語法,而不是學習如何解決問題。by – V. Anton Spraul (http://vantonspraul.com/)

那么,當你遇到新的問題時,你應該怎么做呢?

步驟如下:

1、理解

日本韩国三级aⅴ在线观看非常確切的知道自己被問的是什么問題。大多數難題之所以難,是因為你不理解它們,所以這個是第一步。

如何知道什么時候你理解了一個問題呢?——當你能用簡單的、自己的語言解釋它的時候。

日本韩国三级aⅴ在线观看你可能會記得,當你被困在一個問題上,一旦開始解釋它,你就立刻看到邏輯上的漏洞,而且漏洞很可能也是你以前沒有看到的。

大多數程序員都知道這種感覺吧!

這就是為什么你應該把你的問題寫下來,畫個圖,或者告訴別人。

日本韩国三级aⅴ在线观看“If you can’t explain something in simple terms, you don’t understand it.”? 如果你不能用簡單的語言來解釋某件事,你就無法理解它 —?Richard Feynman

2、計劃

日本韩国三级aⅴ在线观看不要在沒有計劃的情況下,一頭扎進解決問題的過程中(并且希望你能混過去),計劃你的解決方案吧!

日本韩国三级aⅴ在线观看如果你不能寫下計劃確切的步驟,什么也都不幫不了你。

在編程中,這意味著不要立即開始進行黑客攻擊。給你的大腦一定的時間來分析問題和處理信息。

日本韩国三级aⅴ在线观看為了得到一個好計劃,回答這個問題: 給定輸入 X,返回輸入Y所需要的步驟什么? 程序員的世界里面,有一個偉大的工具 來幫助他們實現這個,那就是注釋!

3、拆分

這是最重要的一步

日本韩国三级aⅴ在线观看不要試圖一次就解決一個大問題,不然你可能會哭的。

日本韩国三级aⅴ在线观看相反,當你把這個問題進行拆分成一個一個子問題,這些子問題就更加容易解決了。

然后,逐個解決每個子問題,從最簡單的開始。最簡單意味著,你知道答案(或者更加接近那個答案)。

另外最簡單的方法意味著子問題的解決并不依賴與其他問題的解決。

一旦你解決了每個子問題,再把這些點連接起來

連接所有“子解決方案” ,將為你提供的原始問題的解決方法!那么恭喜你,你做到了!

日本韩国三级aⅴ在线观看這種技巧呢,是解決所有問題的基石,請記住它(建議你重新再讀一遍這個步驟)

如果我能交給每一個初學者一種解決問題的技能,那就是“減少問題這個技能” ,例如:假設你是一個新程序員,你被要求編寫一個程序,讀取10個數字,然后算出哪個數字是第三高的,對于一個全新的程序員來說,這可能是一項艱巨的任務,盡管它只需要基本的編程語法

如果你陷入困境,你就應該把問題簡化。而不是專注在第三個高的數字上。如何在一個整體中先找到最高的那個數呢?還是太難了?那從三個數字中找到最大的那個呢? 還是太難? 那如果是尋找兩個較大的那個呢?

將問題簡化到你知道如何解決問題,并編寫解決方案的程度。然后稍微展開問題,重新解決方案使其匹配,并繼續進行,知道你回到你最開始的地方。—?V. Anton Spraul

4、卡住了呢?

現在,你可能正坐在那里想,這幾個步驟看起來還不錯嘛,但如果我卡住了,設置不能解決子問題該怎么辦?

日本韩国三级aⅴ在线观看首先,深呼吸。因為這個很正常!

別擔心,朋友,每個人都會這樣子!

日本韩国三级aⅴ在线观看不同之處在于,最好的程序員/問題解決者,對bug/錯誤更加好奇,而不是惱怒!

日本韩国三级aⅴ在线观看事實上,當你遭遇不幸時,有三件事情可以嘗試:

調試:逐步檢查你的解決方案,試圖找出哪里出錯了。即調試程序。

(調試的藝術在于,找出你真正告訴你的程序去做了什么,而不是你以為你告訴它去做什么)

重新評估:后退一步,從另個一角度來看這個問題,有什么可以抽象成更加一般的方法嗎?

(有時候,我們會對問題的細節太過沉迷,以至于忽略了再更一般的層面上解決問題的一般原則!)

經典的例子,求一長串連續整數的總和,1+2+3+4+…+ n , 利用一個簡單的消元方法就可以很快的識別出這么一個公式:n(n+1)/2 ,從而避免了不得不做的加分。

日本韩国三级aⅴ在线观看(另一種重新評估的方式是重新開始。刪除所有的內容,用全新的眼光重新開始。你會驚訝到這是多么有效。)

搜索/研究 :你沒看錯,就是使用Google,不管你有什么問題,可能有人已經解決了。找到那個人/解決方案。事實上,即使你解決了問題,也要這樣做!(你可以從別人的解決方案中學到很多)

(注意:不要尋找解決大問題的方法。只尋找子問題的解決方案,為什么呢? 因為除非你努力,(哪怕是一點點),否則你什么都學不到,如果你什么都沒學到,那你就是在浪費時間)

5、實踐

不要期望僅僅一個星期就能變的很厲害,如果你想成為一個好的問題的解決者,就應該去解決很多問題!

日本韩国三级aⅴ在线观看練習、練習、練習!遲早你會認識到這個問題可以通過很輕松的方式來解決。

那么如何練習呢?其實也有很多選擇的!

比如:國家象棋游戲、數學問題、數獨、視頻游戲、cryptokittiles ,bla bla bla ………

事實上,成功認識的一個普遍模式是他們練習“圍觀解決問題”的習慣。例如: 彼得.泰爾(Peter Thiel )下棋,埃隆.馬斯克 (Elon Musk) 玩電子游戲….

拜倫.里夫斯(Byron Beeves)說,如果你想知道三到五年后商業領導力會是什么樣子,那么久看看網絡游戲正在發生什么吧

日本韩国三级aⅴ在线观看快進到今天 , 埃隆馬斯克、雷德.霍夫曼、馬克.扎克伯格和其他許多人都表示,游戲是他們稱建立公司的基石。——Mary Meeker (2017年互聯網趨勢報告)

日本韩国三级aⅴ在线观看這意味著你應該只玩電子游戲? 也不全是。

日本韩国三级aⅴ在线观看但是這個到底跟電子游戲有什么關系呢? 沒錯,就是問題解決!

所以,你應該做的是,找到一個練習的出口,可以讓你解決很多小問題的東西。(理想情況下,還是你喜歡的東西,那就更好了)

例如,我喜歡編程挑戰,每天,我都試圖解決至少一個挑戰(通常在Coderbyte)http://coderbyte.com/

正如我所說,所有的問題都有相似的模式!

6、結論

現在,你知道“像程序員一樣思考” 是什么意思了。

你也知道解決問題是一種難以置信的元技能。

日本韩国三级aⅴ在线观看如果這還不夠,你肯定也知道了如何練習解決問題的技巧。

你看,這是不是看起很酷!

日本韩国三级aⅴ在线观看最后,祝你遇到很多問題哈哈。

日本韩国三级aⅴ在线观看你沒看錯,至少現在你知道怎么解決了,同時,你將了解到,每一種解決方案都會使你得到改進!

“Just when you think you’ve successfully navigated one obstacle, another emerges. But that’s what keeps life interesting. 就在你認為已經成功跨域了一個障礙時候,另一個障礙有出現了,但這正是讓生活變得有趣的地方。

Life is a process of breaking through these

日本韩国三级aⅴ在线观看impediments?—?a series of fortified lines that we must break through. 生活是一個突破這些障礙的過程——一系列我們必須突破的防線。

Each time, you’ll learn something. 每次,你都會學會到一些東西。

日本韩国三级aⅴ在线观看Each time, you’ll develop strength, wisdom, and perspective. 每一次,你都將發展你的張力、智慧、和洞察力

日本韩国三级aⅴ在线观看Each time, a little more of the competition falls away. Until all that is left is you: the best version of you.”?—?Ryan Holiday 每次,更多的競爭就會消失。直到你成為最好的自己。——瑞安.霍利迪(障礙就是路)

日本韩国三级aⅴ在线观看現在,去解決一些問題吧!


支付寶贊助-Java幫幫社區
微信贊助-Java幫幫社區
Java幫幫公眾號生態

Java幫幫公眾號生態

總有一款適合你

Java幫幫-微信公眾號

Java幫幫-微信公眾號

將分享做到極致

Python幫幫-公眾號

Python幫幫-公眾號

人工智能,爬蟲,學習教程

大數據驛站-微信公眾號

大數據驛站-微信公眾號

一起在數據中成長

九點編程-公眾號

九點編程-公眾號

深夜九點學編程

程序員生活志-公眾號

程序員生活志-公眾號

互聯網,職場,程序員那些事兒

Java幫幫學習群生態

Java幫幫學習群生態

總有一款能幫到你

Java學習群

Java學習群

與大牛一起交流

大數據學習群

大數據學習群

在數據中成長

九點編程學習群

九點編程學習群

深夜九點學編程

python學習群

python學習群

人工智能,爬蟲

測試學習群

測試學習群

感受測試的魅力

Java幫幫生態承諾

Java幫幫生態承諾

一直堅守,不負重望

初心
勤儉
誠信
正義
分享
合作品牌 非盈利生態-優質內容分享傳播者
關于我們
友鏈申請
友鏈交換:加幫主QQ2524138991 留言即可 24小時內答復  
全站內容非商業用途,內容來源于網友,并遵循 許可,如有異議請聯系客服。
會員登錄
獲取驗證碼
登錄
登錄
我的資料
留言
回到頂部